pygeodesy 24.4.4__py2.py3-none-any.whl → 24.4.18__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pygeodesy/rhumb/bases.py CHANGED
@@ -39,7 +39,6 @@ from pygeodesy.karney import _atan2d, Caps, _CapsBase, _diff182, _fix90, \
39
39
  _norm180, GDict
40
40
  # from pygeodesy.ktm import KTransverseMercator, _AlpCoeffs # _MODS
41
41
  from pygeodesy.lazily import _ALL_DOCS, _ALL_MODS as _MODS
42
- # from pygeodesy.named import notOverloaded # _MODS
43
42
  from pygeodesy.namedTuples import Distance2Tuple, LatLon2Tuple
44
43
  from pygeodesy.props import deprecated_method, Property, Property_RO, \
45
44
  property_RO, _update_all
@@ -52,7 +51,7 @@ from pygeodesy.vector3d import _intersect3d3, Vector3d # in .Intersection below
52
51
  from math import cos, fabs
53
52
 
54
53
  __all__ = ()
55
- __version__ = '24.03.16'
54
+ __version__ = '24.04.07'
56
55
 
57
56
  _anti_ = _Dash('anti')
58
57
  _rls = [] # instances of C{RbumbLine...} to be updated
@@ -367,7 +366,7 @@ class RhumbBase(_CapsBase):
367
366
 
368
367
  def _Inverse4(self, lon12, r, outmask): # PYCHOK no cover
369
368
  '''(INTERNAL) I{Must be overloaded}.'''
370
- _MODS.named.notOverloaded(self, lon12, r, Caps.toStr(outmask))
369
+ self._notOverloaded(lon12, r, Caps.toStr(outmask)) # underOK=True
371
370
 
372
371
  def Inverse8(self, lat1, lon1, azi12, s12, outmask=Caps.AZIMUTH_DISTANCE_AREA):
