pygeodesy 25.1.9__py2.py3-none-any.whl → 25.4.25__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/__init__.py +35 -31
- pygeodesy/__main__.py +3 -3
- pygeodesy/albers.py +29 -36
- pygeodesy/auxilats/_CX_4.py +2 -2
- pygeodesy/auxilats/_CX_6.py +2 -2
- pygeodesy/auxilats/_CX_8.py +2 -2
- pygeodesy/auxilats/_CX_Rs.py +59 -40
- pygeodesy/auxilats/__init__.py +3 -3
- pygeodesy/auxilats/__main__.py +9 -7
- pygeodesy/auxilats/auxAngle.py +2 -2
- pygeodesy/auxilats/auxLat.py +13 -13
- pygeodesy/auxilats/auxily.py +13 -9
- pygeodesy/azimuthal.py +7 -6
- pygeodesy/basics.py +65 -22
- pygeodesy/booleans.py +12 -10
- pygeodesy/cartesianBase.py +21 -20
- pygeodesy/clipy.py +11 -10
- pygeodesy/constants.py +11 -10
- pygeodesy/css.py +14 -11
- pygeodesy/datums.py +8 -8
- pygeodesy/deprecated/bases.py +2 -2
- pygeodesy/deprecated/classes.py +2 -2
- pygeodesy/deprecated/consterns.py +4 -4
- pygeodesy/dms.py +8 -8
- pygeodesy/ecef.py +10 -7
- pygeodesy/elevations.py +9 -8
- pygeodesy/ellipsoidalBase.py +19 -8
- pygeodesy/ellipsoidalBaseDI.py +17 -15
- pygeodesy/ellipsoidalNvector.py +6 -3
- pygeodesy/ellipsoidalVincenty.py +4 -1
- pygeodesy/ellipsoids.py +167 -138
- pygeodesy/elliptic.py +9 -9
- pygeodesy/errors.py +44 -43
- pygeodesy/etm.py +9 -9
- pygeodesy/fmath.py +10 -9
- pygeodesy/formy.py +11 -12
- pygeodesy/frechet.py +216 -109
- pygeodesy/fstats.py +5 -4
- pygeodesy/fsums.py +107 -122
- pygeodesy/gars.py +7 -7
- pygeodesy/geodesici.py +15 -14
- pygeodesy/geodesicw.py +34 -32
- pygeodesy/geodesicx/__init__.py +1 -1
- pygeodesy/geodesicx/__main__.py +12 -10
- pygeodesy/geodesicx/gx.py +30 -33
- pygeodesy/geodesicx/gxarea.py +2 -2
- pygeodesy/geodesicx/gxline.py +5 -5
- pygeodesy/geodsolve.py +18 -17
- pygeodesy/geohash.py +7 -8
- pygeodesy/geoids.py +35 -34
- pygeodesy/hausdorff.py +17 -13
- pygeodesy/heights.py +2 -4
- pygeodesy/internals.py +31 -46
- pygeodesy/interns.py +12 -9
- pygeodesy/iters.py +8 -8
- pygeodesy/karney.py +73 -66
- pygeodesy/ktm.py +5 -5
- pygeodesy/latlonBase.py +14 -18
- pygeodesy/lazily.py +73 -74
- pygeodesy/lcc.py +11 -9
- pygeodesy/ltp.py +8 -7
- pygeodesy/ltpTuples.py +2 -2
- pygeodesy/mgrs.py +7 -6
- pygeodesy/named.py +47 -31
- pygeodesy/nvectorBase.py +7 -7
- pygeodesy/osgr.py +9 -8
- pygeodesy/points.py +12 -10
- pygeodesy/props.py +25 -25
- pygeodesy/resections.py +11 -10
- pygeodesy/rhumb/__init__.py +1 -1
- pygeodesy/rhumb/aux_.py +14 -14
- pygeodesy/rhumb/bases.py +22 -20
- pygeodesy/rhumb/ekx.py +6 -6
- pygeodesy/rhumb/solve.py +15 -15
- pygeodesy/solveBase.py +3 -3
- pygeodesy/sphericalBase.py +6 -6
- pygeodesy/sphericalNvector.py +6 -5
- pygeodesy/sphericalTrigonometry.py +8 -7
- pygeodesy/streprs.py +14 -14
- pygeodesy/trf.py +14 -12
- pygeodesy/triaxials.py +29 -26
- pygeodesy/units.py +5 -4
- pygeodesy/unitsBase.py +5 -4
- pygeodesy/ups.py +3 -3
- pygeodesy/utily.py +4 -4
- pygeodesy/utmups.py +4 -4
- pygeodesy/utmupsBase.py +88 -18
- pygeodesy/vector2d.py +18 -11
- pygeodesy/vector3d.py +7 -6
- pygeodesy/webmercator.py +6 -5
- pygeodesy/wgrs.py +6 -5
- {pygeodesy-25.1.9.dist-info → pygeodesy-25.4.25.dist-info}/METADATA +35 -31
- pygeodesy-25.4.25.dist-info/RECORD +118 -0
- pygeodesy-25.1.9.dist-info/RECORD +0 -118
- {pygeodesy-25.1.9.dist-info → pygeodesy-25.4.25.dist-info}/WHEEL +0 -0
- {pygeodesy-25.1.9.dist-info → pygeodesy-25.4.25.dist-info}/top_level.txt +0 -0
pygeodesy/vector2d.py
CHANGED
|
@@ -2,11 +2,15 @@
|
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
3
|
|
|
4
4
|
u'''2- or 3-D vectorial functions L{circin6}, L{circum3}, L{circum4_},
|
|
5
|
-
L{iscolinearWith}, L{meeus2}, L{nearestOn}, L{radii11}, L{soddy4}
|
|
6
|
-
L{trilaterate2d2}.
|
|
5
|
+
L{iscolinearWith}, L{meeus2}, L{nearestOn}, L{radii11}, L{soddy4},
|
|
6
|
+
L{triaxum5} and L{trilaterate2d2}.
|
|
7
|
+
|
|
8
|
+
@note: Functions L{circin6}, L{circum3}, L{circum4_}, L{soddy4} and
|
|
9
|
+
L{triaxum5} require U{numpyhttps://PyPI.org/project/numpy>}
|
|
10
|
+
version 1.10 or newer to be installed.
|
|
7
11
|
'''
|
|
8
12
|
|
|
9
|
-
from pygeodesy.basics import len2, map2, _xnumpy
|
|
13
|
+
from pygeodesy.basics import len2, map2, _xnumpy, typename
|
|
10
14
|
from pygeodesy.constants import EPS, EPS0, EPS02, EPS4, INF, INT0, \
|
|
11
15
|
_EPS4e8, isnear0, _0_0, _0_25, _0_5, _N_0_5, \
|
|
12
16
|
_1_0, _1_0_1T, _N_1_0, _2_0, _N_2_0, _4_0
|
|
@@ -14,6 +18,7 @@ from pygeodesy.errors import _and, _AssertionError, IntersectionError, NumPyErro
|
|
|
14
18
|
PointsError, TriangleError, _xError, _xkwds
|
|
15
19
|
from pygeodesy.fmath import fabs, fdot, fdot_, hypot, hypot2_, sqrt
|
|
16
20
|
from pygeodesy.fsums import _Fsumf_, fsumf_, fsum1f_
|
|
21
|
+
# from pygeodesy.internals import typename # from .basics
|
|
17
22
|
from pygeodesy.interns import NN, _a_, _and_, _b_, _c_, _center_, _coincident_, \
|
|
18
23
|
_colinear_, _COMMASPACE_, _concentric_, _few_, \
|
|
19
24
|
_intersection_, _invalid_, _near_, _no_, _of_, \
|
|
@@ -31,7 +36,7 @@ from contextlib import contextmanager
|
|
|
31
36
|
# from math import fabs, sqrt # from .fmath
|
|
32
37
|
|
|
33
38
|
__all__ = _ALL_LAZY.vector2d
|
|
34
|
-
__version__ = '
|
|
39
|
+
__version__ = '25.04.16'
|
|
35
40
|
|
|
36
41
|
_cA_ = 'cA'
|
|
37
42
|
_cB_ = 'cB'
|
|
@@ -184,7 +189,7 @@ def _circin6(point1, point2, point3, eps=EPS4, useZ=True, dLL3=False, **Vector_k
|
|
|
184
189
|
|
|
185
190
|
r = t.rIn
|
|
186
191
|
c, d = _tricenter3d2(c1, r, c2, r, c3, r, eps=eps, useZ=useZ, dLL3=dLL3,
|
|
187
|
-
**_xkwds(Vector_kwds, Vector=V, name=circin6
|
|
192
|
+
**_xkwds(Vector_kwds, Vector=V, name=typename(circin6)))
|
|
188
193
|
return Circin6Tuple(r, c, d, cA, cB, cC)
|
|
189
194
|
|
|
190
195
|
|
|
@@ -236,7 +241,7 @@ def _circum3(p1, point2, point3, circum=True, eps=EPS4, useZ=True, dLL3=False,
|
|
|
236
241
|
r, d, p2, p3 = _meeus4(p1, point2, point3, circum=circum, useZ=useZ,
|
|
237
242
|
clas=clas, **clas_kwds)
|
|
238
243
|
if d is None: # Meeus' Type II or circum=True
|
|
239
|
-
kwds = _xkwds(clas_kwds, eps=eps, Vector=clas, name=circum3
|
|
244
|
+
kwds = _xkwds(clas_kwds, eps=eps, Vector=clas, name=typename(circum3))
|
|
240
245
|
c, d = _tricenter3d2(p1, r, p2, r, p3, r, useZ=useZ, dLL3=dLL3, **kwds)
|
|
241
246
|
else: # Meeus' Type I
|
|
242
247
|
c, d = d, None
|
|
@@ -386,7 +391,7 @@ def _meeus4(A, point2, point3, circum=False, useZ=True, clas=None, **clas_kwds):
|
|
|
386
391
|
r = sqrt(a * _0_25) if a > EPS02 else INT0
|
|
387
392
|
t = B.plus(C).times(_0_5) # Meeus' Type I
|
|
388
393
|
if clas is not None:
|
|
389
|
-
t = clas(t.x, t.y, t.z, **_xkwds(clas_kwds, name=meeus2
|
|
394
|
+
t = clas(t.x, t.y, t.z, **_xkwds(clas_kwds, name=typename(meeus2)))
|
|
390
395
|
return r, t, p2, p3
|
|
391
396
|
|
|
392
397
|
|
|
@@ -410,6 +415,8 @@ class _numpy(object): # see also .formy._idllmn6, .geodesicw._wargs, .latlonBas
|
|
|
410
415
|
|
|
411
416
|
@Property_RO
|
|
412
417
|
def array(self):
|
|
418
|
+
'''Get U{numpy.array<https://NumPy.org/doc/2.2/reference/generated/numpy.array.html#numpy.array>}.
|
|
419
|
+
'''
|
|
413
420
|
return self.np.array
|
|
414
421
|
|
|
415
422
|
def least_squares3(self, A, b):
|
|
@@ -595,7 +602,7 @@ def soddy4(point1, point2, point3, eps=EPS4, useZ=True):
|
|
|
595
602
|
c, d = _tricenter3d2(p1, t.rA + r,
|
|
596
603
|
p2, t.rB + r,
|
|
597
604
|
p3, t.rC + r, eps=eps, useZ=useZ,
|
|
598
|
-
Vector=point1.classof, name=soddy4
|
|
605
|
+
Vector=point1.classof, name=typename(soddy4))
|
|
599
606
|
return Soddy4Tuple(r, c, d, t.roS)
|
|
600
607
|
|
|
601
608
|
|
|
@@ -749,7 +756,7 @@ def _trilaterate2d2(x1, y1, radius1, x2, y2, radius2, x3, y3, radius3,
|
|
|
749
756
|
_astr(x2=x2, y2=y2, radius2=r2),
|
|
750
757
|
_astr(x3=x3, y3=y3, radius3=r3)), txt=t)
|
|
751
758
|
t = Vector2Tuple(fdot_(c, e, -b, f) / q,
|
|
752
|
-
fdot_(a, f, -c, d) / q, name=trilaterate2d2
|
|
759
|
+
fdot_(a, f, -c, d) / q, name=typename(trilaterate2d2))
|
|
753
760
|
|
|
754
761
|
if eps and eps > 0: # check distances to center vs radius
|
|
755
762
|
for x, y, r in ((x1, y1, r1), (x2, y2, r2), (x3, y3, r3)):
|
|
@@ -784,7 +791,7 @@ def _trilaterate3d2(c1, r1, c2, r2, c3, r3, eps=EPS4, coin=False, # MCCABE 13
|
|
|
784
791
|
def _N3(t01, x, z):
|
|
785
792
|
# compute x, y and z and return as B{C{clas}} or B{C{Vector}}
|
|
786
793
|
v = x.plus(z.times(t01))
|
|
787
|
-
n = trilaterate3d2
|
|
794
|
+
n = typename(trilaterate3d2)
|
|
788
795
|
return _nVc(v, **_xkwds(clas_Vector_and_kwds, name=n))
|
|
789
796
|
|
|
790
797
|
c2 = _otherV3d(center2=c2, NN_OK=False)
|
|
@@ -828,7 +835,7 @@ def _trilaterate3d2(c1, r1, c2, r2, c3, r3, eps=EPS4, coin=False, # MCCABE 13
|
|
|
828
835
|
r = repr(r1) if r1 == r2 == r3 else _reprs(r1, r2, r3)
|
|
829
836
|
t = _SPACE_(t, _of_, _reprs(c1, c2, c3), _with_, _radius_, r)
|
|
830
837
|
elif Z is None:
|
|
831
|
-
t = _COMMASPACE_(t, _no_(_numpy.null_space2
|
|
838
|
+
t = _COMMASPACE_(t, _no_(typename(_numpy.null_space2)))
|
|
832
839
|
return t
|
|
833
840
|
|
|
834
841
|
# coincident, concentric, colinear, too distant, no intersection:
|
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
|
|
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__ = '
|
|
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
|
|
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
|
|
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
|
|
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__ = '
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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,
|
|
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__ = '
|
|
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
|
|
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
|
|
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.
|
|
3
|
+
Version: 25.4.25
|
|
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
|
|
@@ -29,7 +29,7 @@ PyGeodesy
|
|
|
29
29
|
=========
|
|
30
30
|
|
|
31
31
|
A pure Python implementation of ``geodesy`` tools for various ellipsoidal and spherical
|
|
32
|
-
earth models using precision trigonometric, vector-based,
|
|
32
|
+
earth models using precision exact, elliptic, trigonometric, vector-based, iterative and
|
|
33
33
|
approximate methods for geodetic (lat-/longitude), geocentric (ECEF_ cartesian) and certain
|
|
34
34
|
`triaxial ellipsoidal`_ coordinates.
|
|
35
35
|
|
|
@@ -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.
|
|
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,14 +57,19 @@ 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.
|
|
63
|
-
|
|
64
|
-
|
|
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
|
============
|
|
68
71
|
|
|
69
|
-
To install
|
|
72
|
+
To install ``pygeodesy``, type ``python[3] -m pip install pygeodesy`` or ``python[3] -m easy_install pygeodesy``
|
|
70
73
|
in a terminal or command window.
|
|
71
74
|
|
|
72
75
|
If the wheel ``pygeodesy-yy.m.d-py2.py3-none-any.whl`` is missing in `PyPI Download files`_, download
|
|
@@ -76,21 +79,22 @@ and verify with ``python[3] -m pygeodesy``.
|
|
|
76
79
|
Alternatively, download ``pygeodesy-yy.m.d.tar.gz`` from PyPI_ or GitHub_, ``unzip`` the downloaded file,
|
|
77
80
|
``cd`` to directory ``pygeodesy-yy.m.d`` and type ``python[3] setup.py install``.
|
|
78
81
|
|
|
79
|
-
To run all
|
|
82
|
+
To run all ``pygeodesy`` tests, type ``python[3] test/run.py`` or type ``python[3] test/unitTestSuite.py``
|
|
80
83
|
before or after installation.
|
|
81
84
|
|
|
82
85
|
Dependencies
|
|
83
86
|
============
|
|
84
87
|
|
|
85
|
-
Installation of *Karney*\'s Python package geographiclib_ is optional, but required
|
|
86
|
-
``ellipsoidalKarney
|
|
87
|
-
|
|
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_
|
|
93
|
-
and ``
|
|
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
|
|
@@ -108,44 +112,44 @@ variable ``PYGEODESY_RHUMBSOLVE`` or with property ``Ellipsoid.rhumbsolve``.
|
|
|
108
112
|
Documentation
|
|
109
113
|
=============
|
|
110
114
|
|
|
111
|
-
In addition to the ``pygeodesy`` package, the
|
|
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
|
-
|
|
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.
|
|
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
|
|
123
|
-
|
|
126
|
+
scipy_ 1.2.2, GeoConvert_ 2.3, GeodSolve_ 2.3, IntersectTool_ 2.3 and RhumbSolve_ 2.3), all on macOS 15.4.1
|
|
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.
|
|
130
|
-
|
|
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.
|
|
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, 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
|
|
146
150
|
and 2.6.9 (and numpy_ 1.19.0, 1.16.5, 1.16.2, 1.15.2, 1.14.0, 1.13.1, 1.8.0rc1 or 1.6.2 and scipy_ 1.5.0),
|
|
147
151
|
PyPy_ 7.3.0 (Python 2.7.13 and 3.6.9), PyPy_ 6.0.0 (Python 2.7.13 and 3.5.3) and `Intel-Python`_ 3.5.3 (and
|
|
148
|
-
numpy_ 1.11.3) on macOS 14.0-
|
|
152
|
+
numpy_ 1.11.3) on macOS 14.0-6.1 Sonoma, 13.0-5.2 Ventura, 12.1-6 Monterey, 11.0-5.2-6.1 Big Sur (aka 10.16),
|
|
149
153
|
10.15.3, 10.15.5-7 Catalina, 10.14 Mojave, 10.13.6 High Sierra and 10.12 Sierra, MacOS X 10.11 El Capitan
|
|
150
154
|
and/or MacOS X 10.10 Yosemite, with Pythonista_ 3.2 (with geographiclib 1.50 or 1.49 and numpy 1.8.0) on
|
|
151
155
|
iOS 14.4.2, 11.4.1, 12.0-3 on iPad4, iPhone6, iPhone10 and/or iPhone12, with Pythonista_ 3.1 on iOS 10.3.3,
|
|
@@ -156,16 +160,16 @@ 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
|
|
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:
|
|
167
|
+
*Last updated: Apr 25, 2025.*
|
|
164
168
|
|
|
165
169
|
License
|
|
166
170
|
=======
|
|
167
171
|
|
|
168
|
-
Copyright (C) 2016-2025
|
|
172
|
+
**Copyright (C) 2016-2025 -\- mrJean1 at Gmail -\- All Rights Reserved.**
|
|
169
173
|
|
|
170
174
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
|
171
175
|
documentation files (the "Software"), to deal in the Software without restriction, including without limitation
|
|
@@ -175,7 +179,7 @@ to permit persons to whom the Software is furnished to do so, subject to the fol
|
|
|
175
179
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions
|
|
176
180
|
of the Software.
|
|
177
181
|
|
|
178
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
|
182
|
+
THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
|
179
183
|
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
180
184
|
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
|
181
185
|
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
@@ -250,7 +254,7 @@ DEALINGS IN THE SOFTWARE.
|
|
|
250
254
|
.. _PyChecker: https://PyPI.org/project/pychecker
|
|
251
255
|
.. _PyCodeStyle: https://PyPI.org/project/pycodestyle
|
|
252
256
|
.. _PyFlakes: https://PyPI.org/project/pyflakes
|
|
253
|
-
..
|
|
257
|
+
.. _pygeodesy: https://PyPI.org/project/pygeodesy
|
|
254
258
|
.. _pygeodesy.machine: https://mrJean1.GitHub.io/PyGeodesy/docs/pygeodesy.internals-module.html#machine
|
|
255
259
|
.. _PyInstaller: https://PyPI.org/project/pyinstaller
|
|
256
260
|
.. _PyPI: https://PyPI.org/project/pygeodesy
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
|
|
2
|
+
pygeodesy/__init__.py,sha256=aOldDh1CtFDOsPeV2WdEhIl-RhvRqUhSli-Ubv1hH7Q,42691
|
|
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=Of985_FBbrHOZphlyzWzoEToawOfOzoORFrcEk8c5Mg,32869
|
|
7
|
+
pygeodesy/booleans.py,sha256=L0R69JX2qnUsjZD5vsvbO0ku4eaY5lUp09QP8c6Qul0,73655
|
|
8
|
+
pygeodesy/cartesianBase.py,sha256=MaBqmqxT2iseYeL-PgPbQpt8pRkSVrIr0RB18Pw6mNA,45338
|
|
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=DPeWFAcyQto7ltdhs1lDtcTK6krc3FGqT42xqvLgD54,59497
|
|
15
|
+
pygeodesy/elevations.py,sha256=WrWPZNgkZX9Ys_1ij_gyE4jzdIv85JYAaR2cK3vc4gQ,10879
|
|
16
|
+
pygeodesy/ellipsoidalBase.py,sha256=MEbLpAp_ad8RVLGHGILrZWYH47-3luXlq5tbLYwIfrE,55747
|
|
17
|
+
pygeodesy/ellipsoidalBaseDI.py,sha256=Zqp9csSDea31QkpDAK5TRdJb_Y-WqPwzJwnyOdnHkIc,38511
|
|
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=8jZu0BdsMFZJOvjWmGMyX9J6ojB3LUsIGdMdmUdmlQY,30179
|
|
22
|
+
pygeodesy/ellipsoidalVincenty.py,sha256=DX7ybwAO9sA-AvQmMhczKlaH0PWPnOOaFVq5a4hCQuY,26175
|
|
23
|
+
pygeodesy/ellipsoids.py,sha256=6O9ErqdbfCqNBTeLXe5tXuNmlJO4d-HuAk76fscT174,108032
|
|
24
|
+
pygeodesy/elliptic.py,sha256=f96i7sGSE4JES97ELnP9kOW1n2sPeOrMoIoonXfBH_I,45024
|
|
25
|
+
pygeodesy/epsg.py,sha256=VIBidzAEuoBF4LdlJ4r3WtpL0Ymhru8kf4fAgfFr5ok,8220
|
|
26
|
+
pygeodesy/errors.py,sha256=stTg7s72LOa9mQYsacnCEUPXPMqeps8EqCwOar5loLg,32043
|
|
27
|
+
pygeodesy/etm.py,sha256=F0E1h5jbvevmodv209KscWpMkaKFFWgKHTkHczYgLcM,46748
|
|
28
|
+
pygeodesy/fmath.py,sha256=rD7oauttd_ss0H1wkJqVZvTlFb7qCk1iPBTPsEdsG2g,37101
|
|
29
|
+
pygeodesy/formy.py,sha256=SrNeyIBgxHqvuAkMGvJ1aLgRdakI_aZE18xCCMyEBBw,69781
|
|
30
|
+
pygeodesy/frechet.py,sha256=vlZFgM6Sy0C-KWatJrFVbhy2duRub4Ul_iN0JdegM7g,35625
|
|
31
|
+
pygeodesy/fstats.py,sha256=DU8IptDKWgxX7ZvSPsDg7Yl1ytgyLqJdJwJrKzEtTIk,28352
|
|
32
|
+
pygeodesy/fsums.py,sha256=ztbuhwgB-mXxh3OJ4W6vt_f-cj3qenPRQp1TTeQihwI,103659
|
|
33
|
+
pygeodesy/gars.py,sha256=rz781bNzRCouCDoozona4-v5o3R8lAePyVkfJIUaHig,11817
|
|
34
|
+
pygeodesy/geodesici.py,sha256=LRCSxoWfq1y1ZvCNWAwCohNUTBpQqn5a-xekm4mKNKo,74873
|
|
35
|
+
pygeodesy/geodesicw.py,sha256=dafScZ4nVuC_vlHXuYlSan32CsIEiL9uNcJYfnY1NtQ,29004
|
|
36
|
+
pygeodesy/geodsolve.py,sha256=fFlyNlkEOpkJaeddEuKwfhtqaZjmVs0egNGM5cwFFoc,29101
|
|
37
|
+
pygeodesy/geohash.py,sha256=1P9-k9sMN-ZVFr2iWbQpFi1lg3uNmChHFCIfETkgFJU,40153
|
|
38
|
+
pygeodesy/geoids.py,sha256=gJRL7yB0LOyk7zEI6HVhg-s8xSPkzQeV6e51FbwzXp8,86143
|
|
39
|
+
pygeodesy/hausdorff.py,sha256=NkLbM4CAvWfhh8047aDEwL7xSBze6A5-Fc46NSNY6IM,32305
|
|
40
|
+
pygeodesy/heights.py,sha256=O__MvCbThyUcKGbIhBrnZsxzAvOchni3rcjx-bjuxwE,41018
|
|
41
|
+
pygeodesy/internals.py,sha256=0jfelLhG50VY0hgy2qzqUvEFDJrcLDfpI_eNs4Go6BI,24028
|
|
42
|
+
pygeodesy/interns.py,sha256=IBM_RuZDmP__4TUx9MLCU3L-Vx5uZz0VBi2eoH0hV44,23467
|
|
43
|
+
pygeodesy/iters.py,sha256=CTWDfdcmqX_wcnz7tnduo1DP9492WtC8gcStyWA4zT8,20345
|
|
44
|
+
pygeodesy/karney.py,sha256=S2h3Tu7QHkxisAvqRkMm2BPfC4MLUTbQXkRohYSokEE,40942
|
|
45
|
+
pygeodesy/ktm.py,sha256=TlWEy6vZ7mGmguELb9-avGCDsYMqAwsMeRxTY4kW-2I,27263
|
|
46
|
+
pygeodesy/latlonBase.py,sha256=AHH_mDqcAZ5eb6sLaAAkd9pdwduRtz90L9qmciWqjJU,75297
|
|
47
|
+
pygeodesy/lazily.py,sha256=yUHsS45kbcAIDmOzK7Ft0ze_G04u2ZRlRjfZPDG0a1o,46985
|
|
48
|
+
pygeodesy/lcc.py,sha256=nNriqYMVQJS37FqIttnBUtF6gg4F3gapEoyN3VQGaVE,25794
|
|
49
|
+
pygeodesy/ltp.py,sha256=Gr2pYxuI7p_VhkcR4PwilSt0PirgkXSvTdg7heURUMQ,50657
|
|
50
|
+
pygeodesy/ltpTuples.py,sha256=b2-luntHWAS6L1HITaTPhBh4c2Rxem2_4-TdScPz0qI,59008
|
|
51
|
+
pygeodesy/mgrs.py,sha256=oHkNh1Y2pfhUbrMBjMy9_Uo7s6gu7RJMwAoI8ftpIUI,29866
|
|
52
|
+
pygeodesy/named.py,sha256=xPb0JgoGgmD911RCcAzkuGKZ2rkFT15hvbLHTpaeH8k,58849
|
|
53
|
+
pygeodesy/namedTuples.py,sha256=dBM93PadrJHkdqe3yinW_Pc7M_5ACYeU6rat5Dwp3Mk,30622
|
|
54
|
+
pygeodesy/nvectorBase.py,sha256=JmUEpcux8RWTFYEHCE4OuKGQN4S3xJvZsCDVFFfCb0c,29958
|
|
55
|
+
pygeodesy/osgr.py,sha256=K7Lg06bBplwUzRMAg0bb0kJxlOcxBPQA3QMXFWRQW7E,30856
|
|
56
|
+
pygeodesy/points.py,sha256=4ip9a84mBxIfiZG-dCLhw1Gno2uvJpQDurYyK-s5C9A,64565
|
|
57
|
+
pygeodesy/props.py,sha256=GrRMnvjiCceap_YEgtPVjc4YKbVRLavZLZTOh0JGlRw,24573
|
|
58
|
+
pygeodesy/resections.py,sha256=wtIbqNdJBu46YzrRKEzM-vLNGVkZUruEIlT4T6Dc88I,43680
|
|
59
|
+
pygeodesy/simplify.py,sha256=DRXzd7r5YwEq-6TzbbruZ8SIrrRD8E8G0Iv0B1Jcwlg,22072
|
|
60
|
+
pygeodesy/solveBase.py,sha256=8ss_jPMHf5deMZUILYuulYfG69sj_3UGo1FJTaZpo-k,18495
|
|
61
|
+
pygeodesy/sphericalBase.py,sha256=m28qq9LnhZOyAoWt4-LesWvh6LV_yJlfJ5yUybFYgns,32136
|
|
62
|
+
pygeodesy/sphericalNvector.py,sha256=O6ybbZx6XR6Tz4Pe1uCjWdBgkqmMsCcTH7FaZdY4l3Q,54828
|
|
63
|
+
pygeodesy/sphericalTrigonometry.py,sha256=00sci4AcGUSCmYtJ3hv9d0sXV0cvq6T2AyNzTd41RZ4,64084
|
|
64
|
+
pygeodesy/streprs.py,sha256=-4LErmfPLtGt1tLDBHhJam-zYq8p2Z2C5wDCMELEml4,23599
|
|
65
|
+
pygeodesy/trf.py,sha256=9YTM8JOYx3a3A9JLIReGSu2-Yt7X9buFiMdRkVjneOI,119197
|
|
66
|
+
pygeodesy/triaxials.py,sha256=TX0tTID718T54BGS5a9Z-nZ21FS-uAEQsndr0XK9PCM,64050
|
|
67
|
+
pygeodesy/units.py,sha256=ELmEusLUY70rYteI45OBgrDTp8t5-BUydzLqlDExxPc,35524
|
|
68
|
+
pygeodesy/unitsBase.py,sha256=cVNKG24Fov73gLFPGwGdjvXmM-8fd3MDufVubABAMeE,14141
|
|
69
|
+
pygeodesy/ups.py,sha256=k7MDyq_aKO70m8sEeOCvpFb3nyrBmBdbdPST-UgxgeA,23349
|
|
70
|
+
pygeodesy/utily.py,sha256=SOCnqzXyaGfXDnNnt72uRfE0hYecsTqHoEnK4F8ZBaM,40029
|
|
71
|
+
pygeodesy/utm.py,sha256=kcXliftP9q0nTxviIOixVyvResK2Jydj-G52CXJiSuQ,31123
|
|
72
|
+
pygeodesy/utmups.py,sha256=31RD8l7M-vcRXU9_wnkb_PNUcKjOr1HAmwjOndjkgXE,13176
|
|
73
|
+
pygeodesy/utmupsBase.py,sha256=AWevano4q2eR15mcfFcd7Xd6hufQy4M1BAC6qT7g18A,21667
|
|
74
|
+
pygeodesy/vector2d.py,sha256=wCg0fGXBk4RtxSRrduteY7Yoz0Ss3ritgMfaFGrpT14,40051
|
|
75
|
+
pygeodesy/vector3d.py,sha256=JpT51Ui1pY6ZSg2I9l1SDdHHXZRZp8ayZtvLRmqIG9w,43030
|
|
76
|
+
pygeodesy/vector3dBase.py,sha256=BHenp3NGpfhVbJ6JMgdNLx6vAcwDWDJIxl9hAdp-AVw,36301
|
|
77
|
+
pygeodesy/webmercator.py,sha256=zveWOHvCJgmfT4xDCYRynB4lC_5YI7xODpJQ59aPzA8,15020
|
|
78
|
+
pygeodesy/wgrs.py,sha256=1MK72g3HsfdsvChM6rBy_auxzSvWHSoer8fEuT4LinI,15503
|
|
79
|
+
pygeodesy/auxilats/_CX_4.py,sha256=DX67nZ1E4nOis8d_wQ8tn5T-SAVNDBJH3kp9IuQc8lM,6830
|
|
80
|
+
pygeodesy/auxilats/_CX_6.py,sha256=T89kMuUijlLZzmqoI8XiTGTOzj4A4SKhCyt_rOroCq4,11278
|
|
81
|
+
pygeodesy/auxilats/_CX_8.py,sha256=Ff_VTStb-dZkGz7-RL1tzymPgPbTwtl_6EzPquPMamc,18900
|
|
82
|
+
pygeodesy/auxilats/_CX_Rs.py,sha256=ltZG0HLRcPImzfto873iUBva4ph5q0McaH0rEyqwLp0,8692
|
|
83
|
+
pygeodesy/auxilats/__init__.py,sha256=g3x06SdwuCPcerCHZRyvwY8xaKR5IxZ1YV3AwTnONNg,2883
|
|
84
|
+
pygeodesy/auxilats/__main__.py,sha256=jH0ShJaDR8zWfoLPXuut37BJbVWVDsAm9rb4xc25XOY,3340
|
|
85
|
+
pygeodesy/auxilats/auxAngle.py,sha256=W-ehCMzmgoEa2FVKAQ8R9iSt6BcqLesE1ZRGKJ7Z-S0,16738
|
|
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=koFT_V3SUyxADOvOFSgrXtJqpK71b061bDPUrk2640s,31976
|
|
89
|
+
pygeodesy/auxilats/auxily.py,sha256=UfuTh1gilPCgPIbWjPTl3Xfj_P4f5hvpl6fKgImjxLk,8089
|
|
90
|
+
pygeodesy/deprecated/__init__.py,sha256=ndsBPtmorXG2F4nMuC-wKvR9zIu8GI2WWU3-lkMsTsQ,2815
|
|
91
|
+
pygeodesy/deprecated/bases.py,sha256=f0sgeE4a9yStidTLhaqugv-sbMFjEF7zrlhHbWXN7Dg,1654
|
|
92
|
+
pygeodesy/deprecated/classes.py,sha256=_H9-QnSVA4iLRKwN16FO8WOE51Qin0zNMNb_kSWgnjU,16388
|
|
93
|
+
pygeodesy/deprecated/consterns.py,sha256=RC-YvqQXAEVoIaLnaLrIrA1Mr3oXLk3HT9n1HLvGCSs,1917
|
|
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=FicWSRbvkBq7sna2Bx2ucSxXZuiPy8H6q16iqjtLSrA,2478
|
|
105
|
+
pygeodesy/geodesicx/__main__.py,sha256=ugi6c-4y91WOMJIL0N-wgXhoGhV90QJIFji2MaIGLiA,4329
|
|
106
|
+
pygeodesy/geodesicx/gx.py,sha256=PsvJ7ozEfZ4OFwG5k48DZeGMmPIF9MeM7EwP-N6Dv1Y,60795
|
|
107
|
+
pygeodesy/geodesicx/gxarea.py,sha256=l0AnshThR0vMwM5Dv4n06d4xvoKo52-wKAjLFm6MK3Q,19465
|
|
108
|
+
pygeodesy/geodesicx/gxbases.py,sha256=EF9IL_oQBSlF70_ROag-DRBoU-ASWKlX-l-wfrUEQYs,6130
|
|
109
|
+
pygeodesy/geodesicx/gxline.py,sha256=9XygwUNt0YQg0FerbW4ySj4K8jO2kFMP1445Au3jRyI,27657
|
|
110
|
+
pygeodesy/rhumb/__init__.py,sha256=DsE5a16CUYWE5YTuo1U8mnDCtykuWw7VeGx23Yny_VU,2207
|
|
111
|
+
pygeodesy/rhumb/aux_.py,sha256=pfCWdJF1NC2YgldbZJV8yKbH8PG-LwJBidEWtV--NV0,16121
|
|
112
|
+
pygeodesy/rhumb/bases.py,sha256=L79xT4njF7YzmndbYi97FdNYQL9bGHvDO2EN3mgnhHc,54277
|
|
113
|
+
pygeodesy/rhumb/ekx.py,sha256=FS9Ex9takqAtUvzXFEwDyEbm5KX2-frNBUD0eDKfu5I,24078
|
|
114
|
+
pygeodesy/rhumb/solve.py,sha256=-kFsue46uXlxb8cTqlKI9OJxo7zFo8zjkwe2BcKtuFY,24012
|
|
115
|
+
pygeodesy-25.4.25.dist-info/METADATA,sha256=0M14xa_L0P1eXnRow7QTNPuDbCAWoYNsIcA2AH2aQkc,20005
|
|
116
|
+
pygeodesy-25.4.25.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
|
|
117
|
+
pygeodesy-25.4.25.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
|
|
118
|
+
pygeodesy-25.4.25.dist-info/RECORD,,
|