pygeodesy 24.7.24__py2.py3-none-any.whl → 24.8.24__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.
Files changed (57) hide show
  1. {PyGeodesy-24.7.24.dist-info → PyGeodesy-24.8.24.dist-info}/METADATA +20 -19
  2. {PyGeodesy-24.7.24.dist-info → PyGeodesy-24.8.24.dist-info}/RECORD +57 -57
  3. {PyGeodesy-24.7.24.dist-info → PyGeodesy-24.8.24.dist-info}/WHEEL +1 -1
  4. pygeodesy/__init__.py +26 -27
  5. pygeodesy/auxilats/auxAngle.py +2 -2
  6. pygeodesy/auxilats/auxDST.py +3 -3
  7. pygeodesy/azimuthal.py +4 -4
  8. pygeodesy/basics.py +3 -3
  9. pygeodesy/cartesianBase.py +6 -6
  10. pygeodesy/constants.py +11 -11
  11. pygeodesy/css.py +5 -5
  12. pygeodesy/ellipsoidalBase.py +18 -15
  13. pygeodesy/ellipsoidalExact.py +2 -2
  14. pygeodesy/ellipsoidalGeodSolve.py +2 -2
  15. pygeodesy/ellipsoidalKarney.py +2 -2
  16. pygeodesy/ellipsoidalNvector.py +2 -2
  17. pygeodesy/ellipsoidalVincenty.py +7 -6
  18. pygeodesy/ellipsoids.py +3 -3
  19. pygeodesy/epsg.py +3 -3
  20. pygeodesy/fmath.py +2 -1
  21. pygeodesy/formy.py +2 -2
  22. pygeodesy/fsums.py +4 -4
  23. pygeodesy/gars.py +66 -58
  24. pygeodesy/geodesici.py +4 -10
  25. pygeodesy/geodesicx/gx.py +3 -3
  26. pygeodesy/geodesicx/gxarea.py +3 -3
  27. pygeodesy/geodsolve.py +3 -3
  28. pygeodesy/geohash.py +491 -267
  29. pygeodesy/geoids.py +298 -316
  30. pygeodesy/heights.py +176 -194
  31. pygeodesy/internals.py +39 -6
  32. pygeodesy/interns.py +2 -3
  33. pygeodesy/karney.py +2 -2
  34. pygeodesy/latlonBase.py +14 -8
  35. pygeodesy/lazily.py +22 -21
  36. pygeodesy/ltp.py +6 -7
  37. pygeodesy/ltpTuples.py +12 -6
  38. pygeodesy/named.py +5 -4
  39. pygeodesy/namedTuples.py +14 -1
  40. pygeodesy/osgr.py +7 -7
  41. pygeodesy/points.py +2 -2
  42. pygeodesy/resections.py +7 -7
  43. pygeodesy/rhumb/solve.py +3 -3
  44. pygeodesy/simplify.py +10 -10
  45. pygeodesy/sphericalBase.py +3 -3
  46. pygeodesy/sphericalTrigonometry.py +2 -2
  47. pygeodesy/streprs.py +3 -3
  48. pygeodesy/triaxials.py +210 -204
  49. pygeodesy/units.py +36 -19
  50. pygeodesy/unitsBase.py +4 -4
  51. pygeodesy/utmupsBase.py +3 -3
  52. pygeodesy/vector2d.py +158 -51
  53. pygeodesy/vector3d.py +13 -52
  54. pygeodesy/vector3dBase.py +81 -63
  55. pygeodesy/webmercator.py +3 -3
  56. pygeodesy/wgrs.py +109 -101
  57. {PyGeodesy-24.7.24.dist-info → PyGeodesy-24.8.24.dist-info}/top_level.txt +0 -0
@@ -43,7 +43,7 @@ from pygeodesy.vector3d import Vector3d, _xyzhdlln4
43
43
  # from math import atan2, degrees, fabs, radians, sqrt # from .fmath, .utily
44
44
 
45
45
  __all__ = _ALL_LAZY.cartesianBase
46
- __version__ = '24.07.12'
46
+ __version__ = '24.08.18'
47
47
 
48
48
  _r_ = 'r'
49
49
  _theta_ = 'theta'
@@ -300,7 +300,7 @@ class CartesianBase(Vector3d):
300
300
  coordinates I{at height} in C{meter}, conventionally.
301
301
 
302
302
  @note: This cartesian's coordinates are returned if B{C{earth}} and this
303
- datum or B{C{heigth}} and/or this height are C{None} or undefined.
303
+ datum or B{C{height}} and/or this height are C{None} or undefined.
304
304
 