373
372
  '''Like method L{Rhumb.Inverse} but returning a L{Rhumb8Tuple} with area C{S12}.
@@ -417,11 +416,11 @@ class RhumbBase(_CapsBase):
417
416
  @property_RO
418
417
  def _RhumbLine(self): # PYCHOK no cover
419
418
  '''(INTERNAL) I{Must be overloaded}.'''
420
- _MODS.named.notOverloaded(self, underOK=True)
419
+ self._notOverloaded(underOK=True)
421
420
 
422
421
  def _S12d(self, s1, s2, lon): # PYCHOK no cover
423
422
  '''(INTERNAL) I{Must be overloaded}.'''
424
- _MODS.named.notOverloaded(self, s1, s2, lon)
423
+ self._notOverloaded(s1, s2, lon) # underOK=True
425
424
 
426
425
  @Property
427
426
  def TMorder(self):
@@ -787,11 +786,11 @@ class RhumbLineBase(_CapsBase):
787
786
  @property_RO
788
787
  def _mu1(self): # PYCHOK no cover
789
788
  '''(INTERNAL) I{Must be overloaded}.'''
790
- _MODS.named.notOverloaded(self, underOK=True)
789
+ self._notOverloaded(underOK=True)
791
790
 
792
791
  def _mu2lat(self, mu2): # PYCHOK no cover
793
792
  '''(INTERNAL) I{Must be overloaded}.'''
794
- _MODS.named.notOverloaded(self, mu2, underOK=True)
793
+ self._notOverloaded(mu2) # underOK=True
795
794
 
796
795
  @deprecated_method
797
796
  def nearestOn4(self, lat0, lon0, **exact_eps_est_tol): # PYCHOK no cover
@@ -808,27 +807,27 @@ class RhumbLineBase(_CapsBase):
808
807
  return self.PlumbTo(lat0, lon0, **exact_eps_est_tol)
809
808
 
810
809
  def PlumbTo(self, lat0, lon0, exact=None, eps=EPS, est=None, tol=_TOL):
811
- '''Compute the I{perpendicular} intersection of this rumb line with a geodesic
812
- from the given point, in part transcoded from I{Karney}'s C++ U{rhumb-intercept
813
- <https://SourceForge.net/p/geographiclib/discussion/1026620/thread/2ddc295e/>}.
814
-
815
- @arg lat0: Latitude of the point (C{degrees}).
816
- @arg lon0: Longitude of the point (C{degrees}).
817
- @kwarg exact: If C{None}, use a rhumb line perpendicular to this rhumb
818
- line, otherwise use an I{exact} C{Geodesic...} from the
819
- given point perpendicular to this rhumb line (C{bool} or
820
- C{Geodesic...}), see method L{Ellipsoid.geodesic_}.
810
+ '''Compute the I{perpendicular} intersection of this rhumb line with a geodesic
811
+ from the given point (transcoded from I{Karney}'s C++ U{rhumb-intercept
812
+ <https://SourceForge.net/p/geographiclib/discussion/1026620/thread/2ddc295e/>}).
813
+
814
+ @arg lat0: Latitude of the point on the geodesic (C{degrees}).
815
+ @arg lon0: Longitude of the point on the geodesic (C{degrees}).
816
+ @kwarg exact: If C{None}, use a rhumb line perpendicular to this rhumb line,
817
+ otherwise use an I{exact} C{Geodesic...} from the given point
818
+ perpendicular to this rhumb line (C{bool} or C{Geodesic...}),
819
+ see method L{Ellipsoid.geodesic_}.
821
820
  @kwarg eps: Optional tolerance for L{pygeodesy.intersection3d3} (C{EPS}),
822
821
  used only if C{B{exact} is None}.
823
- @kwarg est: Optional, initial estimate for the distance C{s12} of the
824
- intersection I{along} this rhumb line (C{meter}), used only
825
- if C{B{exact} is not None}.
822
+ @kwarg est: Optionally, an initial estimate for the distance C{s12} of the
823
+ intersection I{along} this rhumb line (C{meter}), used only if
824
+ C{B{exact} is not None}.
826
825
  @kwarg tol: Longitudinal convergence tolerance (C{degrees}) or distance
827
826
  tolerance (C(meter)) when C{B{exact} is None}, respectively
828
827
  C{not None}.
829
828
 
830
829
  @return: The intersection point on this rhumb line, a L{GDict} from method
831
- L{Intersection} if B{C{exact}=None}. If B{C{exact}} is not C{None},
830
+ L{Intersection} if B{C{exact}=None}. If C{B{exact} is not None},
832
831
  a L{Position}-like L{GDict} of 13 items C{azi12, a12, s12, lat2,
833
832
  lat1, lat0, lon2, lon1, lon0, azi0, a02, s02, at} with distance
834
833
  C{a02} in C{degrees} and C{s02} in C{meter} between the given point
@@ -876,7 +875,7 @@ class RhumbLineBase(_CapsBase):
876
875
  _d2 = _diff182
877
876
  _ErT = E.rocPrimeVertical # aka rocTransverse
878
877
  _ovr = _over
879
- _S12 = Fsum(s12).fsum2_
878
+ _S12 = Fsum(s12).fsum2f_
880
879
  _scd = sincos2d_
881
880
  for i in range(1, _TRIPS): # 9+, suffix 1 == C++ 2, 2 == C++ 3
882
881
  P = self.Position(s12) # outmask=Cs.LATITUDE_LONGITUDE
@@ -886,7 +885,7 @@ class RhumbLineBase(_CapsBase):
886
885
  c2 *= _ErT(r.lat2)
887
886
  s *= _ovr(s2 * self._salp, c2) - _ovr(s * r.M21, r.m12)
888
887
  s12, t = _S12(c / s) # XXX _ovr?
889
- if _abs(t) < tol: # or fabs(c) < EPS
888
+ if _abs(t) < tol: # or _abs(c) < EPS
890
889
  break
891
890
  P.set_(azi0=r.azi1, a02=r.a12, s02=r.s12, # azi2=r.azi2,
892
891
  lat0=lat0, lon0=lon0, iteration=i, at=r.azi2 - self.azi12,
@@ -967,7 +966,7 @@ class RhumbLineBase(_CapsBase):
967
966
 
968
967
  def _Position4(self, a12, mu2, s12, mu12): # PYCHOK no cover
969
968
  '''(INTERNAL) I{Must be overloaded}.'''
970
- _MODS.named.notOverloaded(self, a12, s12, mu2, mu12)
969
+ self._notOverloaded(a12, s12, mu2, mu12) # underOK=True
971
970
 
972
971
  @Property_RO
973
972
  def rhumb(self):
@@ -1085,7 +1084,7 @@ if __name__ == '__main__':
1085
1084
  r = rh.Inverse8(40.6, -73.8, 35.8, 140.3) # JFK to Tokyo Narita
1086
1085
  _ref('# JFK-NRT azi12=%.12f, s12=%.3f S12=%.1f', (r.azi12, r.s12, r.S12), NRT)
1087
1086
 
1088
- # % python3 -m pygeodesy.rhumb.bases
1087
+ # % python3.10 -m pygeodesy3.rhumb.Bases
1089
1088
 
1090
1089
  # Position.lon2 11.61455846901637 vs 11.61455846901637, diff 3.05885e-16
1091
1090
  # Position.lon2 7.58982302826842 vs 7.58982302826842, diff 2.34045e-16
@@ -43,12 +43,12 @@ from pygeodesy.fmath import fmean, fsum
43
43
  from pygeodesy.interns import _composite_, _end_, _Nv00_, _other_, \
44
44
  _point_, _pole_
45
45
  from pygeodesy.lazily import _ALL_LAZY, _ALL_MODS as _MODS, _ALL_OTHER
46
- # from pygeodesy.named import notImplemented # from .nvectorBase
46
+ # from pygeodesy.named import notImplemented # from .points
47
47
  # from pygeodesy.namedTuples import NearestOn3Tuple # from .points
48
- from pygeodesy.nvectorBase import LatLonNvectorBase, NorthPole, \
49
- notImplemented, NvectorBase, _nsumOf, \
50
- _triangulate, _trilaterate
51
- from pygeodesy.points import NearestOn3Tuple, ispolar # PYCHOK exported
48
+ from pygeodesy.nvectorBase import LatLonNvectorBase, NorthPole, _nsumOf, \
49
+ NvectorBase, _triangulate, _trilaterate
50
+ from pygeodesy.points import NearestOn3Tuple, notImplemented, \
51
+ ispolar # PYCHOK exported
52
52
  from pygeodesy.props import deprecated_function, deprecated_method, \
53
53
  property_RO
54
54
  from pygeodesy.sphericalBase import _m2radians, CartesianSphericalBase, \
@@ -61,7 +61,7 @@ from pygeodesy.utily import atan2, degrees360, fabs, sincos2, sincos2_, \
61
61
  # from math import atan2, fabs # from utily
62
62
 
63
63
  __all__ = _ALL_LAZY.sphericalNvector
64
- __version__ = '23.12.18'
64
+ __version__ = '24.04.07'
65
65
 
66
66
  _lines_ = 'lines'
67
67
 
@@ -34,12 +34,11 @@ from pygeodesy.interns import _1_, _2_, _coincident_, _composite_, _colinear_, \
34
34
  _line_, _near_, _not_, _null_, _parallel_, _point_, \
35
35
  _SPACE_, _too_
36
36
  from pygeodesy.lazily import _ALL_LAZY, _ALL_MODS as _MODS, _ALL_OTHER
37
- # from pygeodesy.named import notImplemented # from .points
38
37
  # from pygeodesy.nvectorBase import NvectorBase, sumOf # _MODE
39
38
  from pygeodesy.namedTuples import LatLon2Tuple, LatLon3Tuple, NearestOn3Tuple, \
40
39
  Triangle7Tuple, Triangle8Tuple
41
40
  from pygeodesy.points import ispolar, nearestOn5 as _nearestOn5, \
42
- Fmt as _Fmt, notImplemented # XXX shadowed
41
+ Fmt as _Fmt # XXX shadowed
43
42
  from pygeodesy.props import deprecated_function, deprecated_method
44
43
  from pygeodesy.sphericalBase import _m2radians, CartesianSphericalBase, \
45
44
  _intersecant2, LatLonSphericalBase, \
@@ -55,7 +54,7 @@ from pygeodesy.vector3d import sumOf, Vector3d
55
54
  from math import asin, atan2, cos, degrees, fabs, radians, sin
56
55
 
57
56
  __all__ = _ALL_LAZY.sphericalTrigonometry
58
- __version__ = '24.02.18'
57
+ __version__ = '24.04.07'
59
58
 
60
59
  _PI_EPS4 = PI - EPS4
61
60
  if _PI_EPS4 >= PI:
@@ -567,7 +566,7 @@ class LatLon(LatLonSphericalBase):
567
566
  # remove kwarg B{C{within}} if present
568
567
  w, kwds = _xkwds_pop2(wrap_adjust_limit, within=True)
569
568
  if not w:
570
- notImplemented(self, within=w)
569
+ self._notImplemented(within=w)
571
570
 
572
571
  # # UNTESTED - handle C{B{within}=False} and C{B{within}=True}
573
572
  # wrap = _xkwds_get(options, wrap=False)
pygeodesy/triaxials.py CHANGED
@@ -40,7 +40,7 @@ from pygeodesy.datums import Datum, _spherical_datum, _WGS84, Ellipsoid, _EWGS8
40
40
  # from pygeodesy.elliptic import Elliptic # _MODS
41
41
  # from pygeodesy.errors import _ValueError # from .basics
42
42
  from pygeodesy.fmath import Fdot, fdot, fmean_, hypot, hypot_, norm2, sqrt0
43
- from pygeodesy.fsums import Fsum, fsumf_, fsum1f_
43
+ from pygeodesy.fsums import _Fsumf_, fsumf_, fsum1f_
44
44
  from pygeodesy.interns import NN, _a_, _b_, _beta_, _c_, _distant_, _finite_, \
45
45
  _height_, _inside_, _near_, _negative_, _not_, \
46
46
  _NOTEQUAL_, _null_, _opposite_, _outside_, _SPACE_, \
@@ -59,7 +59,7 @@ from pygeodesy.vector3d import _otherV3d, Vector3d, _ALL_LAZY, _MODS
59
59
  from math import atan2, fabs, sqrt
60
60
 
61
61
  __all__ = _ALL_LAZY.triaxials
62
- __version__ = '24.01.21'
62
+ __version__ = '24.04.14'
63
63
 
64
64
  _not_ordered_ = _not_('ordered')
65
65
  _omega_ = 'omega'
@@ -805,8 +805,8 @@ class Triaxial(Triaxial_):
805
805
  c2_a2 = -self._1e2ac # == -(c/a)**2
806
806
  a2c2_a2 = self. e2ac # (a**2 - c**2) / a**2 == 1 - (c/a)**2
807
807
 
808
- x2 = Fsum(_1_0, -b2_a2 * sa**2, c2_a2 * ca**2).fover(a2c2_a2)
809
- z2 = Fsum(c2_a2, sb**2, b2_a2 * cb**2).fover(a2c2_a2)
808
+ x2 = _Fsumf_(_1_0, -b2_a2 * sa**2, c2_a2 * ca**2).fover(a2c2_a2)
809
+ z2 = _Fsumf_(c2_a2, sb**2, b2_a2 * cb**2).fover(a2c2_a2)
810
810
 
811
811
  x, y, z = self._abc3
812
812
  x *= cb * sqrt0(x2, Error=TriaxialError)
pygeodesy/utmupsBase.py CHANGED
@@ -17,7 +17,7 @@ from pygeodesy.interns import NN, _A_, _B_, _COMMA_, _Error_, \
17
17
  _gamma_, _n_a_, _not_, _N_, _NS_, _PLUS_, \
18
18
  _scale_, _SPACE_, _Y_, _Z_, _under
19
19
  from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS
20
- from pygeodesy.named import _NamedBase, nameof, notOverloaded, _xnamed
20
+ from pygeodesy.named import _NamedBase, nameof, _xnamed
21
21
  from pygeodesy.namedTuples import EasNor2Tuple, LatLonDatum5Tuple
22
22
  from pygeodesy.props import deprecated_method, property_doc_, _update_all, \
23
23
  deprecated_property_RO, Property_RO, property_RO
@@ -26,7 +26,7 @@ from pygeodesy.units import Band, Easting, Northing, Scalar, Zone
26
26
  from pygeodesy.utily import _Wrap, wrap360
27
27
 
28
28
  __all__ = _ALL_LAZY.utmupsBase
29
- __version__ = '23.11.29'
29
+ __version__ = '24.04.07'
30
30
 
31
31
  _UPS_BANDS = _A_, _B_, _Y_, _Z_ # UPS polar bands SE, SW, NE, NW
32
32
  # _UTM_BANDS = _MODS.utm._Bands
@@ -170,7 +170,7 @@ class UtmUpsBase(_NamedBase):
170
170
  '''
