pygeodesy 25.4.8__py2.py3-none-any.whl → 25.5.5__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 (97) hide show
  1. pygeodesy/__init__.py +36 -31
  2. pygeodesy/__main__.py +3 -3
  3. pygeodesy/albers.py +29 -36
  4. pygeodesy/auxilats/_CX_4.py +2 -2
  5. pygeodesy/auxilats/_CX_6.py +2 -2
  6. pygeodesy/auxilats/_CX_8.py +2 -2
  7. pygeodesy/auxilats/_CX_Rs.py +9 -9
  8. pygeodesy/auxilats/__init__.py +3 -3
  9. pygeodesy/auxilats/__main__.py +8 -6
  10. pygeodesy/auxilats/auxAngle.py +2 -2
  11. pygeodesy/auxilats/auxLat.py +5 -5
  12. pygeodesy/auxilats/auxily.py +5 -3
  13. pygeodesy/azimuthal.py +7 -6
  14. pygeodesy/basics.py +32 -18
  15. pygeodesy/booleans.py +18 -16
  16. pygeodesy/cartesianBase.py +26 -24
  17. pygeodesy/clipy.py +11 -10
  18. pygeodesy/constants.py +11 -10
  19. pygeodesy/css.py +14 -11
  20. pygeodesy/datums.py +8 -8
  21. pygeodesy/deprecated/bases.py +2 -2
  22. pygeodesy/deprecated/classes.py +2 -2
  23. pygeodesy/deprecated/consterns.py +4 -4
  24. pygeodesy/dms.py +8 -8
  25. pygeodesy/ecef.py +22 -29
  26. pygeodesy/ecefLocals.py +186 -0
  27. pygeodesy/elevations.py +9 -8
  28. pygeodesy/ellipsoidalBase.py +19 -8
  29. pygeodesy/ellipsoidalBaseDI.py +17 -15
  30. pygeodesy/ellipsoidalNvector.py +6 -3
  31. pygeodesy/ellipsoidalVincenty.py +4 -1
  32. pygeodesy/ellipsoids.py +186 -164
  33. pygeodesy/elliptic.py +9 -9
  34. pygeodesy/errors.py +44 -43
  35. pygeodesy/etm.py +7 -7
  36. pygeodesy/fmath.py +30 -14
  37. pygeodesy/formy.py +11 -12
  38. pygeodesy/frechet.py +216 -109
  39. pygeodesy/fstats.py +5 -4
  40. pygeodesy/fsums.py +79 -78
  41. pygeodesy/gars.py +4 -3
  42. pygeodesy/geodesici.py +15 -14
  43. pygeodesy/geodesicw.py +34 -32
  44. pygeodesy/geodesicx/__init__.py +1 -1
  45. pygeodesy/geodesicx/__main__.py +11 -9
  46. pygeodesy/geodesicx/gx.py +30 -33
  47. pygeodesy/geodesicx/gxarea.py +2 -2
  48. pygeodesy/geodesicx/gxline.py +5 -5
  49. pygeodesy/geodsolve.py +18 -17
  50. pygeodesy/geohash.py +5 -5
  51. pygeodesy/geoids.py +34 -31
  52. pygeodesy/hausdorff.py +17 -13
  53. pygeodesy/heights.py +2 -4
  54. pygeodesy/internals.py +28 -44
  55. pygeodesy/interns.py +10 -7
  56. pygeodesy/iters.py +8 -8
  57. pygeodesy/karney.py +68 -62
  58. pygeodesy/ktm.py +5 -5
  59. pygeodesy/latlonBase.py +20 -21
  60. pygeodesy/lazily.py +104 -78
  61. pygeodesy/lcc.py +11 -9
  62. pygeodesy/ltp.py +56 -58
  63. pygeodesy/ltpTuples.py +35 -36
  64. pygeodesy/mgrs.py +7 -6
  65. pygeodesy/named.py +48 -177
  66. pygeodesy/nvectorBase.py +7 -7
  67. pygeodesy/osgr.py +9 -8
  68. pygeodesy/points.py +12 -10
  69. pygeodesy/props.py +25 -25
  70. pygeodesy/resections.py +83 -80
  71. pygeodesy/rhumb/__init__.py +1 -1
  72. pygeodesy/rhumb/aux_.py +7 -7
  73. pygeodesy/rhumb/bases.py +22 -20
  74. pygeodesy/rhumb/ekx.py +6 -6
  75. pygeodesy/rhumb/solve.py +15 -15
  76. pygeodesy/solveBase.py +3 -3
  77. pygeodesy/sphericalBase.py +6 -6
  78. pygeodesy/sphericalNvector.py +6 -5
  79. pygeodesy/sphericalTrigonometry.py +8 -7
  80. pygeodesy/streprs.py +14 -14
  81. pygeodesy/trf.py +14 -12
  82. pygeodesy/triaxials.py +29 -26
  83. pygeodesy/units.py +5 -4
  84. pygeodesy/unitsBase.py +5 -4
  85. pygeodesy/ups.py +3 -3
  86. pygeodesy/utily.py +4 -4
  87. pygeodesy/utmups.py +4 -4
  88. pygeodesy/utmupsBase.py +110 -18
  89. pygeodesy/vector2d.py +20 -13
  90. pygeodesy/vector3d.py +7 -6
  91. pygeodesy/webmercator.py +6 -5
  92. pygeodesy/wgrs.py +6 -5
  93. {pygeodesy-25.4.8.dist-info → pygeodesy-25.5.5.dist-info}/METADATA +30 -25
  94. pygeodesy-25.5.5.dist-info/RECORD +119 -0
  95. pygeodesy-25.4.8.dist-info/RECORD +0 -118
  96. {pygeodesy-25.4.8.dist-info → pygeodesy-25.5.5.dist-info}/WHEEL +0 -0
  97. {pygeodesy-25.4.8.dist-info → pygeodesy-25.5.5.dist-info}/top_level.txt +0 -0
pygeodesy/vector3d.py CHANGED
@@ -8,12 +8,13 @@ L{trilaterate3d2}.
8
8
  '''
9
9
 
10
10
  from pygeodesy.constants import EPS, EPS0, EPS1, EPS4, INT0, isnear0, \
11
- _0_0, _1_0
11
+ _0_0, _1_0, typename
12
12
  from pygeodesy.errors import IntersectionError, _ValueError, VectorError, \
13
13
  _xattr, _xError, _xkwds, _xkwds_get, _xkwds_item2
14
14
  from pygeodesy.fmath import euclid, fabs, fdot, hypot, sqrt
15
15
  # from pygeodesy.fsums import fsum1_ # from _MODS
16
16
  # from pygeodesy.formy import _radical2 # _MODS
17
+ # from pygeodesy.internals import typename # from .constants
17
18
  from pygeodesy.interns import _COMMA_, _concentric_, _intersection_, \
18
19
  _near_, _negative_, _no_, _too_
19
20
  from pygeodesy.iters import PointsIter, Fmt
@@ -25,13 +26,13 @@ from pygeodesy.namedTuples import Intersection3Tuple, NearestOn2Tuple, \
25
26
  # from pygeodesy.streprs import Fmt # from .iters
26
27
  from pygeodesy.units import _fi_j2, _isDegrees, Radius, Radius_
27
28
  from pygeodesy.utily import atan2b, sincos2d
28
- # import pygeodesy.vector2d as _vector2d # _MODS.into
29
+ # from pygeodesy import vector2d as _vector2d # _MODS.into
29
30
  from pygeodesy.vector3dBase import Vector3dBase
30
31
 
31
32
  # from math import fabs, sqrt # from .fmath
32
33
 
33
34
  __all__ = _ALL_LAZY.vector3d
34
- __version__ = '24.11.22'
35
+ __version__ = '25.04.21'
35
36
 
36
37
  _vector2d = _MODS.into(vector2d=__name__)
37
38
 
@@ -529,7 +530,7 @@ def intersection3d3(start1, end1, start2, end2, eps=EPS, useZ=True,
529
530
  except (TypeError, ValueError) as x:
530
531
  raise _xError(x, start1=start1, end1=end1, start2=start2, end2=end2)
531
532
  v = _nVc(v, **_xkwds(Vector_and_kwds, clas=start1.classof,
532
- name=intersection3d3.__name__))
533
+ name=typename(intersection3d3)))
533
534
  return Intersection3Tuple(v, o1, o2)
534
535
 
535
536
 
@@ -585,7 +586,7 @@ def _intersects2(center1, r1, center2, r2, sphere=True, too_d=None, # in Cartes
585
586
 
586
587
  def _nV3(x, y, z):
587
588
  v = Vector3d(x, y, z)
588
- n = intersections2.__name__
589
+ n = typename(intersections2)
589
590
  return _nVc(v, **_xkwds(clas_Vector_and_kwds, name=n))
590
591
 
591
592
  def _xV3(c1, u, x, y):
@@ -754,7 +755,7 @@ def nearestOn6(point, points, closed=False, useZ=True, **Vector_and_kwds): # ep
754
755
  r = _otherV3d(useZ=useZ, point=point)
755
756
  D2 = r.equirectangular # distance squared
756
757
 
757
- Ps = PointsIter(points, loop=1, name=nearestOn6.__name__)
758
+ Ps = PointsIter(points, loop=1, name=typename(nearestOn6))
758
759
  p1 = c = s = e = _otherV3d(useZ=useZ, i=0, points=Ps[0])
759
760
  c2 = D2(c) # == r.minus(c).length2
760
761
 
pygeodesy/webmercator.py CHANGED
@@ -18,11 +18,12 @@ http://earth-info.nga.mil/GandG/wgs84/web_mercator/(U)%20NGA_SIG_0011_1.0.0_WEBM
18
18
  # make sure int/int division yields float quotient, see .basics
19
19
  from __future__ import division as _; del _ # PYCHOK semicolon
20
20
 
21
- from pygeodesy.basics import _splituple, _xinstanceof
21
+ from pygeodesy.basics import _isin, _splituple, _xinstanceof, typename
22
22
  from pygeodesy.constants import PI_2, R_MA, _2_0
23
23
  from pygeodesy.datums import Datum, _spherical_datum
24
24
  from pygeodesy.dms import clipDegrees, parseDMS2
25
25
  from pygeodesy.errors import _parseX, _ValueError, _xattr, _xkwds, _xkwds_pop2
26
+ # from pygeodesy.internals import typename # from .basics
26
27
  from pygeodesy.interns import NN, _COMMASPACE_, _datum_, _earth_, _easting_, \
27
28
  _northing_, _radius_, _SPACE_, _x_, _y_
28
29
  # from pygeodesy.lazily import _ALL_LAZY from .named
@@ -36,7 +37,7 @@ from pygeodesy.utily import degrees90, degrees180
36
37
  from math import atan, atanh, exp, radians, sin, tanh
37
38
 
38
39
  __all__ = _ALL_LAZY.webmercator
39
- __version__ = '24.11.06'
40
+ __version__ = '25.04.14'
40
41
 
41
42
  # _FalseEasting = 0 # false Easting (C{meter})
42
43
  # _FalseNorthing = 0 # false Northing (C{meter})
@@ -126,7 +127,7 @@ class Wm(_NamedBase):
126
127
 
127
128
  @see: Method C{toLatLon} for other return types.
128
129
  '''