305
305
  @note: Include keyword argument C{B{datum}=None} if class B{C{Cartesian}}
306
306
  does not accept a B{C{datum}} keyword agument.
@@ -342,9 +342,9 @@ class CartesianBase(Vector3d):
342
342
  I{overriding} this datum (L{Datum}, L{Ellipsoid},
343
343
  L{Ellipsoid2}, L{a_f2Tuple}, L{Triaxial}, L{Triaxial_},
344
344
  L{JacobiConformal} or C{meter}, conventionally).
345
- @kwarg normal: If C{True} the projection is the nearest point on the
345
+ @kwarg normal: If C{True}, the projection is the nearest point on the
346
346
  ellipsoid's surface, otherwise the intersection of the
347
- radial line to the ellipsoid's center and the surface.
347
+ radial line to the ellipsoid's center and surface C{bool}).
348
348
  @kwarg Cartesian_and_kwds: Optional C{B{Cartesian}=None} class to return
349
349
  the I{projection} and additional B{C{Cartesian}} keyword
350
350
  arguments.
@@ -437,7 +437,7 @@ class CartesianBase(Vector3d):
437
437
  # <https://GitHub.com/pbrod/nvector>/src/nvector/core.py>
438
438
  # _equation23 and <https://www.NavLab.net/nvector>
439
439
  E = datum.ellipsoid
440
- x, y, z = self.xyz
440
+ x, y, z = self.xyz3
441
441
 
442
442
  # Kenneth Gade eqn 23
443
443
  p = hypot2(x, y) * E.a2_
@@ -836,7 +836,7 @@ class CartesianBase(Vector3d):
836
836
  # if inverse and d != _WGS84:
837
837
  # raise _ValueError(inverse=inverse, datum=d,
838
838
  # txt_not_=_WGS84.name)
839
- xyz = transform.transform(*self.xyz, inverse=inverse)
839
+ xyz = transform.transform(*self.xyz3, inverse=inverse)
840
840
  c = self.dup(xyz=xyz, datum=datum or self.datum)
841
841
  return c
842
842
 
pygeodesy/constants.py CHANGED
@@ -17,14 +17,14 @@ from pygeodesy.interns import _INF_, _NAN_, _UNDER_
17
17
  # from pygeodesy.streprs import Fmt # from .unitsBase
18
18
  from pygeodesy.unitsBase import Float, Int, Radius, _ALL_LAZY, Fmt
19
19
 
20
- from math import fabs, isinf, isnan, pi as _PI, sqrt
20
+ from math import fabs, isinf, isnan, pi as _pi, sqrt
21
21
  try:
22
22
  from math import inf as _inf, nan as _nan # PYCHOK Python 3+
23
23
  except ImportError: # Python 2-
24
24
  _inf, _nan = float(_INF_), float(_NAN_)
25
25
 
26
26
  __all__ = _ALL_LAZY.constants
27
- __version__ = '24.05.29'
27
+ __version__ = '24.08.18'
28
28
 
29
29
 
30
30
  def _copysign_0_0(y):
@@ -242,7 +242,7 @@ _EPStol = _Float(_EPStol =_EPSqrt * _0_1) # PYCHOK = 1.49011611938e5-09 == sqr
242
242
  _89_999_ = _Float(_89_999_= EPS1 * _90_0) # just below 90.0
243
243
  # <https://Numbers.Computation.Free.FR/Constants/Miscellaneous/digits.html>
244
244
  _1__90 = _Float(_1__90 =_1_0 / _90_0) # PYCHOK = 0.011_111_111_111_111_111_111_111_111_111_111_111_111_111_111_11111
245
- _2__PI = _Float(_2__PI =_2_0 / _PI) # PYCHOK = 0.636_619_772_367_581_343_075_535_053_490_057_448_137_838_582_96182
245
+ _2__PI = _Float(_2__PI =_2_0 / _pi) # PYCHOK = 0.636_619_772_367_581_343_075_535_053_490_057_448_137_838_582_96182
246
246
 
247
247
  _1_16th = _Float(_1_16th =_1_0 / _16_0) # PYCHOK in .ellipsoids, .karney
248
248
  _1_64th = _Float(_1_64th =_1_0 / 64) # PYCHOK in .elliptic, pow(2.0, -6)
@@ -261,14 +261,14 @@ NAN = Float(NAN =_nan) # PYCHOK Not-A-Number, see function L{isnan}, NOT _
261
261
  NEG0 = Float(NEG0=_N_0_0) # PYCHOK NEGative 0.0, see function L{isneg0}, NOT _Float!