171
171
  E = self._Error
172
172
  if not E: # PYCHOK no cover
173
- notOverloaded(self, callername=_under(_Error_))
173
+ self._notOverloaded(callername=_under(_Error_))
174
174
 
175
175
  self._easting = Easting(easting, Error=E)
176
176
  self._northing = Northing(northing, Error=E)
@@ -203,7 +203,7 @@ class UtmUpsBase(_NamedBase):
203
203
  if band:
204
204
  _xinstanceof(str, band=band)
205
205
  # if not self._Bands: # PYCHOK no cover
206
- # notOverloaded(self, callername=_under('Bands'))
206
+ # self._notOverloaded(callername=_under('Bands'))
207
207
  if band not in self._Bands:
208
208
  t = _or(*sorted(set(map(repr, self._Bands))))
209
209
  raise self._Error(band=band, txt=_not_(t))
@@ -276,7 +276,7 @@ class UtmUpsBase(_NamedBase):
276
276
  @Property_RO
277
277
  def falsed2(self): # PYCHOK no cover
278
278
  '''I{Must be overloaded}.'''
279
- notOverloaded(self)
279
+ self._notOverloaded(self)
280
280
 
281
281
  @Property_RO
282
282
  def gamma(self):
@@ -374,7 +374,7 @@ class UtmUpsBase(_NamedBase):
374
374
 