129
- d = self.datum if datum in (None, self.datum, self.radius) else _datum(datum)
130
+ d = self.datum if _isin(datum, None, self.datum, self.radius) else _datum(datum)
130
131
  E = d.ellipsoid
131
132
  R = self.radius
132
133
  x = self.x / R
@@ -240,7 +241,7 @@ class Wm(_NamedBase):
240
241
  fs += (radius,)
241
242
  elif radius: # is True:
242
243
  fs += (self.radius,)
243
- elif radius not in (None, False):
244
+ elif not _isin(radius, None, False):
244
245
  raise WebMercatorError(radius=radius)
245
246
  t = strs(fs, prec=prec)
246
247
  return t if sep is None else sep.join(t)
@@ -257,7 +258,7 @@ class Wm(_NamedBase):
257
258
  '''
258
259
  return self._y
259
260
 
260
- Wm._datum = _spherical_datum(Wm._radius, name=Wm.__name__, raiser=_radius_) # PYCHOK defaults
261
+ Wm._datum = _spherical_datum(Wm._radius, name=typename(Wm), raiser=_radius_) # PYCHOK defaults
261
262
  Wm._earths = (Wm._radius, Wm._datum, Wm._datum.ellipsoid)
262
263
 
263
264
 
pygeodesy/wgrs.py CHANGED
@@ -13,15 +13,16 @@ but with modified C{precision} and extended with C{height} and C{radius}.
13
13
  @see: U{World Geographic Reference System
14
14
  <https://WikiPedia.org/wiki/World_Geographic_Reference_System>}.
15
15
  '''
16
- # from pygeodesy.basics import isstr # from .named
16
+ from pygeodesy.basics import isstr, typename
17
17
  from pygeodesy.constants import INT0, _float, _off90, _0_001, \
18
18
  _0_5, _1_0, _2_0, _60_0, _1000_0
19
19
  from pygeodesy.dms import parse3llh
20
20
  from pygeodesy.errors import _ValueError, _xattr, _xStrError
21
+ # from pygeodesy.internals import typename # from .basics
21
22
  from pygeodesy.interns import NN, _0to9_, _AtoZnoIO_, _COMMA_, \
22
23
  _height_, _INV_, _radius_, _SPACE_
23
24
  from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY
24
- from pygeodesy.named import _name2__, nameof, isstr, Property_RO
25
+ from pygeodesy.named import _name2__, nameof, Property_RO
25
26
  from pygeodesy.namedTuples import LatLon2Tuple, LatLonPrec3Tuple
26
27
  # from pygeodesy.props import Property_RO # from .named
27
28
  from pygeodesy.streprs import Fmt, _0wd
@@ -32,7 +33,7 @@ from pygeodesy.utily import ft2m, m2ft, m2NM
32
33
  from math import floor
33
34
 
34
35
  __all__ = _ALL_LAZY.wgrs
35
- __version__ = '24.11.06'
36
+ __version__ = '25.04.14'
36
37
 
37
38
  _Base = 10
38
39
  _BaseLen = 4
@@ -86,7 +87,7 @@ def _2geostr2(georef):
86
87
  return g, _2Precision(p - 1)
87
88
 
88
89
  except (AttributeError, TypeError, ValueError) as x:
89
- raise WGRSError(Georef.__name__, georef, cause=x)
90
+ raise WGRSError(typename(Georef), georef, cause=x)
90
91
 
91
92
 
92
93
  def _2Precision(precision):
@@ -300,7 +301,7 @@ def decode5(georef, center=True):
300
301
  return Radius(NM / m2NM(1), name=g_n, Error=WGRSError)
301
302
 
302
303
  def _split2(g, Unit, _2m):
303
- n = Unit.__name__
304
+ n = typename(Unit)
304
305
  i = max(g.find(n[0]), g.rfind(n[0]))
305
306
  if i > _BaseLen:
306
307
  return g[:i], _2m(int(g[i+1:]), _SPACE_(georef, n))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pygeodesy
3
- Version: 25.4.8
3
+ Version: 25.5.5
4
4
  Summary: Pure Python geodesy tools
5
5
  Home-page: https://GitHub.com/mrJean1/PyGeodesy
6
6
  Author: Jean M. Brouwers
@@ -8,7 +8,7 @@ Author-email: mrJean1@Gmail.com
8
8
  Maintainer: Jean M. Brouwers
9
9
  Maintainer-email: mrJean1@Gmail.com
10
10
  License: MIT