262
262
  NINF = Float(NINF=-INF) # PYCHOK Negative INFinity, NOT _Float!
263
263
 
264
- PI = _Float(PI =_PI) # 3.1415_9265_3589_7932_3846_2643_3832_795
265
- PI2 = _Float(PI2 =_PI * _2_0) # PYCHOK Two PI, M{PI * 2} aka I{Tau}
266
- PI_2 = _Float(PI_2 =_PI / _2_0) # PYCHOK Half PI, M{PI / 2}
267
- PI3 = _Float(PI3 =_PI * _3_0) # PYCHOK Three PI, M{PI * 3}
268
- PI3_2 = _Float(PI3_2=_PI * _1_5) # PYCHOK PI and a half, M{PI * 3 / 2}
269
- PI_3 = _Float(PI_3 =_PI / _3_0) # PYCHOK One third PI, M{PI / 3}
270
- PI4 = _Float(PI4 =_PI * _4_0) # PYCHOK Four PI, M{PI * 4}
271
- PI_4 = _Float(PI_4 =_PI / _4_0) # PYCHOK Quarter PI, M{PI / 4}
264
+ PI = _Float(PI =_pi) # 3.1415_9265_3589_7932_3846_2643_3832_795
265
+ PI2 = _Float(PI2 =_pi * _2_0) # PYCHOK Two PI, M{PI * 2} aka I{Tau}
266
+ PI_2 = _Float(PI_2 =_pi / _2_0) # PYCHOK Half PI, M{PI / 2}
267
+ PI3 = _Float(PI3 =_pi * _3_0) # PYCHOK Three PI, M{PI * 3}
268
+ PI3_2 = _Float(PI3_2=_pi * _1_5) # PYCHOK PI and a half, M{PI * 3 / 2}
269
+ PI_3 = _Float(PI_3 =_pi / _3_0) # PYCHOK One third PI, M{PI / 3}
270
+ PI4 = _Float(PI4 =_pi * _4_0) # PYCHOK Four PI, M{PI * 4}
271
+ PI_4 = _Float(PI_4 =_pi / _4_0) # PYCHOK Quarter PI, M{PI / 4}
272
272
 
273
273
  R_MA = _Radius(R_MA=6378137.0) # PYCHOK equatorial earth radius (C{meter}), WGS84, EPSG:3785
274
274
  R_MB = _Radius(R_MB=6356752.3) # PYCHOK polar earth radius (C{meter}), WGS84, EPSG:3785
pygeodesy/css.py CHANGED
@@ -27,13 +27,13 @@ from pygeodesy.namedTuples import EasNor2Tuple, EasNor3Tuple, \
27
27
  from pygeodesy.props import deprecated_Property_RO, Property, \
28
28
  Property_RO, _update_all
29
29
  from pygeodesy.streprs import Fmt, _fstrENH2, _fstrLL0, _xzipairs
30
- from pygeodesy.units import Bearing, Degrees, Easting, Height, _heigHt, \
30
+ from pygeodesy.units import Azimuth, Degrees, Easting, Height, _heigHt, \
31
31
  Lat_, Lon_, Northing, Scalar
32
32
 
33
33
  # from math import fabs # from .karney
34
34
 
35
35
  __all__ = _ALL_LAZY.css
36
- __version__ = '24.06.11'
36
+ __version__ = '24.07.25'
37
37
 
38
38
 
39
39
  def _CS0(cs0):
@@ -578,7 +578,7 @@ class EasNorAziRk4Tuple(_NamedTuple):
578
578
  C{reciprocal} of azimuthal northing scale, both in C{degrees}.
579
579
  '''
580
580
  _Names_ = (_easting_, _northing_, _azimuth_, _reciprocal_)
581
- _Units_ = ( Easting, Northing, Bearing, Scalar)
581
+ _Units_ = ( Easting, Northing, Azimuth, Scalar)
582
582
 
583
583
 
584
584
  class EasNorAziRkEqu6Tuple(_NamedTuple):
@@ -589,7 +589,7 @@ class EasNorAziRkEqu6Tuple(_NamedTuple):
589
589
  C{equatorarc} and C{equatorazimuth}, all in C{degrees}.
590
590
  '''
591
591
  _Names_ = EasNorAziRk4Tuple._Names_ + ('equatorarc', 'equatorazimuth')