375
375
  def _toLLEB(self, **kwds): # PYCHOK no cover
376
376
  '''(INTERNAL) I{Must be overloaded}.'''
377
- notOverloaded(self, **kwds)
377
+ self._notOverloaded(**kwds)
378
378
 
379
379
  def toMgrs(self, center=False):
380
380
  '''Convert this UTM/UPS coordinate to an MGRS grid reference.
pygeodesy/vector2d.py CHANGED
@@ -12,7 +12,7 @@ from pygeodesy.constants import EPS, EPS0, EPS02, EPS4, INF, INT0, \
12
12
  from pygeodesy.errors import _and, _AssertionError, IntersectionError, NumPyError, \
13
13
  PointsError, TriangleError, _xError, _xkwds
14
14
  from pygeodesy.fmath import fabs, fdot, hypot, hypot2_, sqrt
15
- from pygeodesy.fsums import Fsum, fsumf_, fsum1f_
15
+ from pygeodesy.fsums import _Fsumf_, fsumf_, fsum1f_
16
16
  from pygeodesy.interns import NN, _a_, _and_, _b_, _c_, _center_, _coincident_, \
17
17
  _colinear_, _COMMASPACE_, _concentric_, _few_, \
18
18
  _intersection_, _invalid_, _near_, _no_, _of_, \
@@ -30,7 +30,7 @@ from contextlib import contextmanager
30
30
  # from math import fabs, sqrt # from .fmath
31
31
 
32
32
  __all__ = _ALL_LAZY.vector2d
33
- __version__ = '23.11.17'
33
+ __version__ = '24.04.18'
34
34
 
35
35
  _cA_ = 'cA'
36
36
  _cB_ = 'cB'
@@ -354,10 +354,11 @@ def _meeus4(A, point2, point3, circum=False, useZ=True, clas=None, **clas_kwds):
354
354
  a, c, A, C = c, a, C, A
355
355
 
356
356
  if a > EPS02 and (circum or a < (b + c)): # circumradius
357
- b = sqrt(b / a)
358
- c = sqrt(c / a)
359
- R = Fsum(_1_0, b, c) * Fsum(_1_0, b, -c) * Fsum(_1_0, -b, c) * Fsum(_N_1_0, b, c)
360
- r = R.fover(a)
357
+ b = sqrt(b / a)
358
+ c = sqrt(c / a)
359
+ R = _Fsumf_(_1_0, b, c) * _Fsumf_(_1_0, b, -c) * \
360
+ _Fsumf_(_1_0, -b, c) * _Fsumf_(_N_1_0, b, c)
361
+ r = R.fover(a)
361
362
  if r < EPS02:
362
363
  raise IntersectionError(_coincident_ if b < EPS0 or c < EPS0 else (
363
364
  _colinear_ if _iscolinearWith(A, B, C) else _invalid_))
@@ -503,8 +504,8 @@ def _radii11ABC(point1, point2, point3, useZ=True):
503
504
  b = C.minus(A).length
504
505
  c = A.minus(B).length
505
506
 
506
- S = Fsum(a, b, c) * _0_5
507
- s = float(S) # semi-perimeter
507
+ S = _Fsumf_(a, b, c) * _0_5
508
+ s = float(S) # semi-perimeter
508
509
  if s > EPS0:
509
510
  rs = float(S - a), float(S - b), float(S - c)
510
511
  r3, r2, r1 = sorted(rs) # r3 <= r2 <= r1