11
- Keywords: AER Albers altitude Andoyer annulus antipode area attitude Authalic auxiliary azimuth azimuthal azimuth-elevation-range bearing bank Barsky Barth beta bi-quadratic boolean cached Cagnoli cartesian Cassini Cassini-Soldner chord circle-intersections circumcenter circumcircle circumradius clip Cohen Cohen-Sutherland Collins composite conformal conic constants contact-triangle Cook Correia cosines-law coverage curvature cylindrical datum deprecation deficit development discrete distance Douglas earth east-north-up eccentricity ECEF elevation ellipsoid ellipsoidal-latitude-beta ellipsoidal-longitude-omega elliptic ENU EPSG equal-area equidistant equirectangular ETM ETRF Euclidean even-odd-rule ExactTM excess Farrell Farrell-Barth Ferrari-solution Field-Of-View flattening fma fmath footprint Forster Forster-Hormann-Popa Forsythe FOV fractional Frechet Fréchet frustum Fsum fused-multiply-add GARS geocentric GeoConvert GeodesicExact geodesy geodetic GeodSolve GeodTest geographiclib Geohash geoid geoidHeight GeoidHeights georef Girard gnomonic gons grades gradians Greiner Greiner-Hormann Hartzell Hausdorff Haversine heading hectare height Heikkinen Heron Hodgman horizon Hormann Hubeny IDW incenter incirle infix_@_operator inradius intermediate interpolate intersect intersection intersection3d intersections IntersectTool Inverse-Distance-Weighting Isometric ITRF Jacobi Jacobi-Conformal Jarque-Bera Jekel Karney Krueger Krüger kurtosis Lambert latitude law-of-cosines least-squares Lesh L_Huilier LHuilier Liang Liang-Barsky linearize Line-Of-Sight LocalCartesian local-tangent-plane local-x-y-z longitude LOS loxodrome lstsq LTP lune LV03 LV95 mean memoize memoized Mercator Meeus MGRS nearest NED Niemeyer non-finite normalize Norrdine north-east-down numpy n-vector Nvector oblate omega orthographic orthometric-height OSGB OSGR overlap parallel parallel-of-latitude Parametric path-intersection perimeter Peucker Pierlot pitch plumb Point-Of-View polar Popa POV precision-cubic-root precision-hypotenuse precision-powers precision-running-summation precision-square-root precision-summation prolate Pseudo-Mercator pygeodesy PyInstaller PyPy quartic radical radii radius Ramer Ramer-Douglas-Peucker Rectifying Reduced resect resection Rey-Jer Reumann Reumann-Witkam rhumb RhumbSolve running-linear-regression running-statistics running-stats running-summation scipy secant semi-perimeter sexagecimal simplify skewness Snellius Snellius-Pothenot Snyder Soddy Soddy-circles Soldner sphere sphere-intersections spherical-deficit spherical-excess spherical-triangle squared-quartic standard-deviation stereographic Sudano surface-area Sutherland Sutherland-Hodgman tangent-circles Terrestrial-Reference-Frame Thomas Tienstra tilt TMcoords TMExact toise transverse TransverseMercatorExact TRF triangle triangulate triaxial triaxial-ellipsoid trigonometry trilaterate trilaterate-2d trilaterate-3d TwoProduct TwoSum umbilic-point unit unroll UPS UTM UTM/UPS variance velocities Veness Vermeille viewing-frustum Vincenty Visvalingam Visvalingam-Whyatt volume volumetric Web-Mercator Welford WGRS WGS Whyatt Wildberger Witkam winding-number XYZ yaw You zenzi-cubic zenzi-quartic
11
+ Keywords: AER Albers altitude Andoyer annulus antipode area attitude Authalic auxiliary azimuth azimuthal azimuth-elevation-range bearing bank Barsky Barth beta bi-quadratic boolean cached Cagnoli cartesian Cassini Cassini-Soldner chord circle-intersections circumcenter circumcircle circumradius clip Cohen Cohen-Sutherland Collins composite conformal conic constants contact-triangle Cook Correia cosines-law coverage curvature cylindrical datum deprecation deficit development discrete distance Douglas earth east-north-up eccentricity ECEF elevation ellipsoid ellipsoidal-latitude-beta ellipsoidal-longitude-omega elliptic ENU EPSG equal-area equidistant equirectangular ETM ETRF Euclidean even-odd-rule ExactTM excess Farrell Farrell-Barth Ferrari-solution Field-Of-View flattening fma fmath footpoint footprint Forster Forster-Hormann-Popa Forsythe FOV fractional Frechet Fréchet frustum Fsum fused-multiply-add GARS geocentric GeoConvert GeodesicExact geodesy geodetic GeodSolve GeodTest geographiclib Geohash geoid geoidHeight GeoidHeights georef Girard gnomonic gons grades gradians Greiner Greiner-Hormann Hartzell Hausdorff Haversine heading hectare height Heikkinen Heron Hodgman horizon Hormann Hubeny IDW incenter incirle infix_@_operator inradius intermediate interpolate intersect intersection intersection3d intersections IntersectTool Inverse-Distance-Weighting Isometric ITRF Jacobi Jacobi-Conformal Jarque-Bera Jekel Karney Krueger Krüger kurtosis Lambert latitude law-of-cosines least-squares Lesh L_Huilier LHuilier Liang Liang-Barsky linearize Line-Of-Sight LocalCartesian local-tangent-plane local-x-y-z longitude LOS loxodrome lstsq LTP lune LV03 LV95 mean memoize memoized Mercator Meeus MGRS nearest NED Niemeyer non-finite normalize Norrdine north-east-down numpy n-vector Nvector oblate omega orthographic orthometric-height OSGB OSGR overlap parallel parallel-of-latitude Parametric path-intersection perimeter Peucker Pierlot pitch plumb Point-Of-View polar Popa POV precision-cubic-root precision-hypotenuse precision-powers precision-running-summation precision-square-root precision-summation prolate Pseudo-Mercator pygeodesy PyInstaller PyPy quartic radical radii radius Ramer Ramer-Douglas-Peucker Rectifying Reduced resect resection Rey-Jer Reumann Reumann-Witkam rhumb RhumbSolve running-linear-regression running-statistics running-stats running-summation scipy secant semi-perimeter sexagecimal simplify skewness Snellius Snellius-Pothenot Snyder Soddy Soddy-circles Soldner sphere sphere-intersections spherical-deficit spherical-excess spherical-triangle squared-quartic standard-deviation stereographic Sudano surface-area Sutherland Sutherland-Hodgman tangent-circles Terrestrial-Reference-Frame Thomas Tienstra tilt TMcoords TMExact toise transverse TransverseMercatorExact TRF triangle triangulate triaxial triaxial-ellipsoid trigonometry trilaterate trilaterate-2d trilaterate-3d TwoProduct TwoSum umbilic-point unit unroll UPS UTM UTM/UPS variance velocities Veness Vermeille viewing-frustum Vincenty Visvalingam Visvalingam-Whyatt volume volumetric Web-Mercator Welford WGRS WGS Whyatt Wildberger Witkam winding-number XYZ yaw You zenzi-cubic zenzi-quartic
12
12
  Classifier: Development Status :: 5 - Production/Stable
13
13
  Classifier: Environment :: Console
14
14
  Classifier: Intended Audience :: Developers
@@ -28,9 +28,9 @@ Classifier: Topic :: Scientific/Engineering :: GIS
28
28
  PyGeodesy
29
29
  =========
30
30
 
31
- A pure Python implementation of ``geodesy`` tools for various ellipsoidal and spherical
32
- earth models using precision trigonometric, vector-based, exact, elliptic, iterative and
33
- approximate methods for geodetic (lat-/longitude), geocentric (ECEF_ cartesian) and certain
31
+ A pure Python implementation of ``geodesy`` tools for various ellipsoidal and spherical earth
32
+ models using precision exact, elliptic, trigonometric, vector-based, iterative and approximate
33
+ methods for geodetic (lat-/longitude), geocentric (ECEF_ cartesian), local (LTP_) and certain
34
34
  `triaxial ellipsoidal`_ coordinates.
35
35
 
36
36
  Transcoded in part from `JavaScript originals`_ by *Chris Veness (C) 2005-2024* and from several
@@ -42,9 +42,7 @@ provides a geodetic LatLon_ and a geocentric Cartesian_ class with methods and f
42
42
  distance, surface area, perimeter, forward and reverse azimuth, initial and final bearing, intermediate
43
43
  and nearest points, intersections of geodesic, great circle and rhumb lines, circle intersections and
44
44
  secants, `3-point resections`_, triangulation, trilateration (by intersection, by overlap and in
45
- 3d), conversions and unrolling, among other things. For more information and further details see the
46
- documentation_, the descriptions of `Latitude/Longitude`_, Vincenty_ and `Vector-based`_ geodesy, the
47
- original `JavaScript source`_ or docs_ and *Karney*\'s Python geographiclib_ and C++ `GeographicLib.`_
45
+ 3d), conversions and unrolling, among other things.
48
46
 