592
- _Units_ = EasNorAziRk4Tuple._Units_ + ( Degrees, Bearing)
592
+ _Units_ = EasNorAziRk4Tuple._Units_ + ( Degrees, Azimuth)
593
593
 
594
594
 
595
595
  class LatLonAziRk4Tuple(_NamedTuple):
@@ -598,7 +598,7 @@ class LatLonAziRk4Tuple(_NamedTuple):
598
598
  C{reciprocal} the reciprocal of azimuthal northing scale.
599
599
  '''
600
600
  _Names_ = (_lat_, _lon_, _azimuth_, _reciprocal_)
601
- _Units_ = ( Lat_, Lon_, Bearing, Scalar)
601
+ _Units_ = ( Lat_, Lon_, Azimuth, Scalar)
602
602
 
603
603
 
604
604
  def toCss(latlon, cs0=None, height=None, Css=Css, **name):
@@ -35,7 +35,7 @@ from pygeodesy.units import Epoch, _isDegrees, Radius_, _1mm as _TOL_M
35
35
  # from math import fabs # from .latlonBase
36
36
 
37
37
  __all__ = _ALL_LAZY.ellipsoidalBase
38
- __version__ = '24.06.24'
38
+ __version__ = '24.08.14'
39
39
 
40
40
 
41
41
  class CartesianEllipsoidalBase(CartesianBase):
@@ -111,7 +111,7 @@ class CartesianEllipsoidalBase(CartesianBase):
111
111
  C{Vector3Tuple} or C{Vector4Tuple}).
112
112
  @arg radius2: Radius of the second sphere or circle (same units as this and
113
113
  the B{C{other}} point's coordinates).
114
- @kwarg sphere: If C{True} compute the center and radius of the intersection
114
+ @kwarg sphere: If C{True}, compute the center and radius of the intersection
115
115
  of two I{spheres}. If C{False}, ignore the C{z}-component and
116
116
  compute the intersection of two I{circles} (C{bool}).
117
117
  @kwarg Vector: Class to return intersections (C{Cartesian}, L{Vector3d} or
@@ -527,7 +527,7 @@ class LatLonEllipsoidalBase(LatLonBase):
527
527
  point is computed as the C{destination} along that bearing at
528
528
  about 1.5 times the distance from the start point to an initial
529
529
  gu-/estimate of the intersection point (and between 1/8 and 3/8
530
- of the authalic earth perimeter).
530
+ of the C{authalic} earth perimeter).
531
531
 
532
532
  @see: I{Karney's} U{intersect.cpp<https://SourceForge.net/p/geographiclib/
533
533
  discussion/1026621/thread/21aaff9f/>}, U{The B{ellipsoidal} case<https://
@@ -659,7 +659,7 @@ class LatLonEllipsoidalBase(LatLonBase):
659
659
 
660
660
  @arg point1: Start point (C{LatLon}).
661
661
  @arg point2: End point (C{LatLon}).
662
- @kwarg within: If C{True} return the closest point I{between}
662
+ @kwarg within: If C{True}, return the closest point I{between}
663
663
  B{C{point1}} and B{C{point2}}, otherwise the
664
664
  closest point elsewhere on the geodesic (C{bool}).
665
665
  @kwarg height: Optional height for the closest point (C{meter},
@@ -714,8 +714,8 @@ class LatLonEllipsoidalBase(LatLonBase):
714
714
  I{without conversion}.
715
715
  @kwarg epoch: Optional datum (L{Epoch}), overriding this epoch
716
716
  I{without conversion}.
717
- @kwarg reframe: Optional datum (L{RefFrame}), overriding this
718
- reframe I{without conversion}.
717
+ @kwarg reframe: Optional reference frame (L{RefFrame}), overriding
718
+ this reframe I{without conversion}.
719
719
  @kwarg sep: Optional separator (C{str}).
720
720
  @kwarg wrap: If C{True}, wrap or I{normalize} the lat- and
721
721
  longitude (C{bool}).
@@ -726,7 +726,8 @@ class LatLonEllipsoidalBase(LatLonBase):
726
726
  @raise ParseError: Invalid B{C{strllh}}.
727
727
  '''
728
728
  a, b, h = _MODS.dms.parse3llh(strllh, height=height, sep=sep, wrap=wrap)
729
- r = self.classof(a, b, height=h, datum=self.datum)
729
+ r = self.classof(a, b, height=h, datum=self.datum, epoch=self.epoch,
730
+ reframe=self.reframe)
730
731
  if datum not in (None, self.datum):
731
732
  r.datum = datum
732
733
  if epoch not in (None, self.epoch):
@@ -865,7 +866,7 @@ class LatLonEllipsoidalBase(LatLonBase):
865
866
  def toOsgr(self, kTM=False, **toOsgr_kwds):
866
867
  '''Convert this C{LatLon} point to an OSGR coordinate.
867
868
 
868
- @kwarg kTM: If C{True} use I{Karney}'s Krüger method from module
869
+ @kwarg kTM: If C{True}, use I{Karney}'s Krüger method from module
869
870
  L{ktm}, otherwise I{Ordinance Survery}'s recommended
870
871
  formulation (C{bool}).
871
872
  @kwarg toOsgr_kwds: Optional L{pygeodesy.toOsgr} keyword arguments.
@@ -1008,13 +1009,15 @@ class LatLonEllipsoidalBase(LatLonBase):
1008
1009
 
1009
1010
  @arg bearing1: Bearing at this point (compass C{degrees360}).
1010
1011
  @arg other: Start point of the other line (C{LatLon}).
1011
- @arg bearing2: Bearing at the other point (compass C{degrees360}).
1012
+ @arg bearing2: Bearing at the B{C{other}} point (compass C{degrees360}).
1012
1013
  @kwarg height_wrap_tol: Optional keyword arguments C{B{height}=None},
1013
- C{B{wrap}=False} and C{B{tol}}, see method L{intersection3}.
1014
+ C{B{wrap}=False} and C{B{tol}}, see method L{intersection3
1015
+ <pygeodesy.ellipsoidalBase.LatLonEllipsoidalBase>}.
1014
1016
 
1015
1017
  @return: Triangulated point (C{LatLon}).
1016
1018
 
1017
- @see: Method L{intersection3} for further details.
1019
+ @see: Method L{intersection3<pygeodesy.ellipsoidalBase.LatLonEllipsoidalBase>}
1020
+ for further details.
1018
1021
  '''
1019
1022
  if _isDegrees(bearing1) and _isDegrees(bearing2):
1020
1023
  r = self.intersection3(bearing1, other, bearing2, **height_wrap_tol)
@@ -1034,13 +1037,13 @@ class LatLonEllipsoidalBase(LatLonBase):
1034
1037
  @arg point3: Third center point (C{LatLon}).
1035
1038
  @arg distance3: Distance to point3 (C{meter}, same units as
1036
1039
  B{C{eps}}).
1037
- @kwarg area: If C{True} compute the area overlap, otherwise the
1040
+ @kwarg area: If C{True}, compute the area overlap, otherwise the
1038
1041
  perimeter intersection of the circles (C{bool}).
1039
1042
  @kwarg eps: The required I{minimal overlap} for C{B{area}=True}
1040
1043
  or the I{intersection margin} for C{B{area}=False}
1041
1044
  (C{meter}, conventionally).
1042
- @kwarg wrap: If C{True}, wrap or I{normalize} and unroll
1043
- B{C{point2}} and B{C{point3}} (C{bool}).
1045
+ @kwarg wrap: If C{True}, wrap or I{normalize} and unroll B{C{point2}}
1046
+ and B{C{point3}} (C{bool}).
1044
1047
 
1045
1048
  @return: A L{Trilaterate5Tuple}C{(min, minPoint, max, maxPoint, n)}
1046
1049
  with C{min} and C{max} in C{meter}, same units as B{C{eps}},
@@ -1049,7 +1052,7 @@ class LatLonEllipsoidalBase(LatLonBase):
1049
1052
  of trilatered points found for the given B{C{eps}}.
1050
1053
 
1051
1054
  If only a single trilaterated point is found, C{min I{is}
1052
- max}, C{minPoint I{is} maxPoint} and C{n = 1}.
1055
+ max}, C{minPoint I{is} maxPoint} and C{n=1}.
1053
1056
 
1054
1057
  For C{B{area}=True}, C{min} and C{max} are the smallest
1055
1058
  respectively largest I{radial} overlap found.
@@ -24,7 +24,7 @@ from pygeodesy.points import _areaError, ispolar # PYCHOK exported
24
24
  # from math import fabs # from .karney
25
25
 
26
26
  __all__ = _ALL_LAZY.ellipsoidalExact
27
- __version__ = '24.06.11'
27
+ __version__ = '24.08.13'
28
28
 
29
29
 
30
30
  class Cartesian(CartesianEllipsoidalBase):