49
47
  Also included are modules for conversions to and from `Cassini-Soldner`_, ECEF_ (Earth-Centered,
50
48
  Earth-Fixed cartesian), UTM_ (Universal Transverse Mercator and Exact_), UPS_ (Universal Polar
@@ -59,9 +57,14 @@ polygons of *LatLon* points using the `Cohen-Sutherland`_, `Forster-Hormann-Popa
59
57
  `Greiner-Hormann`_, `Liang-Barsky`_ and `Sutherland-Hodgman`_ methods or to perform *boolean*
60
58
  operations between (composite) polygons, functions to simplify_ or linearize a path of *LatLon*
61
59
  points (or a `numpy array`_), including implementations of the `Ramer-Douglas-Peucker`_,
62
- `Visvalingam-Whyatt`_ and `Reumann-Witkam`_ algorithms and modified versions of the former. Other
63
- classes interpolate_ the Height_ of *LatLon* points and Geoid_ models or compute various Fréchet_
64
- or Hausdorff_ distances.
60
+ `Visvalingam-Whyatt`_ and `Reumann-Witkam`_ algorithms and modified versions of the former.
61
+
62
+ Plus modules and classes to interpolate_ the Height_ of *LatLon* points and Geoid_ models, compute
63
+ various Fréchet_ or Hausdorff_ distances or perform *boolean* operations between (composite) polygons.
64
+
65
+ For further details see the documentation_, the descriptions of `Latitude/Longitude`_, Vincenty_ and
66
+ `Vector-based`_ geodesy, the original `JavaScript source`_ or docs_ and *Karney*\'s Python geographiclib_
67
+ and C++ `GeographicLib.`_
65
68
 
66
69
  Installation
67
70
  ============
@@ -82,15 +85,16 @@ before or after installation.
82
85
  Dependencies
83
86
  ============
84
87
 
85
- Installation of *Karney*\'s Python package geographiclib_ is optional, but required to use modules
86
- ``ellipsoidalKarney`` and ``css``, ``azimuthal`` classes ``EquidistantKarney`` and ``GnomonicKarney``
87
- and the ``HeightIDWkarney`` interpolator.
88
+ Installation of *Karney*\'s Python package geographiclib_ is optional, but required for module
89
+ ``ellipsoidalKarney``, ``azimuthal`` classes ``EquidistantKarney`` and ``GnomonicKarney`` and the
90
+ ``HeightIDWkarney`` interpolator.
88
91
 
89
92
  Both numpy_ and scipy_ must be installed for most Geoid_ and Height_ interpolators, except ``GeoidKarney``
90
93
  and the ``HeigthIDW...`` ones.
91
94
 
92
- Functions and ``LatLon`` methods ``circin6``, ``circum3``, ``circum4_``, ``soddy4``, ``trilaterate3d2``
93
- and ``trilaterate5`` do and modules ``auxilats`` and ``rhumb`` may require numpy_.
95
+ Functions and ``LatLon`` methods ``circin6``, ``circum3``, ``circum4_`` and ``soddy4`` and functions
96
+ ``triaxum5`` and ``trilaterate3d2`` require numpy_ to be installed, modules ``auxilats`` and ``rhumb``
97
+ may need numpy_.
94
98
 
95
99
  Modules ``ellipsoidalGeodSolve`` and ``geodsolve`` and ``azimuthal`` classes ``EquidistantGeodSolve``
96
100
  and ``GnomonicGeodSolve`` depend on *Karney*\'s C++ utility GeodSolve_ to be executable and set with
@@ -110,36 +114,36 @@ Documentation
110
114
 
111
115
  In addition to the ``pygeodesy`` package, the pygeodesy_ `distribution files`_ contain the tests, the
112
116
  test results (on macOS only) and the complete documentation_ generated by Epydoc_ using command line:
113
- `epydoc --html --no-private --no-source --name=pygeodesy --url=... -v pygeodesy``.
117
+ ``epydoc --html --no-private --no-source --name=pygeodesy --url=... -v pygeodesy``.
114
118
 
115
119
  Tests
116
120
  =====
117
121
 
118
- The tests ran with Python 3.13.2 (with geographiclib_ 2.0), 3.12.7 (with geographiclib_ 2.0, numpy_ 2.1.0,
122
+ The tests ran with Python 3.13.3 (with geographiclib_ 2.0), 3.12.7 (with geographiclib_ 2.0, numpy_ 2.1.0,
119
123
  scipy_ 1.14.1, GeodSolve_ 2.3, IntersectTool_ 2.3 and RhumbSolve_ 2.3), 3.11.5 (with geographiclib_ 2.0,
120
124
  numpy_ 1.24.2 and scipy_ 1.10.1), Python 3.10.8 (with geographiclib_ 2.0, numpy_ 1.23.3, scipy_ 1.9.1,
121
125
  GeoConvert_ 2.3, GeodSolve_ 2.3), Python 3.9.6 and Python 2.7.18 (with geographiclib_ 1.50, numpy_ 1.16.6,
122
- scipy_ 1.2.2, GeoConvert_ 2.3, GeodSolve_ 2.3, IntersectTool_ 2.3 and RhumbSolve_ 2.3), all on macOS 15.4
126
+ scipy_ 1.2.2, GeoConvert_ 2.3, GeodSolve_ 2.3, IntersectTool_ 2.3 and RhumbSolve_ 2.3), all on macOS 15.4.1
123
127
  Sequoia in 64-bit.
124
128
 
125
129
  All tests ran with and without ``lazy import`` for Python 3 and with command line option ``-W default``
126
130
  and env variable ``PYGEODESY_WARNINGS=on`` for all Python versions. The results of those tests are
127
131
  included in the distribution files.
128
132
 
129
- Python 3.13.2, 3.12.7, 3.11.5 and 3.10.8 run on Apple M1 Silicon (``arm64``), *natively*. Python 2.7.18
130
- runs on Intel (``x86_64``) or Intel *emulation* (\"``arm64_x86_64``\", see function `pygeodesy.machine`_).
133
+ Python 3.13.3, 3.12.7, 3.11.5 and 3.10.8 run on Apple M4 Si (``arm64``), *natively*. Python 2.7.18 runs
134
+ on Intel (``x86_64``) or Intel *emulation* (\"``arm64_x86_64``\", see function `pygeodesy.machine`_).
131
135
 
132
136
  Test coverage has been measured with coverage_ 7.6.1 using Python 3.13.1, 3.12.7, 3.11.5 and 3.10.8. The
133
137
  complete coverage report in HTML and a PDF summary are included in the distribution files.
134
138
 
135
- The tests also ran with Python 3.13.2 (and geographiclib_ 2.0) on `Debian 12`_ in 64-bit only and with
139
+ The tests also ran with Python 3.13.3 (and geographiclib_ 2.0) on `Debian 12`_ in 64-bit only and with
136
140
  Python 3.12.5 (and geographiclib_ 2.0) on `Windows 2019Server`_ in 64-bit only and with Python 2.7.18
137
141
  (and with geographiclib_ 1.52) on `Windows 10`_ in 64- and 32-bit.
138
142
 
139
143
  A single-File and single-Directory application with ``pygeodesy`` has been bundled using PyInstaller_ 3.4
140
144
  and 64-bit Python 3.7.4 and 3.7.3 on macOS 10.13.6 High Sierra.
141
145
 
142
- Previously, the tests were run with Python 3.13.0-1, 3.12.0-6, 3.11.2-4, 3.10.1-7, 3.9.1, 3.8.7, 3.7.1, 2.7.15,
146
+ Previously, the tests were run with Python 3.13.0-2, 3.12.0-6, 3.11.2-4, 3.10.1-7, 3.9.1, 3.8.7, 3.7.1, 2.7.15,
143
147
  PyPy_ 7.3.12 (Python 3.10.12), 7.3.1 (Python 3.6.9) and PyPy_ 7.1.1 (Python 2.7.13) (and geographiclib_ 1.52,
144
148
  numpy_ 1.16.3, 1.16.4, 1.16.6, 1.19.0, 1.19.4, 1.19.5 or 1.22.4 and scipy_ 1.2.1, 1.4.1, 1.5.2 or 1.8.1) on
145
149
  Ubuntu 16.04, with Python 3.10.0-1, 3.9.0-5, 3.8.0-6, 3.7.2-6, 3.7.0, 3.6.2-5, 3.5.3, 2.7.13-17, 2.7.10
@@ -156,11 +160,11 @@ Notes
156
160
  =====
157
161
 
158
162
  All Python source code has been statically checked_ with PyChecker_, PyFlakes_, PyCodeStyle_ (formerly Pep8)
159
- and McCabe_ using Python 2.7.18 and with Flake8_ using Python 3.11.5, both in 64-bit on macOS 15.4 Sequoia.
163
+ and McCabe_ using Python 2.7.18 and with Flake8_ using Python 3.11.5, both in 64-bit on macOS 15.4.1 Sequoia.
160
164
 
161
165
  For a summary of all *Karney*-based functionality in ``pygeodesy``, see module karney_.
162
166
 
163
- *Last updated: Apr 08, 2025.*
167
+ *Last updated: May 05, 2025.*
164
168
 
165
169
  License
166
170
  =======
@@ -240,6 +244,7 @@ DEALINGS IN THE SOFTWARE.
240
244
  .. _Latitude/Longitude: https://www.Movable-Type.co.UK/scripts/latlong.html
241
245
  .. _LatLon: https://mrJean1.GitHub.io/PyGeodesy/docs/pygeodesy-LatLon-attributes-table.html
242
246
  .. _Liang-Barsky: https://www.CS.Helsinki.FI/group/goa/viewing/leikkaus/intro.html
247
+ .. _LTP: https://WikiPedia.org/wiki/Local_tangent_plane_coordinates
243
248
  .. _McCabe: https://PyPI.org/project/mccabe
244
249
  .. _MGRS: https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1MGRS.html
245
250
  .. _MIT License: https://OpenSource.org/licenses/MIT
@@ -0,0 +1,119 @@
1
+ pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
2
+ pygeodesy/__init__.py,sha256=1cRHI-FaZPsi5KdIhQEiEWDfSQ2lNvJKXfwuBL5MLTE,42924
3
+ pygeodesy/__main__.py,sha256=BnU1KifWJNBfUQIWMlvusw9CGz1WrsFSj1Q5zsgPxYw,5436
4
+ pygeodesy/albers.py,sha256=w3Sa6ZYL32Y7ZVzlio0MR-uhxH7fWFaGZQLjpYxCy2E,30904
5
+ pygeodesy/azimuthal.py,sha256=BCsgYdN6ipByPBpHbHcjAPDCV4etgT_HOOx5GneirFo,49858
6
+ pygeodesy/basics.py,sha256=ErpbLgHNerGPKiOIlWKdKzq6lO0dhoZjaywTnCn8PyE,32905
7
+ pygeodesy/booleans.py,sha256=2gd2-NTE_MsFLJd48ErTKtZHLh0xlzyidKqn_XUJ29o,73687
8
+ pygeodesy/cartesianBase.py,sha256=rWKsrTkR7zX-2NRmeMlBZxKBT5MS8e08XJg9EnARwOs,45406
9
+ pygeodesy/clipy.py,sha256=jKv4X36S_-Q6ZFqi87jjd34qGftj7IKgc1shfubk_AM,27783
10
+ pygeodesy/constants.py,sha256=E-hoZug4mJ_b48Nt1E15us2_01mz0XCvDTvNYc8qvRs,19903
11
+ pygeodesy/css.py,sha256=Vn4MSpCagj55L_SM47AVX6V5sPglG17X1JJiU1rW1yA,25797
12
+ pygeodesy/datums.py,sha256=t1hse3wcsZtlt3DA2lBxUN60qq7fT3oDKMp3zNZZ2Sw,34072
13
+ pygeodesy/dms.py,sha256=CKXt2EOYFBluQV5q6cFYppJl3dCvvEB_0E84J0ki6ws,42202
14
+ pygeodesy/ecef.py,sha256=5lQjsyy6Ah-TfmDLD7apme3ARGp30J7lJolqCCeNLpI,59081
15
+ pygeodesy/ecefLocals.py,sha256=zoxGUJeYX2UXzR9r0jaByrvfrrpmrvAhjyQsz433RjA,7794
16
+ pygeodesy/elevations.py,sha256=WrWPZNgkZX9Ys_1ij_gyE4jzdIv85JYAaR2cK3vc4gQ,10879
17
+ pygeodesy/ellipsoidalBase.py,sha256=MEbLpAp_ad8RVLGHGILrZWYH47-3luXlq5tbLYwIfrE,55747
18
+ pygeodesy/ellipsoidalBaseDI.py,sha256=Zqp9csSDea31QkpDAK5TRdJb_Y-WqPwzJwnyOdnHkIc,38511
19
+ pygeodesy/ellipsoidalExact.py,sha256=-f-6kbE-hnO8aNUuSVnvaawwwKp1x76hT2aWCZq7jwo,16972
20
+ pygeodesy/ellipsoidalGeodSolve.py,sha256=wHv9UHYqnoU_PH8zgRJ-kA1-o-7zZLs1-O_zZHSQb1U,16666
21
+ pygeodesy/ellipsoidalKarney.py,sha256=5RfQzNJFq4VklDnr3TRo6kh29rcQ4D7XkXUr_2Zqf38,18721
22
+ pygeodesy/ellipsoidalNvector.py,sha256=8jZu0BdsMFZJOvjWmGMyX9J6ojB3LUsIGdMdmUdmlQY,30179
23
+ pygeodesy/ellipsoidalVincenty.py,sha256=DX7ybwAO9sA-AvQmMhczKlaH0PWPnOOaFVq5a4hCQuY,26175
24
+ pygeodesy/ellipsoids.py,sha256=Yr8CxIEN0e8K4YpQF44oWWCZZ19J-dsgeh16iSYWCeU,107777
25
+ pygeodesy/elliptic.py,sha256=f96i7sGSE4JES97ELnP9kOW1n2sPeOrMoIoonXfBH_I,45024
26
+ pygeodesy/epsg.py,sha256=VIBidzAEuoBF4LdlJ4r3WtpL0Ymhru8kf4fAgfFr5ok,8220
27
+ pygeodesy/errors.py,sha256=stTg7s72LOa9mQYsacnCEUPXPMqeps8EqCwOar5loLg,32043
28
+ pygeodesy/etm.py,sha256=F0E1h5jbvevmodv209KscWpMkaKFFWgKHTkHczYgLcM,46748
29
+ pygeodesy/fmath.py,sha256=eRB7S7KBc0tSAfT0tqDbJIlmVucVRuLrD8nv4UbV6wY,37682
30
+ pygeodesy/formy.py,sha256=SrNeyIBgxHqvuAkMGvJ1aLgRdakI_aZE18xCCMyEBBw,69781
31
+ pygeodesy/frechet.py,sha256=vlZFgM6Sy0C-KWatJrFVbhy2duRub4Ul_iN0JdegM7g,35625
32
+ pygeodesy/fstats.py,sha256=DU8IptDKWgxX7ZvSPsDg7Yl1ytgyLqJdJwJrKzEtTIk,28352
33
+ pygeodesy/fsums.py,sha256=ireaAPAuaoINGzhdvk3F7NhcUeAKdCBvYvdJZH9Eje8,103671
34
+ pygeodesy/gars.py,sha256=rz781bNzRCouCDoozona4-v5o3R8lAePyVkfJIUaHig,11817
35
+ pygeodesy/geodesici.py,sha256=LRCSxoWfq1y1ZvCNWAwCohNUTBpQqn5a-xekm4mKNKo,74873
36
+ pygeodesy/geodesicw.py,sha256=dafScZ4nVuC_vlHXuYlSan32CsIEiL9uNcJYfnY1NtQ,29004
37
+ pygeodesy/geodsolve.py,sha256=fFlyNlkEOpkJaeddEuKwfhtqaZjmVs0egNGM5cwFFoc,29101
38
+ pygeodesy/geohash.py,sha256=1P9-k9sMN-ZVFr2iWbQpFi1lg3uNmChHFCIfETkgFJU,40153
39
+ pygeodesy/geoids.py,sha256=gJRL7yB0LOyk7zEI6HVhg-s8xSPkzQeV6e51FbwzXp8,86143
40
+ pygeodesy/hausdorff.py,sha256=NkLbM4CAvWfhh8047aDEwL7xSBze6A5-Fc46NSNY6IM,32305
41
+ pygeodesy/heights.py,sha256=O__MvCbThyUcKGbIhBrnZsxzAvOchni3rcjx-bjuxwE,41018
42
+ pygeodesy/internals.py,sha256=0jfelLhG50VY0hgy2qzqUvEFDJrcLDfpI_eNs4Go6BI,24028
43
+ pygeodesy/interns.py,sha256=IBM_RuZDmP__4TUx9MLCU3L-Vx5uZz0VBi2eoH0hV44,23467
44
+ pygeodesy/iters.py,sha256=CTWDfdcmqX_wcnz7tnduo1DP9492WtC8gcStyWA4zT8,20345
45
+ pygeodesy/karney.py,sha256=S2h3Tu7QHkxisAvqRkMm2BPfC4MLUTbQXkRohYSokEE,40942
46
+ pygeodesy/ktm.py,sha256=TlWEy6vZ7mGmguELb9-avGCDsYMqAwsMeRxTY4kW-2I,27263
47
+ pygeodesy/latlonBase.py,sha256=bXnfV9vYqESkU-9V_LqF0lTLTcSy6iU3gRZ7n18oJec,75380
48
+ pygeodesy/lazily.py,sha256=kE2WWhIQCk-mKgMe-Rzl3t1DSh8YX_QskTViKlp4yCg,47609
49
+ pygeodesy/lcc.py,sha256=nNriqYMVQJS37FqIttnBUtF6gg4F3gapEoyN3VQGaVE,25794
50
+ pygeodesy/ltp.py,sha256=RaRiPpY9G7JUKKvArROLRes5-uTQrmvtHvATSWBPf5o,50885
51
+ pygeodesy/ltpTuples.py,sha256=t-n7p9A3JCVasv8LKCV4PkOTmXJZi91BkBFm8pBZM5o,59101
52
+ pygeodesy/mgrs.py,sha256=oHkNh1Y2pfhUbrMBjMy9_Uo7s6gu7RJMwAoI8ftpIUI,29866
53
+ pygeodesy/named.py,sha256=NjRLzk0bNSJbPBaqFPjG0UagZj6MarF9O4ZQVQsyV7o,52898
54
+ pygeodesy/namedTuples.py,sha256=dBM93PadrJHkdqe3yinW_Pc7M_5ACYeU6rat5Dwp3Mk,30622
55
+ pygeodesy/nvectorBase.py,sha256=JmUEpcux8RWTFYEHCE4OuKGQN4S3xJvZsCDVFFfCb0c,29958
56
+ pygeodesy/osgr.py,sha256=K7Lg06bBplwUzRMAg0bb0kJxlOcxBPQA3QMXFWRQW7E,30856
57
+ pygeodesy/points.py,sha256=4ip9a84mBxIfiZG-dCLhw1Gno2uvJpQDurYyK-s5C9A,64565
58
+ pygeodesy/props.py,sha256=GrRMnvjiCceap_YEgtPVjc4YKbVRLavZLZTOh0JGlRw,24573
59
+ pygeodesy/resections.py,sha256=GfbVwI_I9YcK6Er1xOynyd6HZAHe6hfBu4Ftnn2KTMo,43682
60
+ pygeodesy/simplify.py,sha256=DRXzd7r5YwEq-6TzbbruZ8SIrrRD8E8G0Iv0B1Jcwlg,22072
61
+ pygeodesy/solveBase.py,sha256=8ss_jPMHf5deMZUILYuulYfG69sj_3UGo1FJTaZpo-k,18495
62
+ pygeodesy/sphericalBase.py,sha256=m28qq9LnhZOyAoWt4-LesWvh6LV_yJlfJ5yUybFYgns,32136
63
+ pygeodesy/sphericalNvector.py,sha256=O6ybbZx6XR6Tz4Pe1uCjWdBgkqmMsCcTH7FaZdY4l3Q,54828
64
+ pygeodesy/sphericalTrigonometry.py,sha256=00sci4AcGUSCmYtJ3hv9d0sXV0cvq6T2AyNzTd41RZ4,64084
65
+ pygeodesy/streprs.py,sha256=-4LErmfPLtGt1tLDBHhJam-zYq8p2Z2C5wDCMELEml4,23599
66
+ pygeodesy/trf.py,sha256=9YTM8JOYx3a3A9JLIReGSu2-Yt7X9buFiMdRkVjneOI,119197
67
+ pygeodesy/triaxials.py,sha256=TX0tTID718T54BGS5a9Z-nZ21FS-uAEQsndr0XK9PCM,64050
68
+ pygeodesy/units.py,sha256=ELmEusLUY70rYteI45OBgrDTp8t5-BUydzLqlDExxPc,35524
69
+ pygeodesy/unitsBase.py,sha256=cVNKG24Fov73gLFPGwGdjvXmM-8fd3MDufVubABAMeE,14141
70
+ pygeodesy/ups.py,sha256=k7MDyq_aKO70m8sEeOCvpFb3nyrBmBdbdPST-UgxgeA,23349
71
+ pygeodesy/utily.py,sha256=SOCnqzXyaGfXDnNnt72uRfE0hYecsTqHoEnK4F8ZBaM,40029
72
+ pygeodesy/utm.py,sha256=kcXliftP9q0nTxviIOixVyvResK2Jydj-G52CXJiSuQ,31123
73
+ pygeodesy/utmups.py,sha256=31RD8l7M-vcRXU9_wnkb_PNUcKjOr1HAmwjOndjkgXE,13176
74
+ pygeodesy/utmupsBase.py,sha256=lcdX177DSvfX62YR_9Yd2RfwMlZmnL1qiCcSYNESmtM,22734
75
+ pygeodesy/vector2d.py,sha256=FiqERP32N75CJfTMP1SuNDP1diq8BkOE3dsGngbSCug,40068
76
+ pygeodesy/vector3d.py,sha256=JpT51Ui1pY6ZSg2I9l1SDdHHXZRZp8ayZtvLRmqIG9w,43030
77
+ pygeodesy/vector3dBase.py,sha256=BHenp3NGpfhVbJ6JMgdNLx6vAcwDWDJIxl9hAdp-AVw,36301
78
+ pygeodesy/webmercator.py,sha256=zveWOHvCJgmfT4xDCYRynB4lC_5YI7xODpJQ59aPzA8,15020
79
+ pygeodesy/wgrs.py,sha256=1MK72g3HsfdsvChM6rBy_auxzSvWHSoer8fEuT4LinI,15503
80
+ pygeodesy/auxilats/_CX_4.py,sha256=DX67nZ1E4nOis8d_wQ8tn5T-SAVNDBJH3kp9IuQc8lM,6830
81
+ pygeodesy/auxilats/_CX_6.py,sha256=T89kMuUijlLZzmqoI8XiTGTOzj4A4SKhCyt_rOroCq4,11278
82
+ pygeodesy/auxilats/_CX_8.py,sha256=Ff_VTStb-dZkGz7-RL1tzymPgPbTwtl_6EzPquPMamc,18900
83
+ pygeodesy/auxilats/_CX_Rs.py,sha256=ltZG0HLRcPImzfto873iUBva4ph5q0McaH0rEyqwLp0,8692
84
+ pygeodesy/auxilats/__init__.py,sha256=g3x06SdwuCPcerCHZRyvwY8xaKR5IxZ1YV3AwTnONNg,2883
85
+ pygeodesy/auxilats/__main__.py,sha256=jH0ShJaDR8zWfoLPXuut37BJbVWVDsAm9rb4xc25XOY,3340
86
+ pygeodesy/auxilats/auxAngle.py,sha256=W-ehCMzmgoEa2FVKAQ8R9iSt6BcqLesE1ZRGKJ7Z-S0,16738
87
+ pygeodesy/auxilats/auxDLat.py,sha256=GnnvcKZY1jG4SWjYOlDqhGemooQmxDXX-jGr5yg89NM,10960
88
+ pygeodesy/auxilats/auxDST.py,sha256=3maal46InF3sRgbh-iQrTm4L11qzfe4gr_S8rh1-faU,10468
89
+ pygeodesy/auxilats/auxLat.py,sha256=koFT_V3SUyxADOvOFSgrXtJqpK71b061bDPUrk2640s,31976
90
+ pygeodesy/auxilats/auxily.py,sha256=UfuTh1gilPCgPIbWjPTl3Xfj_P4f5hvpl6fKgImjxLk,8089
91
+ pygeodesy/deprecated/__init__.py,sha256=ndsBPtmorXG2F4nMuC-wKvR9zIu8GI2WWU3-lkMsTsQ,2815
92
+ pygeodesy/deprecated/bases.py,sha256=f0sgeE4a9yStidTLhaqugv-sbMFjEF7zrlhHbWXN7Dg,1654
93
+ pygeodesy/deprecated/classes.py,sha256=_H9-QnSVA4iLRKwN16FO8WOE51Qin0zNMNb_kSWgnjU,16388
94
+ pygeodesy/deprecated/consterns.py,sha256=RC-YvqQXAEVoIaLnaLrIrA1Mr3oXLk3HT9n1HLvGCSs,1917
95
+ pygeodesy/deprecated/datum.py,sha256=aeY-POZBZrKKiTnrhqOImV5AfiXu2-9Vz8xu_d4ze2g,1910
96
+ pygeodesy/deprecated/functions.py,sha256=mpgYzx_ynbIrfy9WBDfjhNtI-sRx7nKwucyGaxqE10k,15792
97
+ pygeodesy/deprecated/nvector.py,sha256=rttz-znpX2Tm1ttoJt8_E8V_9n_ZciKi_CvvbwFmZQM,2117
98
+ pygeodesy/deprecated/rhumbBase.py,sha256=ptcQnDYAaXZqlVtevRnU5m8xsviqLYzPt6wEfXa-LEE,1375
99
+ pygeodesy/deprecated/rhumbaux.py,sha256=x3d5BsrVRKkNeGxHjVbcuQ74zy5lvJsgvpIdPEOOnQ0,1428
100
+ pygeodesy/deprecated/rhumbsolve.py,sha256=ojLzYUAPra9IXo_-TrnQlbUmkvyI8wa_Fh0VvtQ86ZM,1431
101
+ pygeodesy/deprecated/rhumbx.py,sha256=9GTE8CbsD_vRiAnR13gyquPHRpyiHOhPvCUzs5hfWx8,1425
102
+ pygeodesy/geodesicx/_C4_24.py,sha256=3OkzOxf0DdO1QL4N9CVYjpOgFCm8FcYjCyvcTLpL2wc,90707
103
+ pygeodesy/geodesicx/_C4_27.py,sha256=grqtju94Nu9V_eQPqe_7aRbLCYflxRuK127pPOPwuDA,134215
104
+ pygeodesy/geodesicx/_C4_30.py,sha256=I4ZuTy64yOq1IVgRtc_kqOL0HnKzXeTea7kTFSolcJs,201921
105
+ pygeodesy/geodesicx/__init__.py,sha256=FicWSRbvkBq7sna2Bx2ucSxXZuiPy8H6q16iqjtLSrA,2478
106
+ pygeodesy/geodesicx/__main__.py,sha256=ugi6c-4y91WOMJIL0N-wgXhoGhV90QJIFji2MaIGLiA,4329
107
+ pygeodesy/geodesicx/gx.py,sha256=PsvJ7ozEfZ4OFwG5k48DZeGMmPIF9MeM7EwP-N6Dv1Y,60795
108
+ pygeodesy/geodesicx/gxarea.py,sha256=l0AnshThR0vMwM5Dv4n06d4xvoKo52-wKAjLFm6MK3Q,19465
109
+ pygeodesy/geodesicx/gxbases.py,sha256=EF9IL_oQBSlF70_ROag-DRBoU-ASWKlX-l-wfrUEQYs,6130
110
+ pygeodesy/geodesicx/gxline.py,sha256=9XygwUNt0YQg0FerbW4ySj4K8jO2kFMP1445Au3jRyI,27657
111
+ pygeodesy/rhumb/__init__.py,sha256=DsE5a16CUYWE5YTuo1U8mnDCtykuWw7VeGx23Yny_VU,2207
112
+ pygeodesy/rhumb/aux_.py,sha256=pfCWdJF1NC2YgldbZJV8yKbH8PG-LwJBidEWtV--NV0,16121
113
+ pygeodesy/rhumb/bases.py,sha256=L79xT4njF7YzmndbYi97FdNYQL9bGHvDO2EN3mgnhHc,54277
114
+ pygeodesy/rhumb/ekx.py,sha256=FS9Ex9takqAtUvzXFEwDyEbm5KX2-frNBUD0eDKfu5I,24078
115
+ pygeodesy/rhumb/solve.py,sha256=-kFsue46uXlxb8cTqlKI9OJxo7zFo8zjkwe2BcKtuFY,24012
116
+ pygeodesy-25.5.5.dist-info/METADATA,sha256=mDYIxEur3ltkVAyp6eMthnRTgVhdNc9s1N73X6yoxEk,20086
117
+ pygeodesy-25.5.5.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
118
+ pygeodesy-25.5.5.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
119
+ pygeodesy-25.5.5.dist-info/RECORD,,
@@ -1,118 +0,0 @@
1
- pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
2
- pygeodesy/__init__.py,sha256=Z_ryIynAD_7vuY8HceNUEiQE8OausklxpJ4HWgF0xSY,42654
3
- pygeodesy/__main__.py,sha256=SJ-P17Lpr0_yOQSB9ItjqJzPue35ije8oxHPGS_OZk8,5442
4
- pygeodesy/albers.py,sha256=0pl5e39wacZyEDP7GjHGRx9WXUc_vq36wPUusC7ltLo,30955
5
- pygeodesy/azimuthal.py,sha256=or03e4j4AycZqVpkcsCj_doCFO7tkypB1Fu98tdg_E8,49763
6
- pygeodesy/basics.py,sha256=_zNEdemtgUEfWK9TaAuvFTB90sd4qv7vXavNXq5oe1w,32489
7
- pygeodesy/booleans.py,sha256=RuZ26Hkl_fiDjvcg3FipsKrrB8kcQVYXHTUajPVocRE,73544
8
- pygeodesy/cartesianBase.py,sha256=TPCRRw_Jua7lpnZ29LsIorPAhZ-uEn39y9hAScWnEMQ,45350
9
- pygeodesy/clipy.py,sha256=r2M4Kzu4q95dFzia0w88oFoU9rM5ejwdRZ-aeqdB0JY,27728
10
- pygeodesy/constants.py,sha256=_LHRE9sAYn2YjPjfarhNukFGXNnXrd5VZhBm0euZF-U,19825
11
- pygeodesy/css.py,sha256=g86DBzqNRbeWECY3101fMuBDien8Q4gtc16g83U0hFg,25642
12
- pygeodesy/datums.py,sha256=pdIPv57Fs1sqKe8p8_HOAgyeT1tUQlvwuUsJ3uf5z6Q,34057
13
- pygeodesy/dms.py,sha256=09Yw1w-uxhROlQA8cbActNp4A5n-lvPsVKJZvLnomJM,42174
14
- pygeodesy/ecef.py,sha256=JfbsBHYnFG2yD3w0NnYlo5NJ8TxYsb7H3fuv_tyD48I,59386
15
- pygeodesy/elevations.py,sha256=JMKlXMWzUp4evbCJA7mZX02UuXIr681zHM5knn3ycq0,10801
16
- pygeodesy/ellipsoidalBase.py,sha256=_WxC5rzxZ5IQ0yl3Pm73W4KplbaO5idCD4vKEexYCWY,55111
17
- pygeodesy/ellipsoidalBaseDI.py,sha256=cVAgJ057TAlqa-B4Ho1I1P-mfBFO_kx4WeFM71oUrzU,38243
18
- pygeodesy/ellipsoidalExact.py,sha256=-f-6kbE-hnO8aNUuSVnvaawwwKp1x76hT2aWCZq7jwo,16972
19
- pygeodesy/ellipsoidalGeodSolve.py,sha256=wHv9UHYqnoU_PH8zgRJ-kA1-o-7zZLs1-O_zZHSQb1U,16666
20
- pygeodesy/ellipsoidalKarney.py,sha256=5RfQzNJFq4VklDnr3TRo6kh29rcQ4D7XkXUr_2Zqf38,18721
21
- pygeodesy/ellipsoidalNvector.py,sha256=0Ufhw1Nr_pTIbATpCm2PgtvBDZ0fRPzVyjjDg8dSSrI,30039
22
- pygeodesy/ellipsoidalVincenty.py,sha256=6uxN-8w4U_7zN8wPh85qd8Vr4G72W5NQe9e3eW1Nb_g,25985
23
- pygeodesy/ellipsoids.py,sha256=AiGIy-154FZ1YgDBckV_HM_sS64nmFLmq96tdOEzfz8,106900
24
- pygeodesy/elliptic.py,sha256=s9MZgTK3zl4AQVSans3RjYoDqQ425xU2t2zIyxAFhYM,45003
25
- pygeodesy/epsg.py,sha256=VIBidzAEuoBF4LdlJ4r3WtpL0Ymhru8kf4fAgfFr5ok,8220
26
- pygeodesy/errors.py,sha256=MskMWomF3bVK4orjSmIfVYilLeXGLi1-bcuyqhmBrXc,32098
27
- pygeodesy/etm.py,sha256=WDYsqNN581VyO8eHUo_QI2y4lrf-iqp4HxaeswC_NJI,46733
28
- pygeodesy/fmath.py,sha256=1EOeL-udqh0J8IvUFbFdbOQtISR_pymObndMqK4kNxk,36948
29
- pygeodesy/formy.py,sha256=qXUGFwRn6cAxW7Z9U42c5hVEIhYuVZxdwShqeyfIVVU,69849
30
- pygeodesy/frechet.py,sha256=jOxnFQNI4eL-axq8IiytpUvOXkyOdeVkXIAVZeBbu_M,31765
31
- pygeodesy/fstats.py,sha256=Bt2U_xdJW3Cio7Jn6MdxEJNGWR9VgNE5RLRb3ux5-g4,28288
32
- pygeodesy/fsums.py,sha256=07qoYt7SdjsT1d-mmWVOhyqQFTyna254Rt61G6c66g0,103651
33
- pygeodesy/gars.py,sha256=Np_BKXKptDPeeyuL2fzI-5Tmt0hMYzyZZOm2jqbzUIE,11746
34
- pygeodesy/geodesici.py,sha256=eYEHEmkbtndfXH9_dtphhMGeI9RgqL0PgqmdF7I-Rck,74776
35
- pygeodesy/geodesicw.py,sha256=C4HED2A4V7T9hdY-q4yoalvz5cWiXAoCSRo8iMeSJEE,28774
36
- pygeodesy/geodsolve.py,sha256=BN769RW0D27HL4nM4DRg39rMvz--_gVeK6E2wphZmkw,28989
37
- pygeodesy/geohash.py,sha256=PaZgr-ILeaFOnG4xAQkXC3LC3GrAwgwv2XHMxSjF6qY,40142
38
- pygeodesy/geoids.py,sha256=wmQMzv_HCVFlVKh2VspdyyEknKQC1uANBTX-87byCGA,86131
39
- pygeodesy/hausdorff.py,sha256=idjw0Or_2fxJhGN0jLoV1rX39HXgEOi0XeJaAxwnKck,32137
40
- pygeodesy/heights.py,sha256=u8G9-uD_QxwlYZTc64Z145oche2xtSVb_8wa9GkTKVs,41190
41
- pygeodesy/internals.py,sha256=x5eBAXmuVPR-s0JoNyK9Msq69NkATiPZSgxpTBkWuhY,24338
42
- pygeodesy/interns.py,sha256=qxWUDjRpDwvfbPvUBcLJAPz-fmiAL5GMeyDvr2sm5Gs,23346
43
- pygeodesy/iters.py,sha256=hG4wctuBdr35Zr6u0iDAA-rAH0XR9Diw2ARKwcr-5Aw,20311
44
- pygeodesy/karney.py,sha256=7NP31J4RylIvKuZSHSznaW1ZrwNAqDfRVhs-b9sLw4k,40517
45
- pygeodesy/ktm.py,sha256=axEWse4f3SAbJz-PHoVBEjIJ7JW45reSJeOsPWKcAM0,27247
46
- pygeodesy/latlonBase.py,sha256=c5EkQshey_Wvaxz_7f5cO7JJcrWxPFgbuPtLrnnxq_E,75653
47
- pygeodesy/lazily.py,sha256=WgBIe3o2AjkUN5KYkkkLXvI3tfqsKP1IBsvKIs1DIR0,46917
48
- pygeodesy/lcc.py,sha256=htSplUo-1vXpMKINc2RUKvrMeltUI7RZrfXCFJJIrbI,25671
49
- pygeodesy/ltp.py,sha256=GbalGvmsaxAiwPhzrXcOA-JUmKwTCnYwyA3oFaIJgac,50576
50
- pygeodesy/ltpTuples.py,sha256=EFQOY3Vt76BjVRoPuxn7RheBWhRWzKofiGm43Pnvm2I,58999
51
- pygeodesy/mgrs.py,sha256=jvoyB3_U_EpP4HBoDzTt6V-MoDYC32nOf077w-5txsQ,29819
52
- pygeodesy/named.py,sha256=n8Ly9WZXkgKp9-RUsbzbzBpuWL4D1cIZ-YWgBootkkE,58510
53
- pygeodesy/namedTuples.py,sha256=dBM93PadrJHkdqe3yinW_Pc7M_5ACYeU6rat5Dwp3Mk,30622
54
- pygeodesy/nvectorBase.py,sha256=DF2qWGbcWfqjw9a11BTesLDDYd5bWKQlplOwSntlBJo,29969
55
- pygeodesy/osgr.py,sha256=1TMaToE-7uoVEqHS482pTilDpPWKSj9bgAOVhkx5R_E,30777
56
- pygeodesy/points.py,sha256=WxjsmZNAt7UGWV2OCaGwitwWCsLnp109atxNYJ6ruKw,64389
57
- pygeodesy/props.py,sha256=4_DEjpVsF8awOcBm9bgKPfYT1_kB7kC824EjB5iSbes,24565
58
- pygeodesy/resections.py,sha256=jbtj91Zocvb1fk_gq9VUAmkyZAoYr3xBW0ZlokG5WcI,43603
59
- pygeodesy/simplify.py,sha256=DRXzd7r5YwEq-6TzbbruZ8SIrrRD8E8G0Iv0B1Jcwlg,22072
60
- pygeodesy/solveBase.py,sha256=QjvN3R3AIe24ljRayzslEh41VeMUdp8jHnHPQJGU4QM,18485
61
- pygeodesy/sphericalBase.py,sha256=_-3s4OQFf2otND-6LEZXhvTUq0lgX1Yzl7EUx1c58fA,32110
62
- pygeodesy/sphericalNvector.py,sha256=ujLLfxKSOqTnSNSs_KxtD55odo6p2Q2YcOBby7yTqHQ,54771
63
- pygeodesy/sphericalTrigonometry.py,sha256=XiTwW-xWK2BNh5oi-XX872y-12VUR9KOmrhWvTSzM9U,63989
64
- pygeodesy/streprs.py,sha256=gEYIV5gdUG_gLGSQgvJZAeUnUIu25dgOneneq30ijlg,23573
65
- pygeodesy/trf.py,sha256=4XqTHksjVUnDWySjHsJNVFR15W5woYitq_ELXCnq6oA,119073
66
- pygeodesy/triaxials.py,sha256=GMaap3es1szw052XmJulOAJQ0ibl36NVYKSQyxG_Fwk,63952
67
- pygeodesy/units.py,sha256=Nme99EnQkA831DV4zHJbtJB5naqbnCc097I0xSglEFM,35452
68
- pygeodesy/unitsBase.py,sha256=uiPDOpLdFou3HG2VqlcX5trpvfelNvOdMP8cy9432IE,14060
69
- pygeodesy/ups.py,sha256=GzhE5nMD_flcPsMRAg-3GxlyOp6LNpzPRkXMc3KQC7o,23349
70
- pygeodesy/utily.py,sha256=L8WQOvbcUJDwz3c_YX93oBGVSypKSbNbqjOMtwvFwmU,40017
71
- pygeodesy/utm.py,sha256=kcXliftP9q0nTxviIOixVyvResK2Jydj-G52CXJiSuQ,31123
72
- pygeodesy/utmups.py,sha256=mjdweGi9XaBw9u8nnbjsobd9-JUA-2hydMbe2eNBD7s,13196
73
- pygeodesy/utmupsBase.py,sha256=MPUm9VYLiHjkvHswAH9v32_IhbPVbhTKqELMP-q1mJ0,18730
74
- pygeodesy/vector2d.py,sha256=H9KTc8HLFJUU-hOmKTz1qNt2sDRpOGBoTR6AwuFn53s,39660
75
- pygeodesy/vector3d.py,sha256=VMTtPPq1f-Royez1FqYD8f9TdneZaSo58uRTT5CpaYY,42949
76
- pygeodesy/vector3dBase.py,sha256=BHenp3NGpfhVbJ6JMgdNLx6vAcwDWDJIxl9hAdp-AVw,36301
77
- pygeodesy/webmercator.py,sha256=BuIxFYidm84ilQII-NZs1RWNfSS1tMWmqlM6bCt96pw,14936
78
- pygeodesy/wgrs.py,sha256=gfB-UnQjc738bXjkArHQBlI7vJKhAka53BTDMNuHPjk,15455
79
- pygeodesy/auxilats/_CX_4.py,sha256=XYQuKoZLDmkCL9d5zGmehdV9rCvQrE6owVjotB5D_vU,6829
80
- pygeodesy/auxilats/_CX_6.py,sha256=Z-qnxeASDoPJjxMALC3Uqjcnrr28-7CvNAxjoH32K2s,11277
81
- pygeodesy/auxilats/_CX_8.py,sha256=fdV8el73U1v3xUgUCGHLf4SXhC38DxkSh7LUsmMAqRA,18899
82
- pygeodesy/auxilats/_CX_Rs.py,sha256=gY_gj7YA-0wRzoKK5LkUsSFLUY83LXJ--8oxGeBJSto,8633
83
- pygeodesy/auxilats/__init__.py,sha256=mseuuehR-CbZWuNIHUU0ZMXxDotC1rfW1MbWwKEDcbk,2881
84
- pygeodesy/auxilats/__main__.py,sha256=HJ5_W5bQrYHctYSbAMFxoTS6fB12Wax_H-JNQ80N1Cc,3168
85
- pygeodesy/auxilats/auxAngle.py,sha256=bhtf3mw6HFpatBAlGlRsWNLowJwXdHFLIKKwUdoliqo,16745
86
- pygeodesy/auxilats/auxDLat.py,sha256=GnnvcKZY1jG4SWjYOlDqhGemooQmxDXX-jGr5yg89NM,10960
87
- pygeodesy/auxilats/auxDST.py,sha256=3maal46InF3sRgbh-iQrTm4L11qzfe4gr_S8rh1-faU,10468
88
- pygeodesy/auxilats/auxLat.py,sha256=AAVajtz-mDM4fITt8a49Mn7KQ7Aqx6d8a3aQR_gHu8I,31964
89
- pygeodesy/auxilats/auxily.py,sha256=EHasiYt-_dAPofSHBA0aL2SIcMNDvlPfnHGjcq6IZ7o,7980
90
- pygeodesy/deprecated/__init__.py,sha256=ndsBPtmorXG2F4nMuC-wKvR9zIu8GI2WWU3-lkMsTsQ,2815
91
- pygeodesy/deprecated/bases.py,sha256=ykcmjlPG58xY6sS3M_sLr9pfxrSPuw4oqXvNi811Sog,1655
92
- pygeodesy/deprecated/classes.py,sha256=4IHdSkJrexTK5cI96d94VAFOxAZKx1kwYJLcgAq_erA,16388
93
- pygeodesy/deprecated/consterns.py,sha256=dQGhrSQN-JUHjQDLkLwv_RcfFIDwwu0d-P-wai7sR2g,1908
94
- pygeodesy/deprecated/datum.py,sha256=aeY-POZBZrKKiTnrhqOImV5AfiXu2-9Vz8xu_d4ze2g,1910
95
- pygeodesy/deprecated/functions.py,sha256=mpgYzx_ynbIrfy9WBDfjhNtI-sRx7nKwucyGaxqE10k,15792
96
- pygeodesy/deprecated/nvector.py,sha256=rttz-znpX2Tm1ttoJt8_E8V_9n_ZciKi_CvvbwFmZQM,2117
97
- pygeodesy/deprecated/rhumbBase.py,sha256=ptcQnDYAaXZqlVtevRnU5m8xsviqLYzPt6wEfXa-LEE,1375
98
- pygeodesy/deprecated/rhumbaux.py,sha256=x3d5BsrVRKkNeGxHjVbcuQ74zy5lvJsgvpIdPEOOnQ0,1428
99
- pygeodesy/deprecated/rhumbsolve.py,sha256=ojLzYUAPra9IXo_-TrnQlbUmkvyI8wa_Fh0VvtQ86ZM,1431
100
- pygeodesy/deprecated/rhumbx.py,sha256=9GTE8CbsD_vRiAnR13gyquPHRpyiHOhPvCUzs5hfWx8,1425
101
- pygeodesy/geodesicx/_C4_24.py,sha256=3OkzOxf0DdO1QL4N9CVYjpOgFCm8FcYjCyvcTLpL2wc,90707
102
- pygeodesy/geodesicx/_C4_27.py,sha256=grqtju94Nu9V_eQPqe_7aRbLCYflxRuK127pPOPwuDA,134215
103
- pygeodesy/geodesicx/_C4_30.py,sha256=I4ZuTy64yOq1IVgRtc_kqOL0HnKzXeTea7kTFSolcJs,201921
104
- pygeodesy/geodesicx/__init__.py,sha256=dGVtLErbUtxd2Xt1M_e4wKf6rJoNMWwQmYEN-FZEzUY,2478
105
- pygeodesy/geodesicx/__main__.py,sha256=2U1mGmQX75m6mIPwvcbIrJjWO9RsyCxhVeAxxlfCSH0,4138
106
- pygeodesy/geodesicx/gx.py,sha256=hviRcMq3IUh3sYIdV_zpuLEMhZL7kiALUgv0pl4ObL4,60641
107
- pygeodesy/geodesicx/gxarea.py,sha256=ZnXURCXVdZVir34yNA7gNJdWhDrZ4tzlGKm3Wf4Z3b0,19454
108
- pygeodesy/geodesicx/gxbases.py,sha256=EF9IL_oQBSlF70_ROag-DRBoU-ASWKlX-l-wfrUEQYs,6130
109
- pygeodesy/geodesicx/gxline.py,sha256=Gg9X5j4FCMFlHNxFBIp7ftN85CXUNug5M4bI2w6hudg,27611
110
- pygeodesy/rhumb/__init__.py,sha256=PNAC7yta1lZCVyf4TxGPqRYZvBLEQHC3ubNlUbEUaCY,2207
111
- pygeodesy/rhumb/aux_.py,sha256=4ZEXIjkaWkfEIA-qfCECSfxPeBcCdEACZWOI18LmP4g,16097
112
- pygeodesy/rhumb/bases.py,sha256=UUzUVaDbZF5WgeHdTkQKUg8NQAwe6tGqIrqyxCraMz8,54162
113
- pygeodesy/rhumb/ekx.py,sha256=QWU5muyirMsjbm-lGmgxuO_6snaurOQ-dcF6GrdmffU,24055
114
- pygeodesy/rhumb/solve.py,sha256=PwMWh-TGLj4Pr1g5kIjcK-PfPN-1p26B7QGRbY27_ag,23943
115
- pygeodesy-25.4.8.dist-info/METADATA,sha256=gUGiDXb1d7g0L4XjVKvKNwnTn48JU_bu2JE_XB6-C5Y,19924
116
- pygeodesy-25.4.8.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
117
- pygeodesy-25.4.8.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
118
- pygeodesy-25.4.8.dist-info/RECORD,,