@@ -252,7 +252,7 @@ def nearestOn(point, point1, point2, within=True, height=None, wrap=False,
252
252
  @arg point: Reference point (C{LatLon}).
253
253
  @arg point1: Start point of the geodesic (C{LatLon}).
254
254
  @arg point2: End point of the geodesic (C{LatLon}).
255
- @kwarg within: If C{True} return the closest point I{between}
255
+ @kwarg within: If C{True}, return the closest point I{between}
256
256
  B{C{point1}} and B{C{point2}}, otherwise the
257
257
  closest point elsewhere on the geodesic (C{bool}).
258
258
  @kwarg height: Optional height for the closest point (C{meter},
@@ -24,7 +24,7 @@ from pygeodesy.points import _areaError, ispolar # PYCHOK exported
24
24
  # from math import fabs # from .karney
25
25
 
26
26
  __all__ = _ALL_LAZY.ellipsoidalGeodSolve
27
- __version__ = '24.06.11'
27
+ __version__ = '24.08.13'
28
28
 
29
29
 
30
30
  class Cartesian(CartesianEllipsoidalBase):
@@ -244,7 +244,7 @@ def nearestOn(point, point1, point2, within=True, height=None, wrap=False,
244
244
  @arg point: Reference point (C{LatLon}).
245
245
  @arg point1: Start point of the geodesic (C{LatLon}).
246
246
  @arg point2: End point of the geodesic (C{LatLon}).
247
- @kwarg within: If C{True} return the closest point I{between}
247
+ @kwarg within: If C{True}, return the closest point I{between}
248
248
  B{C{point1}} and B{C{point2}}, otherwise the
249
249
  closest point elsewhere on the geodesic (C{bool}).
250
250
  @kwarg height: Optional height for the closest point (C{meter},
@@ -42,7 +42,7 @@ from pygeodesy.props import deprecated_method, Property_RO
42
42
  # from math import fabs # from .karney
43
43
 
44
44
  __all__ = _ALL_LAZY.ellipsoidalKarney
45
- __version__ = '24.06.11'
45
+ __version__ = '24.08.13'
46
46
 
47
47
 
48
48
  class Cartesian(CartesianEllipsoidalBase):
@@ -279,7 +279,7 @@ def nearestOn(point, point1, point2, within=True, height=None, wrap=False,
279
279
  @arg point: Reference point (C{LatLon}).
280
280
  @arg point1: Start point of the geodesic (C{LatLon}).
281
281
  @arg point2: End point of the geodesic (C{LatLon}).
282
- @kwarg within: If C{True} return the closest point I{between}
282
+ @kwarg within: If C{True}, return the closest point I{between}
283
283
  B{C{point1}} and B{C{point2}}, otherwise the
284
284
  closest point elsewhere on the geodesic (C{bool}).
285
285
  @kwarg height: Optional height for the closest point (C{meter},
@@ -48,7 +48,7 @@ from pygeodesy.units import Bearing, Distance, Height, Scalar
48
48
  # from math import fabs # from .nvectorBase
49
49
 
50
50
  __all__ = _ALL_LAZY.ellipsoidalNvector
51
- __version__ = '24.06.15'
51
+ __version__ = '24.08.13'
52
52
 
53
53
 
54
54
  class Ned(_Ned):
@@ -555,7 +555,7 @@ def nearestOn(point, point1, point2, within=True, height=None, wrap=False,
555
555
  @arg point: Reference point (C{LatLon}).
556
556
  @arg point1: Start point of the geodesic (C{LatLon}).
557
557
  @arg point2: End point of the geodesic (C{LatLon}).
558
- @kwarg within: If C{True} return the closest point I{between}
558
+ @kwarg within: If C{True}, return the closest point I{between}
559
559
  B{C{point1}} and B{C{point2}}, otherwise the
560
560
  closest point elsewhere on the geodesic (C{bool}).
561
561
  @kwarg height: Optional height for the closest point (C{meter},
@@ -59,7 +59,7 @@ from pygeodesy.errors import _and, _ValueError, _xkwds
59
59
  from pygeodesy.fmath import Fpolynomial, hypot, hypot1
60
60
  from pygeodesy.interns import _ambiguous_, _antipodal_, _COLONSPACE_, \
61
61
  _to_, _SPACE_, _limit_ # PYCHOK used!
62
- from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS, _ALL_OTHER
62
+ from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS
63
63
  from pygeodesy.namedTuples import Destination2Tuple, Destination3Tuple, \
64
64
  Distance3Tuple
65
65
  from pygeodesy.points import Fmt, ispolar # PYCHOK exported
@@ -72,7 +72,7 @@ from pygeodesy.utily import atan2b, atan2d, sincos2, sincos2d, unroll180, wrap18
72
72
  from math import atan2, cos, degrees, fabs, radians, tan
73
73
 
74
74
  __all__ = _ALL_LAZY.ellipsoidalVincenty
75
- __version__ = '24.06.11'
75
+ __version__ = '24.08.13'
76
76
 
77
77
  _antipodal_to_ = _SPACE_(_antipodal_, _to_)
78
78
 
@@ -510,7 +510,7 @@ def nearestOn(point, point1, point2, within=True, height=None, wrap=False,
510
510
  @arg point: Reference point (C{LatLon}).
511
511
  @arg point1: Start point of the geodesic (C{LatLon}).
512
512
  @arg point2: End point of the geodesic (C{LatLon}).
513
- @kwarg within: If C{True} return the closest point I{between}
513
+ @kwarg within: If C{True}, return the closest point I{between}
514
514
  B{C{point1}} and B{C{point2}}, otherwise the
515
515
  closest point elsewhere on the geodesic (C{bool}).
516
516
  @kwarg height: Optional height for the closest point (C{meter},
@@ -560,9 +560,10 @@ def perimeterOf(points, **closed_datum_wrap):
560
560
  return _MODS.ellipsoidalExact.perimeterOf(points, **closed_datum_wrap)
561
561
 
562
562
 
563
- __all__ += _ALL_OTHER(Cartesian, LatLon, intersecant2, # from .ellipsoidalBaseDI
564
- intersection3, intersections2, ispolar, # from .points
565
- nearestOn) + _ALL_DOCS(areaOf, perimeterOf) # deprecated
563
+ __all__ += _ALL_DOCS(Cartesian, LatLon, intersecant2, # from .ellipsoidalBaseDI
564
+ intersection3, intersections2, ispolar, # from .points
565
+ nearestOn,
566
+ areaOf, perimeterOf) # DEPRECATED
566
567
 
567
568
  # **) MIT License
568
569
  #
pygeodesy/ellipsoids.py CHANGED
@@ -93,7 +93,7 @@ from pygeodesy.utily import atan1, atan1d, atan2b, degrees90, m2radians, radians
93
93
  from math import asinh, atan, atanh, cos, degrees, exp, fabs, radians, sin, sinh, sqrt, tan
94
94
 
95
95
  __all__ = _ALL_LAZY.ellipsoids
96
- __version__ = '24.07.16'
96
+ __version__ = '24.07.25'
97
97
 
98
98
  _f_0_0 = Float(f =_0_0) # zero flattening
99
99
  _f__0_0 = Float(f_=_0_0) # zero inverse flattening
@@ -1040,7 +1040,7 @@ class Ellipsoid(_NamedEnumItem):
1040
1040
  _MODS.geodesicw._wrapped.Geodesic)
1041
1041
  except ImportError:
1042
1042
  pass
1043
- return t # overwrite propertyROver
1043
+ return t # overwrite property_ROver
1044
1044
 
1045
1045
  @property_RO
1046
1046
  def geodesicw(self):
@@ -1523,7 +1523,7 @@ class Ellipsoid(_NamedEnumItem):
1523
1523
  '''(INTERNAL) Get all C{Rhumb...} classes, I{once}.
1524
1524
  '''
1525
1525
  p = _MODS.rhumb
1526
- return (p.aux_.RhumbAux, # overwrite propertyROver
1526
+ return (p.aux_.RhumbAux, # overwrite property_ROver
1527
1527
  p.ekx.Rhumb, p.solve.RhumbSolve)
1528
1528
 
1529
1529
  @property
pygeodesy/epsg.py CHANGED
@@ -17,7 +17,7 @@ including coverage of UPS as zone C{0}.
17
17
  from pygeodesy.basics import isint, isstr, _xinstanceof
18
18
  from pygeodesy.errors import _ValueError
19
19
  from pygeodesy.interns import NN, _N_, _NS_, _S_, _SPACE_
20
- from pygeodesy.lazily import _ALL_LAZY, _ALL_OTHER
20
+ from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY
21
21
  from pygeodesy.namedTuples import UtmUps2Tuple
22
22
  from pygeodesy.props import Property_RO
23
23
  from pygeodesy.streprs import Fmt
@@ -28,7 +28,7 @@ from pygeodesy.utmupsBase import _to3zBhp, _UPS_ZONE, _UTM_ZONE_MIN, \
28
28
  _UTM_ZONE_MAX, _UTMUPS_ZONE_INVALID
29
29
 
30
30
  __all__ = _ALL_LAZY.epsg
31
- __version__ = '24.05.18'
31
+ __version__ = '24.08.05'
32
32
 
33
33
  # _EPSG_INVALID = _UTMUPS_ZONE_INVALID
34
34
  _EPSG_N_01 = 32601 # EPSG code for UTM zone 01 N
@@ -219,7 +219,7 @@ def encode(zone, hemipole=NN, band=NN):
219
219
  return e
220
220
 
221
221
 
222
- __all__ += _ALL_OTHER(decode2, encode)
222
+ __all__ += _ALL_DOCS(decode2, encode)
223
223
 
224
224
  # **) MIT License
225
225
  #
pygeodesy/fmath.py CHANGED
@@ -24,7 +24,7 @@ from math import fabs, sqrt # pow
24
24
  import operator as _operator # in .datums, .trf, .utm
25
25
 
26
26
  __all__ = _ALL_LAZY.fmath
27
- __version__ = '24.05.29'
27
+ __version__ = '24.08.15'
28
28
 
29
29
  # sqrt(2) <https://WikiPedia.org/wiki/Square_root_of_2>
30
30
  _0_4142 = 0.41421356237309504880 # ... sqrt(2) - 1
@@ -886,6 +886,7 @@ def norm2(x, y):
886
886
  or zero norm.
887
887
  '''
888
888
  try:
889
+ h = None
889
890
  h = hypot(x, y)
890
891
  if h:
891
892
  x, y = (x / h), (y / h)
pygeodesy/formy.py CHANGED
@@ -42,7 +42,7 @@ from contextlib import contextmanager
42
42
  from math import asin, atan, atan2, cos, degrees, fabs, radians, sin, sqrt # pow
43
43
 
44
44
  __all__ = _ALL_LAZY.formy
45
- __version__ = '24.06.15'
45
+ __version__ = '24.07.29'
46
46
 
47
47
  _RADIANS2 = (PI / _180_0)**2 # degrees- to radians-squared
48
48
  _ratio_ = 'ratio'
@@ -962,7 +962,7 @@ def hartzell(pov, los=False, earth=_WGS84, **name_LatLon_and_kwds):
962
962
  B{C{datum}} if different and to convert from B{C{earth}}.
963
963
 
964
964
  @return: The intersection (L{Vector3d}, B{C{pov}}'s C{cartesian type} or the
965
- given B{C{LatLon}} instance) with attribute C{heigth} set to the
965
+ given B{C{LatLon}} instance) with attribute C{height} set to the
966
966
  distance to the B{C{pov}}.
967
967
 
968
968
  @raise IntersectionError: Invalid B{C{pov}} or B{C{pov}} inside the earth or
pygeodesy/fsums.py CHANGED
@@ -47,7 +47,7 @@ from pygeodesy.streprs import Fmt, fstr, unstr
47
47
  from math import ceil as _ceil, fabs, floor as _floor # PYCHOK used! .ltp
48
48
 
49
49
  __all__ = _ALL_LAZY.fsums
50
- __version__ = '24.06.11'
50
+ __version__ = '24.08.13'
51
51
 
52
52
  _add_op_ = _PLUS_ # in .auxilats.auxAngle
53
53
  _eq_op_ = _EQUAL_ * 2 # _DEQUAL_
@@ -1970,8 +1970,8 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase
1970
1970
  def signOf(self, res=True):
1971
1971
  '''Determine the sign of this instance.
1972
1972
 
1973
- @kwarg res: If C{True} consider, otherwise
1974
- ignore the residual (C{bool}).
1973
+ @kwarg res: If C{True}, consider, otherwise ignore
1974
+ the residual (C{bool}).
1975
1975
 
1976
1976
  @return: The sign (C{int}, -1, 0 or +1).
1977
1977
  '''
@@ -1992,7 +1992,7 @@ class Fsum(_Named): # sync __methods__ with .vector3dBase.Vector3dBase
1992
1992
  def toStr(self, lenc=True, **prec_sep_fmt): # PYCHOK signature
1993
1993
  '''Return this C{Fsum} instance as string.
1994
1994
 
1995
- @kwarg lenc: If C{True} include the current C{[len]} of this
1995
+ @kwarg lenc: If C{True}, include the current C{[len]} of this
1996
1996
  L{Fsum} enclosed in I{[brackets]} (C{bool}).
1997
1997
  @kwarg prec_sep_fmt: Optional keyword arguments for method
1998
1998
  L{Fsum2Tuple.toStr}.