pygeodesy 25.5.5__py2.py3-none-any.whl → 25.5.28__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 +186 -186
- pygeodesy/__main__.py +4 -3
- pygeodesy/albers.py +4 -4
- pygeodesy/auxilats/_CX_Rs.py +3 -3
- pygeodesy/auxilats/auxAngle.py +2 -2
- pygeodesy/auxilats/auxDLat.py +2 -2
- pygeodesy/auxilats/auxDST.py +2 -2
- pygeodesy/auxilats/auxLat.py +2 -2
- pygeodesy/auxilats/auxily.py +2 -2
- pygeodesy/azimuthal.py +2 -2
- pygeodesy/booleans.py +11 -11
- pygeodesy/cartesianBase.py +2 -2
- pygeodesy/clipy.py +2 -2
- pygeodesy/constants.py +7 -7
- pygeodesy/css.py +1 -1
- pygeodesy/datums.py +2 -2
- pygeodesy/deprecated/__init__.py +8 -8
- pygeodesy/deprecated/bases.py +2 -2
- pygeodesy/deprecated/rhumbBase.py +2 -2
- pygeodesy/deprecated/rhumbaux.py +2 -2
- pygeodesy/deprecated/rhumbsolve.py +2 -2
- pygeodesy/deprecated/rhumbx.py +2 -2
- pygeodesy/ecef.py +3 -4
- pygeodesy/ellipsoidalBase.py +2 -2
- pygeodesy/ellipsoidalBaseDI.py +7 -6
- pygeodesy/ellipsoidalExact.py +24 -29
- pygeodesy/ellipsoidalGeodSolve.py +19 -19
- pygeodesy/ellipsoidalKarney.py +22 -27
- pygeodesy/ellipsoidalNvector.py +4 -4
- pygeodesy/ellipsoidalVincenty.py +17 -15
- pygeodesy/ellipsoids.py +4 -4
- pygeodesy/elliptic.py +16 -11
- pygeodesy/errors.py +1 -1
- pygeodesy/etm.py +2 -2
- pygeodesy/fmath.py +9 -9
- pygeodesy/formy.py +2 -2
- pygeodesy/frechet.py +6 -6
- pygeodesy/fstats.py +2 -2
- pygeodesy/fsums.py +37 -28
- pygeodesy/gars.py +2 -3
- pygeodesy/geodesici.py +4 -4
- pygeodesy/geodesicw.py +27 -8
- pygeodesy/geodesicx/__init__.py +3 -3
- pygeodesy/geodesicx/gx.py +52 -48
- pygeodesy/geodesicx/gxarea.py +54 -65
- pygeodesy/geodesicx/gxbases.py +12 -2
- pygeodesy/geodesicx/gxline.py +10 -7
- pygeodesy/geoids.py +6 -6
- pygeodesy/hausdorff.py +5 -5
- pygeodesy/heights.py +5 -5
- pygeodesy/internals.py +2 -2
- pygeodesy/interns.py +5 -5
- pygeodesy/iters.py +1 -1
- pygeodesy/karney.py +28 -12
- pygeodesy/ktm.py +2 -2
- pygeodesy/latlonBase.py +3 -4
- pygeodesy/lazily.py +1 -1
- pygeodesy/lcc.py +3 -3
- pygeodesy/ltp.py +5 -5
- pygeodesy/mgrs.py +3 -3
- pygeodesy/namedTuples.py +3 -3
- pygeodesy/nvectorBase.py +2 -2
- pygeodesy/osgr.py +2 -2
- pygeodesy/points.py +2 -3
- pygeodesy/props.py +18 -18
- pygeodesy/resections.py +30 -24
- pygeodesy/rhumb/aux_.py +2 -2
- pygeodesy/rhumb/bases.py +3 -3
- pygeodesy/rhumb/ekx.py +3 -4
- pygeodesy/rhumb/solve.py +2 -2
- pygeodesy/simplify.py +2 -2
- pygeodesy/solveBase.py +2 -2
- pygeodesy/sphericalBase.py +8 -8
- pygeodesy/sphericalNvector.py +19 -16
- pygeodesy/sphericalTrigonometry.py +24 -24
- pygeodesy/trf.py +4 -4
- pygeodesy/triaxials.py +2 -2
- pygeodesy/units.py +7 -8
- pygeodesy/utily.py +2 -2
- pygeodesy/utmupsBase.py +2 -2
- pygeodesy/vector2d.py +14 -8
- pygeodesy/vector3d.py +3 -3
- pygeodesy/webmercator.py +2 -2
- {pygeodesy-25.5.5.dist-info → pygeodesy-25.5.28.dist-info}/METADATA +16 -16
- pygeodesy-25.5.28.dist-info/RECORD +119 -0
- pygeodesy-25.5.5.dist-info/RECORD +0 -119
- {pygeodesy-25.5.5.dist-info → pygeodesy-25.5.28.dist-info}/WHEEL +0 -0
- {pygeodesy-25.5.5.dist-info → pygeodesy-25.5.28.dist-info}/top_level.txt +0 -0
pygeodesy/sphericalNvector.py
CHANGED
|
@@ -31,7 +31,7 @@ Also note that on a spherical earth model, an n-vector is equivalent
|
|
|
31
31
|
to a normalised version of an (ECEF) cartesian coordinate.
|
|
32
32
|
'''
|
|
33
33
|
# make sure int/int division yields float quosient, see .basics
|
|
34
|
-
from __future__ import division as _; del _ #
|
|
34
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
35
35
|
|
|
36
36
|
from pygeodesy.basics import _isin, _xinstanceof, typename
|
|
37
37
|
from pygeodesy.constants import EPS, EPS0, PI, PI2, PI_2, R_M, \
|
|
@@ -62,7 +62,7 @@ from pygeodesy.utily import atan2, degrees360, sincos2, sincos2_, sincos2d, \
|
|
|
62
62
|
# from math import fabs # from utily
|
|
63
63
|
|
|
64
64
|
__all__ = _ALL_LAZY.sphericalNvector
|
|
65
|
-
__version__ = '25.
|
|
65
|
+
__version__ = '25.05.27'
|
|
66
66
|
|
|
67
67
|
_lines_ = 'lines'
|
|
68
68
|
|
|
@@ -782,18 +782,19 @@ class Nvector(NvectorBase):
|
|
|
782
782
|
_Nv00 = LatLon(_0_0, _0_0, name=_Nv00_) # reference instance (L{LatLon})
|
|
783
783
|
|
|
784
784
|
|
|
785
|
-
def areaOf(points, radius=R_M, wrap=False):
|
|
785
|
+
def areaOf(points, radius=R_M, wrap=False, polar=False):
|
|
786
786
|
'''Calculate the area of a (spherical) polygon or composite (with
|
|
787
787
|
great circle arcs joining consecutive points).
|
|
788
788
|
|
|
789
|
-
@arg points: The polygon points or clips (C{LatLon}[],
|
|
790
|
-
|
|
789
|
+
@arg points: The polygon points or clips (C{LatLon}[], L{BooleanFHP}
|
|
790
|
+
or L{BooleanGH}).
|
|
791
791
|
@kwarg radius: Mean earth radius (C{meter}) or C{None}.
|
|
792
|
-
@kwarg wrap: If C{True}, wrap or I{normalize} and unroll the
|
|
793
|
-
|
|
792
|
+
@kwarg wrap: If C{True}, wrap or I{normalize} and unroll the B{C{points}}
|
|
793
|
+
(C{bool}).
|
|
794
|
+
@kwarg polar: Use of C{B{polar}=True} not implemented (C{bool}).
|
|
794
795
|
|
|
795
|
-
@return: Polygon area (C{meter} I{squared}, same units as
|
|
796
|
-
|
|
796
|
+
@return: Polygon area (C{meter} I{squared}, same units as B{C{radius}},
|
|
797
|
+
or C{radians} if C{B{radius} is None}).
|
|
797
798
|
|
|
798
799
|
@raise PointsError: Insufficient number of B{C{points}}.
|
|
799
800
|
|
|
@@ -802,6 +803,9 @@ def areaOf(points, radius=R_M, wrap=False):
|
|
|
802
803
|
@see: Functions L{pygeodesy.areaOf}, L{sphericalTrigonometry.areaOf}
|
|
803
804
|
and L{ellipsoidalKarney.areaOf}.
|
|
804
805
|
'''
|
|
806
|
+
if polar:
|
|
807
|
+
notImplemented(None, polar=polar, up=2)
|
|
808
|
+
|
|
805
809
|
def _interangles(ps, w): # like .karney._polygon
|
|
806
810
|
Ps = _Nv00.PointsIter(ps, loop=2, wrap=w)
|
|
807
811
|
# use vector to 1st point as plane normal for sign of α
|
|
@@ -824,15 +828,14 @@ def areaOf(points, radius=R_M, wrap=False):
|
|
|
824
828
|
if _MODS.booleans.isBoolean(points):
|
|
825
829
|
r = points._sum2(LatLon, areaOf, radius=None, wrap=wrap)
|
|
826
830
|
else:
|
|
827
|
-
# sum interior angles: depending on whether polygon is cw or
|
|
828
|
-
# angle between edges is π−α or π+α, where α is angle
|
|
829
|
-
# great-circle vectors; so sum α, then take n·π − |Σα|
|
|
830
|
-
# use Σ(π−|α|) as concave polygons would fail)
|
|
831
|
+
# sum interior angles: depending on whether polygon is cw or
|
|
832
|
+
# ccw, angle between edges is π−α or π+α, where α is angle
|
|
833
|
+
# between great-circle vectors; so sum α, then take n·π − |Σα|
|
|
834
|
+
# (cannot use Σ(π−|α|) as concave polygons would fail)
|
|
831
835
|
s = fsum(_interangles(points, wrap))
|
|
832
836
|
# using Girard’s theorem: A = [Σθᵢ − (n−2)·π]·R²
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
return r if radius is None else (r * Radius(radius)**2)
|
|
837
|
+
r = fabs(PI2 - fabs(s)) # == n*PI - abs(s) - (n-2)*PI
|
|
838
|
+
return r if radius is None else (Radius(radius)**2 * r)
|
|
836
839
|
|
|
837
840
|
|
|
838
841
|
def intersecant2(center, circle, point, other, **radius_exact_height_wrap):
|
|
@@ -14,7 +14,7 @@ I{(C) Chris Veness 2011-2024} published under the same MIT Licence**, see
|
|
|
14
14
|
U{Latitude/Longitude<https://www.Movable-Type.co.UK/scripts/latlong.html>}.
|
|
15
15
|
'''
|
|
16
16
|
# make sure int/int division yields float quotient, see .basics
|
|
17
|
-
from __future__ import division as _; del _ #
|
|
17
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
18
18
|
|
|
19
19
|
from pygeodesy.basics import copysign0, _isin, map1, signOf, typename
|
|
20
20
|
from pygeodesy.constants import EPS, EPS1, EPS4, PI, PI2, PI_2, PI_4, R_M, \
|
|
@@ -34,8 +34,9 @@ from pygeodesy.interns import _1_, _2_, _coincident_, _composite_, _colinear_, \
|
|
|
34
34
|
_concentric_, _convex_, _end_, _infinite_, \
|
|
35
35
|
_invalid_, _line_, _near_, _null_, _parallel_, \
|
|
36
36
|
_point_, _SPACE_, _too_
|
|
37
|
+
from pygeodesy.latlonBase import _trilaterate5
|
|
37
38
|
from pygeodesy.lazily import _ALL_LAZY, _ALL_MODS as _MODS, _ALL_OTHER
|
|
38
|
-
# from pygeodesy.nvectorBase import NvectorBase, sumOf #
|
|
39
|
+
# from pygeodesy.nvectorBase import NvectorBase, sumOf # _MODS
|
|
39
40
|
from pygeodesy.namedTuples import LatLon2Tuple, LatLon3Tuple, NearestOn3Tuple, \
|
|
40
41
|
Triangle7Tuple, Triangle8Tuple
|
|
41
42
|
from pygeodesy.points import ispolar, nearestOn5 as _nearestOn5, \
|
|
@@ -43,10 +44,10 @@ from pygeodesy.points import ispolar, nearestOn5 as _nearestOn5, \
|
|
|
43
44
|
from pygeodesy.props import deprecated_function, deprecated_method
|
|
44
45
|
from pygeodesy.sphericalBase import _m2radians, CartesianSphericalBase, \
|
|
45
46
|
_intersecant2, LatLonSphericalBase, \
|
|
46
|
-
_rads3, _radians2m
|
|
47
|
+
_rads3, _radians2m
|
|
47
48
|
# from pygeodesy.streprs import Fmt as _Fmt # from .points XXX shadowed
|
|
48
49
|
from pygeodesy.units import Bearing_, Height, _isDegrees, _isRadius, Lamd, \
|
|
49
|
-
|
|
50
|
+
Phid, Radius_, Scalar
|
|
50
51
|
from pygeodesy.utily import acos1, asin1, atan1d, atan2, atan2d, degrees90, \
|
|
51
52
|
degrees180, degrees2m, m2radians, radiansPI2, \
|
|
52
53
|
sincos2_, tan_2, unrollPI, _unrollon, _unrollon3, \
|
|
@@ -56,7 +57,7 @@ from pygeodesy.vector3d import sumOf, Vector3d
|
|
|
56
57
|
from math import asin, cos, degrees, fabs, radians, sin
|
|
57
58
|
|
|
58
59
|
__all__ = _ALL_LAZY.sphericalTrigonometry
|
|
59
|
-
__version__ = '25.
|
|
60
|
+
__version__ = '25.05.28'
|
|
60
61
|
|
|
61
62
|
_PI_EPS4 = PI - EPS4
|
|
62
63
|
if _PI_EPS4 >= PI:
|
|
@@ -757,20 +758,21 @@ class LatLon(LatLonSphericalBase):
|
|
|
757
758
|
_T00 = LatLon(0, 0, name='T00') # reference instance (L{LatLon})
|
|
758
759
|
|
|
759
760
|
|
|
760
|
-
def areaOf(points, radius=R_M, wrap=False): # was=True
|
|
761
|
-
'''Calculate the area of a (spherical) polygon or composite (with the
|
|
762
|
-
|
|
761
|
+
def areaOf(points, radius=R_M, wrap=False, polar=False): # was wrap=True
|
|
762
|
+
'''Calculate the area of a (spherical) polygon or composite (with the points joined by
|
|
763
|
+
great circle arcs).
|
|
763
764
|
|
|
764
|
-
@arg points: The polygon points or clips (L{LatLon}[], L{BooleanFHP}
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
765
|
+
@arg points: The polygon points or clips (L{LatLon}[], L{BooleanFHP} or L{BooleanGH}).
|
|
766
|
+
@kwarg radius: Mean earth radius, ellipsoid or datum (C{meter}, L{Ellipsoid},
|
|
767
|
+
L{Ellipsoid2}, L{Datum} or L{a_f2Tuple}) or C{None}.
|
|
768
|
+
@kwarg wrap: If C{True}, wrap or I{normalize} and unroll the B{C{points}} (C{bool}).
|
|
769
|
+
@kwarg polar: Use C{B{polar}=True} if the polygon encloses a pole (C{bool}), see
|
|
770
|
+
function L{ispolar<pygeodesy.points.ispolar>} and U{area of a polygon
|
|
771
|
+
enclosing a pole<https://GeographicLib.SourceForge.io/C++/doc/
|
|
772
|
+
classGeographicLib_1_1GeodesicExact.html#a3d7a9155e838a09a48dc14d0c3fac525>}.
|
|
771
773
|
|
|
772
|
-
@return: Polygon area (C{meter} I{quared}, same units as B{C{radius}}
|
|
773
|
-
|
|
774
|
+
@return: Polygon area (C{meter} I{quared}, same units as B{C{radius}} or C{radians} if
|
|
775
|
+
C{B{radius} is None}).
|
|
774
776
|
|
|
775
777
|
@raise PointsError: Insufficient number of B{C{points}}.
|
|
776
778
|
|
|
@@ -778,13 +780,11 @@ def areaOf(points, radius=R_M, wrap=False): # was=True
|
|
|
778
780
|
|
|
779
781
|
@raise ValueError: Invalid B{C{radius}} or semi-circular polygon edge.
|
|
780
782
|
|
|
781
|
-
@note: The area is based on I{Karney}'s U{'Area of a spherical
|
|
782
|
-
|
|
783
|
-
the-area-of-spherical-polygons>}, 3rd Answer.
|
|
783
|
+
@note: The area is based on I{Karney}'s U{'Area of a spherical polygon'
|
|
784
|
+
<https://MathOverflow.net/questions/97711/ the-area-of-spherical-polygons>}, 3rd Answer.
|
|
784
785
|
|
|
785
|
-
@see: Functions L{pygeodesy.areaOf}, L{sphericalNvector.areaOf},
|
|
786
|
-
L{
|
|
787
|
-
L{ellipsoidalKarney.areaOf}.
|
|
786
|
+
@see: Functions L{pygeodesy.areaOf}, L{sphericalNvector.areaOf}, L{pygeodesy.excessKarney},
|
|
787
|
+
L{ellipsoidalExact.areaOf} and L{ellipsoidalKarney.areaOf}.
|
|
788
788
|
'''
|
|
789
789
|
if _MODS.booleans.isBoolean(points):
|
|
790
790
|
return points._sum2(LatLon, areaOf, radius=radius, wrap=wrap)
|
|
@@ -821,7 +821,7 @@ def areaOf(points, radius=R_M, wrap=False): # was=True
|
|
|
821
821
|
p1, z1 = p2, z2
|
|
822
822
|
|
|
823
823
|
R = abs(R * _2_0)
|
|
824
|
-
if abs(D) < _90_0: # ispolar(points)
|
|
824
|
+
if abs(D) < _90_0 or polar: # ispolar(points)
|
|
825
825
|
R = abs(R - PI2)
|
|
826
826
|
if radius:
|
|
827
827
|
a = degrees(A.fover(len(A))) # mean lat
|
pygeodesy/trf.py
CHANGED
|
@@ -93,7 +93,7 @@ from math import ceil as _ceil, fabs
|
|
|
93
93
|
# import operator as _operator # from .datums
|
|
94
94
|
|
|
95
95
|
__all__ = _ALL_LAZY.trf
|
|
96
|
-
__version__ = '25.
|
|
96
|
+
__version__ = '25.05.12'
|
|
97
97
|
|
|
98
98
|
_EP0CH = Epoch(0, low=0)
|
|
99
99
|
_Es = {_EP0CH: _EP0CH} # L{Epoch}s, deleted below
|
|
@@ -148,7 +148,7 @@ def _E(epoch): # deleted below
|
|
|
148
148
|
'''(INTERNAL) De-dup L{Epochs}s.
|
|
149
149
|
'''
|
|
150
150
|
e = Epoch(_F(epoch))
|
|
151
|
-
return _Es.setdefault(e, e) #
|
|
151
|
+
return _Es.setdefault(e, e) # noqa: F821 del
|
|
152
152
|
|
|
153
153
|
|
|
154
154
|
def _P(ps, name, _Ps): # deleted below
|
|
@@ -1299,11 +1299,11 @@ def _trfX(n1, n2, raiser=True, **epoch_xform_rates):
|
|
|
1299
1299
|
|
|
1300
1300
|
|
|
1301
1301
|
def _X(*ps): # deleted below
|
|
1302
|
-
return _P(ps, _xform_, _Xs) #
|
|
1302
|
+
return _P(ps, _xform_, _Xs) # noqa: F821 del
|
|
1303
1303
|
|
|
1304
1304
|
|
|
1305
1305
|
def _R(*ps): # deleted below
|
|
1306
|
-
return _P(ps, _rates_, _Rs) #
|
|
1306
|
+
return _P(ps, _rates_, _Rs) # noqa: F821 del
|
|
1307
1307
|
|
|
1308
1308
|
|
|
1309
1309
|
_P_0_0s = TRFXform7Tuple(_0_0s(len(_Names7)), name='unity')
|
pygeodesy/triaxials.py
CHANGED
|
@@ -28,7 +28,7 @@ see the U{GeographicLib<https://GeographicLib.SourceForge.io>} documentation.
|
|
|
28
28
|
@var Triaxials.WGS84_35: Triaxial(name='WGS84_35', a=6378172, b=6378102, c=6356752.314245179, e2ab=0.00002195, e2bc=0.006683478, e2ac=0.006705281, volume=1083207319768789942272, area=510065621722018.125, area_p=510065626587483.3125)
|
|
29
29
|
'''
|
|
30
30
|
# make sure int/int division yields float quotient, see .basics
|
|
31
|
-
from __future__ import division as _; del _ #
|
|
31
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
32
32
|
|
|
33
33
|
from pygeodesy.basics import _isin, isLatLon, isscalar
|
|
34
34
|
from pygeodesy.constants import EPS, EPS0, EPS02, EPS4, INT0, PI2, PI_3, PI4, \
|
|
@@ -59,7 +59,7 @@ from pygeodesy.vector3d import _otherV3d, Vector3d, _ALL_LAZY, _MODS
|
|
|
59
59
|
from math import fabs, sqrt
|
|
60
60
|
|
|
61
61
|
__all__ = _ALL_LAZY.triaxials
|
|
62
|
-
__version__ = '25.
|
|
62
|
+
__version__ = '25.05.12'
|
|
63
63
|
|
|
64
64
|
_not_ordered_ = _not_('ordered')
|
|
65
65
|
_omega_ = 'omega'
|
pygeodesy/units.py
CHANGED
|
@@ -7,18 +7,17 @@ L{Feet}, L{Meter}, L{Radians}, etc.
|
|
|
7
7
|
'''
|
|
8
8
|
|
|
9
9
|
from pygeodesy.basics import isscalar, issubclassof, signOf, typename
|
|
10
|
-
from pygeodesy.constants import EPS, EPS1, PI, PI2, PI_2, _umod_360, _0_0,
|
|
11
|
-
_0_001, _0_5, INT0 # PYCHOK for .mgrs, .namedTuples
|
|
10
|
+
from pygeodesy.constants import EPS, EPS1, PI, PI2, PI_2, _umod_360, _0_0, _0_001
|
|
12
11
|
from pygeodesy.dms import F__F, F__F_, S_NUL, S_SEP, parseDMS, parseRad, _toDMS
|
|
13
12
|
from pygeodesy.errors import _AssertionError, TRFError, UnitError, _xattr, _xcallable
|
|
14
13
|
# from pygeodesy.internals import typename # from .basics
|
|
15
14
|
from pygeodesy.interns import NN, _azimuth_, _band_, _bearing_, _COMMASPACE_, \
|
|
16
15
|
_degrees_, _degrees2_, _distance_, _E_, _easting_, \
|
|
17
|
-
_epoch_, _EW_, _feet_, _height_, _lam_, _lat_,
|
|
18
|
-
|
|
16
|
+
_epoch_, _EW_, _feet_, _height_, _lam_, _lat_, _lon_, \
|
|
17
|
+
_meter_, _meter2_, _N_, _negative_, _northing_, _radians_, \
|
|
19
18
|
_NS_, _NSEW_, _number_, _PERCENT_, _phi_, _precision_, \
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
_radians2_, _radius_, _S_, _scalar_, \
|
|
20
|
+
_W_, _zone_, _std_ # PYCHOK used!
|
|
22
21
|
from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS
|
|
23
22
|
# from pygeodesy.named import _name__ # _MODS
|
|
24
23
|
from pygeodesy.props import Property_RO
|
|
@@ -28,7 +27,7 @@ from pygeodesy.unitsBase import Float, Int, _NamedUnit, Radius, Str, Fmt, fstr
|
|
|
28
27
|
from math import degrees, isnan, radians
|
|
29
28
|
|
|
30
29
|
__all__ = _ALL_LAZY.units
|
|
31
|
-
__version__ = '25.
|
|
30
|
+
__version__ = '25.05.12'
|
|
32
31
|
|
|
33
32
|
|
|
34
33
|
class Float_(Float):
|
|
@@ -861,7 +860,7 @@ def _std_repr(*Classes):
|
|
|
861
860
|
'''
|
|
862
861
|
from pygeodesy.internals import _getenv
|
|
863
862
|
for C in Classes:
|
|
864
|
-
if hasattr(C, typename(_std_repr)): #
|
|
863
|
+
if hasattr(C, typename(_std_repr)): # noqa: F821 del
|
|
865
864
|
env = 'PYGEODESY_%s_STD_REPR' % (typename(C).upper(),)
|
|
866
865
|
if _getenv(env, _std_).lower() != _std_:
|
|
867
866
|
C._std_repr = False
|
pygeodesy/utily.py
CHANGED
|
@@ -9,7 +9,7 @@ and U{Vector-based geodesy<https://www.Movable-Type.co.UK/scripts/latlong-vector
|
|
|
9
9
|
and published under the same MIT Licence**.
|
|
10
10
|
'''
|
|
11
11
|
# make sure int/int division yields float quotient, see .basics
|
|
12
|
-
from __future__ import division as _; del _ #
|
|
12
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
13
13
|
|
|
14
14
|
from pygeodesy.basics import _copysign, isinstanceof, isint, isstr
|
|
15
15
|
from pygeodesy.constants import EPS, EPS0, INF, NAN, PI, PI2, PI_2, R_M, \
|
|
@@ -28,7 +28,7 @@ from math import acos, asin, atan2 as _atan2, cos, degrees, fabs, radians, \
|
|
|
28
28
|
sin, tan as _tan # pow
|
|
29
29
|
|
|
30
30
|
__all__ = _ALL_LAZY.utily
|
|
31
|
-
__version__ = '25.
|
|
31
|
+
__version__ = '25.05.12'
|
|
32
32
|
|
|
33
33
|
_G_DEG = _float( 400.0 / _360_0) # grades per degree
|
|
34
34
|
_G_RAD = _float( 400.0 / PI2) # grades per radian
|
pygeodesy/utmupsBase.py
CHANGED
|
@@ -5,7 +5,7 @@ u'''(INTERNAL) Private class C{UtmUpsBase}, functions and constants
|
|
|
5
5
|
for modules L{epsg}, L{etm}, L{mgrs}, L{ups} and L{utm}.
|
|
6
6
|
'''
|
|
7
7
|
# make sure int/int division yields float quotient, see .basics
|
|
8
|
-
from __future__ import division as _; del _ #
|
|
8
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
9
9
|
|
|
10
10
|
from pygeodesy.basics import _copysign, _isin, isint, isscalar, isstr, \
|
|
11
11
|
neg_, _xinstanceof, _xsubclassof
|
|
@@ -32,7 +32,7 @@ from pygeodesy.utily import atan1, _Wrap, wrap360
|
|
|
32
32
|
from math import cos, degrees, fabs, sin, tan # copysign as _copysign
|
|
33
33
|
|
|
34
34
|
__all__ = _ALL_LAZY.utmupsBase
|
|
35
|
-
__version__ = '25.
|
|
35
|
+
__version__ = '25.05.12'
|
|
36
36
|
|
|
37
37
|
_UPS_BANDS = _A_, _B_, _Y_, _Z_ # UPS polar bands SE, SW, NE, NW
|
|
38
38
|
# _UTM_BANDS = _MODS.utm._Bands
|
pygeodesy/vector2d.py
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
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{
|
|
6
|
-
L{
|
|
5
|
+
L{iscolinearWith}, L{meeus2}, L{radii11}, L{soddy4}, L{triaxum5} and
|
|
6
|
+
L{trilaterate2d2}.
|
|
7
7
|
|
|
8
8
|
@note: Functions L{circin6}, L{circum3}, L{circum4_}, L{soddy4} and
|
|
9
9
|
L{triaxum5} require U{numpyhttps://PyPI.org/project/numpy>}
|
|
@@ -24,19 +24,19 @@ from pygeodesy.interns import NN, _a_, _and_, _b_, _c_, _center_, _coincident_,
|
|
|
24
24
|
_intersection_, _invalid_, _near_, _no_, _of_, \
|
|
25
25
|
_radius_, _rIn_, _s_, _SPACE_, _too_, _with_
|
|
26
26
|
# from pygeodesy.lazily import _ALL_LAZY # from .named
|
|
27
|
-
from pygeodesy.named import _ALL_LAZY, _NamedTuple, _Pass
|
|
27
|
+
from pygeodesy.named import _ALL_LAZY, _NamedTuple, _Pass
|
|
28
28
|
from pygeodesy.namedTuples import LatLon3Tuple, Vector2Tuple
|
|
29
|
-
|
|
29
|
+
from pygeodesy.props import deprecated_function, Property_RO
|
|
30
30
|
from pygeodesy.streprs import Fmt, unstr
|
|
31
31
|
from pygeodesy.units import Float, Int, Meter, Radius, Radius_
|
|
32
|
-
from pygeodesy.vector3d import
|
|
33
|
-
|
|
32
|
+
from pygeodesy.vector3d import _nearestOn2, _nVc, _otherV3d, trilaterate3d2, \
|
|
33
|
+
Vector3d, nearestOn as _nearestOn3d # DEPRECATED
|
|
34
34
|
|
|
35
35
|
from contextlib import contextmanager
|
|
36
36
|
# from math import fabs, sqrt # from .fmath
|
|
37
37
|
|
|
38
38
|
__all__ = _ALL_LAZY.vector2d
|
|
39
|
-
__version__ = '25.
|
|
39
|
+
__version__ = '25.05.26'
|
|
40
40
|
|
|
41
41
|
_cA_ = 'cA'
|
|
42
42
|
_cB_ = 'cB'
|
|
@@ -395,6 +395,12 @@ def _meeus4(A, point2, point3, circum=False, useZ=True, clas=None, **clas_kwds):
|
|
|
395
395
|
return r, t, p2, p3
|
|
396
396
|
|
|
397
397
|
|
|
398
|
+
@deprecated_function
|
|
399
|
+
def nearestOn(point, point1, point2, **within_useZ_Vector_and_kwds):
|
|
400
|
+
'''DEPRECATED on 2025.05.06, use L{pygeodesy.nearestOn<pygeodesy.vector3d.nearestOn>}.'''
|
|
401
|
+
return _nearestOn3d(point, point1, point2, **within_useZ_Vector_and_kwds)
|
|
402
|
+
|
|
403
|
+
|
|
398
404
|
class _numpy(object): # see also .formy._idllmn6, .geodesicw._wargs, .latlonBase._toCartesian3
|
|
399
405
|
'''(INTERNAL) Partial C{NumPy} wrapper.
|
|
400
406
|
'''
|
|
@@ -431,7 +437,7 @@ class _numpy(object): # see also .formy._idllmn6, .geodesicw._wargs, .latlonBas
|
|
|
431
437
|
def np(self):
|
|
432
438
|
'''Import numpy 1.10+ once.
|
|
433
439
|
'''
|
|
434
|
-
return _xnumpy(self
|
|
440
|
+
return _xnumpy(type(self), 1, 10)
|
|
435
441
|
|
|
436
442
|
def null_space2(self, A, rcond=None):
|
|
437
443
|
'''Return the C{null_space} and C{rank} of matrix B{C{A}}.
|
pygeodesy/vector3d.py
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
u'''Extended 3-D vector class L{Vector3d} and functions.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
L{trilaterate3d2}.
|
|
6
|
+
Functions L{intersection3d3}, L{intersections2}, L{nearestOn}, L{parse3d},
|
|
7
|
+
L{sumOf} and L{trilaterate3d2}.
|
|
8
8
|
'''
|
|
9
9
|
|
|
10
10
|
from pygeodesy.constants import EPS, EPS0, EPS1, EPS4, INT0, isnear0, \
|
|
@@ -32,7 +32,7 @@ from pygeodesy.vector3dBase import Vector3dBase
|
|
|
32
32
|
# from math import fabs, sqrt # from .fmath
|
|
33
33
|
|
|
34
34
|
__all__ = _ALL_LAZY.vector3d
|
|
35
|
-
__version__ = '25.
|
|
35
|
+
__version__ = '25.05.07'
|
|
36
36
|
|
|
37
37
|
_vector2d = _MODS.into(vector2d=__name__)
|
|
38
38
|
|
pygeodesy/webmercator.py
CHANGED
|
@@ -16,7 +16,7 @@ and U{Implementation Practice Web Mercator Map Projection<https://Web.Archive.or
|
|
|
16
16
|
http://earth-info.nga.mil/GandG/wgs84/web_mercator/(U)%20NGA_SIG_0011_1.0.0_WEBMERC.pdf>}.
|
|
17
17
|
'''
|
|
18
18
|
# make sure int/int division yields float quotient, see .basics
|
|
19
|
-
from __future__ import division as _; del _ #
|
|
19
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
20
20
|
|
|
21
21
|
from pygeodesy.basics import _isin, _splituple, _xinstanceof, typename
|
|
22
22
|
from pygeodesy.constants import PI_2, R_MA, _2_0
|
|
@@ -37,7 +37,7 @@ from pygeodesy.utily import degrees90, degrees180
|
|
|
37
37
|
from math import atan, atanh, exp, radians, sin, tanh
|
|
38
38
|
|
|
39
39
|
__all__ = _ALL_LAZY.webmercator
|
|
40
|
-
__version__ = '25.
|
|
40
|
+
__version__ = '25.05.12'
|
|
41
41
|
|
|
42
42
|
# _FalseEasting = 0 # false Easting (C{meter})
|
|
43
43
|
# _FalseNorthing = 0 # false Northing (C{meter})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pygeodesy
|
|
3
|
-
Version: 25.5.
|
|
3
|
+
Version: 25.5.28
|
|
4
4
|
Summary: Pure Python geodesy tools
|
|
5
5
|
Home-page: https://GitHub.com/mrJean1/PyGeodesy
|
|
6
6
|
Author: Jean M. Brouwers
|
|
@@ -120,10 +120,10 @@ Tests
|
|
|
120
120
|
=====
|
|
121
121
|
|
|
122
122
|
The tests ran with Python 3.13.3 (with geographiclib_ 2.0), 3.12.7 (with geographiclib_ 2.0, numpy_ 2.1.0,
|
|
123
|
-
scipy_ 1.14.1, GeodSolve_ 2.
|
|
123
|
+
scipy_ 1.14.1, GeodSolve_ 2.5, IntersectTool_ 2.5 and RhumbSolve_ 2.5), 3.11.5 (with geographiclib_ 2.0,
|
|
124
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,
|
|
125
|
-
GeoConvert_ 2.
|
|
126
|
-
scipy_ 1.2.2, GeoConvert_ 2.
|
|
125
|
+
GeoConvert_ 2.5, GeodSolve_ 2.5), Python 3.9.6 and Python 2.7.18 (with geographiclib_ 1.50, numpy_ 1.16.6,
|
|
126
|
+
scipy_ 1.2.2, GeoConvert_ 2.5, GeodSolve_ 2.5, IntersectTool_ 2.5 and RhumbSolve_ 2.5), all on macOS 15.5
|
|
127
127
|
Sequoia in 64-bit.
|
|
128
128
|
|
|
129
129
|
All tests ran with and without ``lazy import`` for Python 3 and with command line option ``-W default``
|
|
@@ -133,11 +133,11 @@ included in the distribution files.
|
|
|
133
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
134
|
on Intel (``x86_64``) or Intel *emulation* (\"``arm64_x86_64``\", see function `pygeodesy.machine`_).
|
|
135
135
|
|
|
136
|
-
Test coverage has been measured with coverage_ 7.6.1 using Python 3.13.
|
|
136
|
+
Test coverage has been measured with coverage_ 7.6.1 using Python 3.13.3, 3.12.7, 3.11.5 and 3.10.8. The
|
|
137
137
|
complete coverage report in HTML and a PDF summary are included in the distribution files.
|
|
138
138
|
|
|
139
139
|
The tests also ran with Python 3.13.3 (and geographiclib_ 2.0) on `Debian 12`_ in 64-bit only and with
|
|
140
|
-
Python 3.12.
|
|
140
|
+
Python 3.12.8 (and geographiclib_ 2.0) on `Windows 2019Server`_ in 64-bit only and with Python 2.7.18
|
|
141
141
|
(and with geographiclib_ 1.52) on `Windows 10`_ in 64- and 32-bit.
|
|
142
142
|
|
|
143
143
|
A single-File and single-Directory application with ``pygeodesy`` has been bundled using PyInstaller_ 3.4
|
|
@@ -149,22 +149,22 @@ 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
|
|
|
149
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
|
|
150
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),
|
|
151
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
|
|
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
|
|
153
|
-
10.15.3, 10.15.5-7 Catalina, 10.14 Mojave, 10.13.6 High Sierra and 10.12 Sierra, MacOS X
|
|
154
|
-
and/or MacOS X 10.10 Yosemite, with Pythonista_ 3.2 (with geographiclib 1.50 or 1.49 and
|
|
155
|
-
iOS 14.4.2, 11.4.1, 12.0-3 on iPad4, iPhone6, iPhone10 and/or iPhone12, with Pythonista_ 3.1
|
|
156
|
-
11.0.3, 11.1.2 and 11.3 on iPad4, all in 64-bit only and with 32-bit Python 2.7.14 on Windows
|
|
157
|
-
Windows 10 Pro and 32-bit Python 2.6.6 on Windows XP SP3.
|
|
152
|
+
numpy_ 1.11.3) on macOS 15.0-4 Sequoia, 14.0-6.1 Sonoma, 13.0-5.2 Ventura, 12.1-6 Monterey, 11.0-5.2-6.1 Big
|
|
153
|
+
Sur (aka 10.16), 10.15.3, 10.15.5-7 Catalina, 10.14 Mojave, 10.13.6 High Sierra and 10.12 Sierra, MacOS X
|
|
154
|
+
10.11 El Capitan and/or MacOS X 10.10 Yosemite, with Pythonista_ 3.2 (with geographiclib 1.50 or 1.49 and
|
|
155
|
+
numpy 1.8.0) on iOS 14.4.2, 11.4.1, 12.0-3 on iPad4, iPhone6, iPhone10 and/or iPhone12, with Pythonista_ 3.1
|
|
156
|
+
on iOS 10.3.3, 11.0.3, 11.1.2 and 11.3 on iPad4, all in 64-bit only and with 32-bit Python 2.7.14 on Windows
|
|
157
|
+
Server 2012R2, Windows 10 Pro and 32-bit Python 2.6.6 on Windows XP SP3.
|
|
158
158
|
|
|
159
159
|
Notes
|
|
160
160
|
=====
|
|
161
161
|
|
|
162
|
-
All Python source code has been statically checked_ with PyChecker_, PyFlakes_,
|
|
163
|
-
and McCabe_ using Python 2.7.18
|
|
162
|
+
All Python source code has been statically checked_ with Ruff_ using Python 3.13.3 and with PyChecker_, PyFlakes_,
|
|
163
|
+
PyCodeStyle_ (formerly Pep8) and McCabe_ using Python 2.7.18, both in 64-bit on macOS 15.5 Sequoia only.
|
|
164
164
|
|
|
165
165
|
For a summary of all *Karney*-based functionality in ``pygeodesy``, see module karney_.
|
|
166
166
|
|
|
167
|
-
*Last updated: May
|
|
167
|
+
*Last updated: May 28, 2025.*
|
|
168
168
|
|
|
169
169
|
License
|
|
170
170
|
=======
|
|
@@ -218,7 +218,6 @@ DEALINGS IN THE SOFTWARE.
|
|
|
218
218
|
.. _Epydoc: https://PyPI.org/project/epydoc
|
|
219
219
|
.. _equidistant: https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1AzimuthalEquidistant.html
|
|
220
220
|
.. _Exact: https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1GeodesicExact.html
|
|
221
|
-
.. _Flake8: https://PyPI.org/project/flake8
|
|
222
221
|
.. _Forster-Hormann-Popa: https://www.ScienceDirect.com/science/article/pii/S259014861930007X
|
|
223
222
|
.. _Fréchet: https://WikiPedia.org/wiki/Frechet_distance
|
|
224
223
|
.. _Garefs (GARS): https://WikiPedia.org/wiki/Global_Area_Reference_System
|
|
@@ -265,6 +264,7 @@ DEALINGS IN THE SOFTWARE.
|
|
|
265
264
|
.. _Ramer-Douglas-Peucker: https://WikiPedia.org/wiki/Ramer-Douglas-Peucker_algorithm
|
|
266
265
|
.. _Reumann-Witkam: https://psimpl.SourceForge.net/reumann-witkam.html
|
|
267
266
|
.. _RhumbSolve: https://GeographicLib.SourceForge.io/C++/doc/utilities.html
|
|
267
|
+
.. _Ruff: https://GitHub.com/astral-sh/ruff
|
|
268
268
|
.. _scipy: https://PyPI.org/project/scipy
|
|
269
269
|
.. _simplify: https://Bost.Ocks.org/mike/simplify
|
|
270
270
|
.. _Sutherland-Hodgman: https://WikiPedia.org/wiki/Sutherland-Hodgman_algorithm
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
|
|
2
|
+
pygeodesy/__init__.py,sha256=C2E8VxEx5MOANjeIZ12lgXtsJSbJdYh1Ee05IkobA1w,42290
|
|
3
|
+
pygeodesy/__main__.py,sha256=HpOBmuhI7yVP1FIAEugvd9Lb54kzew-nM78be0r4SC4,5597
|
|
4
|
+
pygeodesy/albers.py,sha256=mb3YbVvoBq8a7AytT0HeVxe8DGEvx1KFN2Usl2ksKwk,30908
|
|
5
|
+
pygeodesy/azimuthal.py,sha256=acwIA1B7jmg1oDpJBuFitnOVHUWRUk7Y73yI8zqIGrc,49854
|
|
6
|
+
pygeodesy/basics.py,sha256=ErpbLgHNerGPKiOIlWKdKzq6lO0dhoZjaywTnCn8PyE,32905
|
|
7
|
+
pygeodesy/booleans.py,sha256=njAJlAoVZEcQ5jp8wwyuVo8-jFPE3PFpAF3k3dQihBM,73683
|
|
8
|
+
pygeodesy/cartesianBase.py,sha256=tvb1pGUTvSkIAInNhrnHXjBCwnQrVn6a-H2fipoapKE,45365
|
|
9
|
+
pygeodesy/clipy.py,sha256=a0azaK7YDmGDU8mVVKe2MvUiPEhqZ9XJ-9u0T1iHKbo,27779
|
|
10
|
+
pygeodesy/constants.py,sha256=usdHWtYiy8iaPXxXau2vsViL9zC8I4Jp2fziiEmp2g4,19947
|
|
11
|
+
pygeodesy/css.py,sha256=vdQax5m7BMSpr7PUyqedCSvx73ilWuhXQTp39i8FOfA,25793
|
|
12
|
+
pygeodesy/datums.py,sha256=Vp1fP7sSV1EuRbuO2scnZ3qiTZD1CvL4O12KSRlf1SU,34068
|
|
13
|
+
pygeodesy/dms.py,sha256=CKXt2EOYFBluQV5q6cFYppJl3dCvvEB_0E84J0ki6ws,42202
|
|
14
|
+
pygeodesy/ecef.py,sha256=DcWNhnOZC7-Olns9c1XI9p4MmuC00KN5rZ5W1UQVUxw,59009
|
|
15
|
+
pygeodesy/ecefLocals.py,sha256=zoxGUJeYX2UXzR9r0jaByrvfrrpmrvAhjyQsz433RjA,7794
|
|
16
|
+
pygeodesy/elevations.py,sha256=WrWPZNgkZX9Ys_1ij_gyE4jzdIv85JYAaR2cK3vc4gQ,10879
|
|
17
|
+
pygeodesy/ellipsoidalBase.py,sha256=n6VHIaRZ6UvC1H36qolKxwlHJX5BZysvgE3iir-PunE,55743
|
|
18
|
+
pygeodesy/ellipsoidalBaseDI.py,sha256=PbSJkUUHpRGYgnnciMD-sWqTCReZv_FAc8SUonF3ZbI,38544
|
|
19
|
+
pygeodesy/ellipsoidalExact.py,sha256=kKnQV3gz293dPowsRx5aI0CJ05a2TWGpEcWoJCxut30,17111
|
|
20
|
+
pygeodesy/ellipsoidalGeodSolve.py,sha256=w5TubUdqYwvrtxfIwP2Scr1FzISq2szx1HX88TUa42E,17107
|
|
21
|
+
pygeodesy/ellipsoidalKarney.py,sha256=W_Liw5MxTqJJGsxMi50ui8grRSPKwkG2HH-Mv_mXQYk,18839
|
|
22
|
+
pygeodesy/ellipsoidalNvector.py,sha256=HLFjX6o26q2fzVCjLSL0PdEh96xhGtjfzo2V_k54j4A,30146
|
|
23
|
+
pygeodesy/ellipsoidalVincenty.py,sha256=zeTvid09NGuYJ1WJ__a3ApCBGSzX0A-Rhs8-sQXMNQQ,26273
|
|
24
|
+
pygeodesy/ellipsoids.py,sha256=v964yZIL2nCc8MJgt3nzV6pczaQsQubXmX_sAh_nrBw,107765
|
|
25
|
+
pygeodesy/elliptic.py,sha256=nob5Iby3RIj1tnsZJ1AzzxDLwPJm48M9Cf_kIAwU6l8,45035
|
|
26
|
+
pygeodesy/epsg.py,sha256=VIBidzAEuoBF4LdlJ4r3WtpL0Ymhru8kf4fAgfFr5ok,8220
|
|
27
|
+
pygeodesy/errors.py,sha256=OUEJ51M3c-JH1n0BBbRtPTCDX0I00rH_BQPYSRoKrqo,32043
|
|
28
|
+
pygeodesy/etm.py,sha256=NDtpmbQmbGieV64iJ-EDIAvD9ryjrW0hiD3wBBtxULk,46744
|
|
29
|
+
pygeodesy/fmath.py,sha256=sIN7mW2KOiK0yU93mvmHo1OOTkGxKvwRinvyr_Qdf6I,37689
|
|
30
|
+
pygeodesy/formy.py,sha256=7-CdPiagdVrbDMjWieX_guN4RvFVCYKOM3yDKSFPRWU,69777
|
|
31
|
+
pygeodesy/frechet.py,sha256=dBnQ5ePuaUdKv62-e9RfovFDxELsZPQEKMLww9NOf7Q,35588
|
|
32
|
+
pygeodesy/fstats.py,sha256=M6UOrwmeGp6kjYuYfc6Iq9ibMJAFNm6D4C5GnvlJeuM,28348
|
|
33
|
+
pygeodesy/fsums.py,sha256=3pXl8rfDPeKzXHEhtf9qNzBtUme4ckskDx3HWfJbfyg,103988
|
|
34
|
+
pygeodesy/gars.py,sha256=AXioT4Lh1cwrd7fF6dHcVJw-9vu2oAnZrzo_ka2Y3Ts,11761
|
|
35
|
+
pygeodesy/geodesici.py,sha256=wPUDlRPOcj3MvvWA0CtnZvC30t1onKyZYvR51iCjgks,74891
|
|
36
|
+
pygeodesy/geodesicw.py,sha256=xDxxxr4HOT-8Mh85zD6QZzyO-mfqUavfwQMStYrsF8c,30029
|
|
37
|
+
pygeodesy/geodsolve.py,sha256=fFlyNlkEOpkJaeddEuKwfhtqaZjmVs0egNGM5cwFFoc,29101
|
|
38
|
+
pygeodesy/geohash.py,sha256=1P9-k9sMN-ZVFr2iWbQpFi1lg3uNmChHFCIfETkgFJU,40153
|
|
39
|
+
pygeodesy/geoids.py,sha256=OQvOVutr8R1CalStgxmNu2Mk3oMl4zpCY_OKh0KHpI8,86125
|
|
40
|
+
pygeodesy/hausdorff.py,sha256=KGB0CIeNkBqR0sXIbRJvcgXPrM-4Mpi2aBOqDeZjqZ0,32269
|
|
41
|
+
pygeodesy/heights.py,sha256=_Pn-6w4gGzdXCoA6m72rJm4hb-Fe2vxc8RiRRjq5iTI,41002
|
|
42
|
+
pygeodesy/internals.py,sha256=y3qT-ZbNDc-7md_T87qtVk1x2rDVtJbP5G0P-HgBlVA,24024
|
|
43
|
+
pygeodesy/interns.py,sha256=QTP_6rStQ283DE-rL7rCAcfEffuiAXustBGkCY_DHJ0,23508
|
|
44
|
+
pygeodesy/iters.py,sha256=nKVp_LUQyTqOz_OLzY25g6-_xlKG7lmAnjKKMXESmiM,20345
|
|
45
|
+
pygeodesy/karney.py,sha256=IzWyGwX0kRpwrVFBpCzogd2Q8PLvCdCwHheE-zbCQZE,41629
|
|
46
|
+
pygeodesy/ktm.py,sha256=3CLwbRvk-sr4qs8R9fdJ_ejokgZEjKHULV7wzzuonHU,27259
|
|
47
|
+
pygeodesy/latlonBase.py,sha256=B7wNE-IJf-Sm3NKhCXdrgwRbH_4dBGluZlQdxTJqp8s,75320
|
|
48
|
+
pygeodesy/lazily.py,sha256=2FzJkIQK7LftAXXYxMbqTQUAWth7T3syIhqm8Z9bhuo,47609
|
|
49
|
+
pygeodesy/lcc.py,sha256=7Di2Y5VIDL5drdSce4ABWGT3MtZSosaLKd68US6788s,25786
|
|
50
|
+
pygeodesy/ltp.py,sha256=N3TMipTWKUOeZYzn3UeJJqe5J4Yk788390ohQM1ykAE,50893
|
|
51
|
+
pygeodesy/ltpTuples.py,sha256=t-n7p9A3JCVasv8LKCV4PkOTmXJZi91BkBFm8pBZM5o,59101
|
|
52
|
+
pygeodesy/mgrs.py,sha256=ZgCBH_M_YFxuFu5ukVOVetk-uftv-4GJP-QJrtoqtcU,29842
|
|
53
|
+
pygeodesy/named.py,sha256=NjRLzk0bNSJbPBaqFPjG0UagZj6MarF9O4ZQVQsyV7o,52898
|
|
54
|
+
pygeodesy/namedTuples.py,sha256=JlO8uWmR65RkT7Rdgc9knfI0-bqJeA-tm2ZKsesztVU,30598
|
|
55
|
+
pygeodesy/nvectorBase.py,sha256=XnA_DlqbgYPpF7y_BQHQVmntpI3M5fe0q8h3zX-PKbs,29930
|
|
56
|
+
pygeodesy/osgr.py,sha256=4mFUcn1vMOju3PK1rKohPtIlJZrBGPJrcRjFl-CoxqE,30852
|
|
57
|
+
pygeodesy/points.py,sha256=2vQpgqxJiC7Cgn03pqiezTM4I-CTquv9tQZi4uYWjpw,64497
|
|
58
|
+
pygeodesy/props.py,sha256=GCBqrkMfpbHuca2Sh68WSGDplIeZLvCDDXUewyvEiqI,24600
|
|
59
|
+
pygeodesy/resections.py,sha256=vCbnEyNghGkblrPA58-MspaxkZcInnvRgS-oSBIe1hM,43796
|
|
60
|
+
pygeodesy/simplify.py,sha256=O04NSb0ezXM8z3lCcajXbetZuum6PURAOPYTsJ27gxI,22068
|
|
61
|
+
pygeodesy/solveBase.py,sha256=I2oW7zaPoVUkD7IB9Ro0paU-T1vie1lomg83f71twDY,18468
|
|
62
|
+
pygeodesy/sphericalBase.py,sha256=hq6dyeeIHBy_T0Q6PIwSvmo1U70Ir5KBeMTwQplzqHQ,32071
|
|
63
|
+
pygeodesy/sphericalNvector.py,sha256=bu0yB4PEq1cs6BS8QFqtljWpVEw7ESwq2yILOzGDuAc,54948
|
|
64
|
+
pygeodesy/sphericalTrigonometry.py,sha256=8q3sevqdeJ-mOukkXLsXKAg06hDxaBhiPHhrdQn3UHY,64411
|
|
65
|
+
pygeodesy/streprs.py,sha256=-4LErmfPLtGt1tLDBHhJam-zYq8p2Z2C5wDCMELEml4,23599
|
|
66
|
+
pygeodesy/trf.py,sha256=gpsOJVER1KhITOtyiENQ4EnRONinLkzbujsfzzxHVv8,119209
|
|
67
|
+
pygeodesy/triaxials.py,sha256=V0MSYJxRgYDhZcF7HXnu7oFzRyWJkhwc6scuNjc6VVg,64046
|
|
68
|
+
pygeodesy/units.py,sha256=nH6uNqtaILtGRXqCcHVYBTfhGrv-WFt3w1aso6PA0kM,35419
|
|
69
|
+
pygeodesy/unitsBase.py,sha256=cVNKG24Fov73gLFPGwGdjvXmM-8fd3MDufVubABAMeE,14141
|
|
70
|
+
pygeodesy/ups.py,sha256=k7MDyq_aKO70m8sEeOCvpFb3nyrBmBdbdPST-UgxgeA,23349
|
|
71
|
+
pygeodesy/utily.py,sha256=ZJKuwoo97K7GE56-cA8bGrvyz9mN9OoOMnSOEOw0mj0,40025
|
|
72
|
+
pygeodesy/utm.py,sha256=kcXliftP9q0nTxviIOixVyvResK2Jydj-G52CXJiSuQ,31123
|
|
73
|
+
pygeodesy/utmups.py,sha256=31RD8l7M-vcRXU9_wnkb_PNUcKjOr1HAmwjOndjkgXE,13176
|
|
74
|
+
pygeodesy/utmupsBase.py,sha256=PptZ4Mm8BaDUCA8v1sK54o8idw_24kq6loAuYv0bejE,22730
|
|
75
|
+
pygeodesy/vector2d.py,sha256=7R5ciPxXEX98LmMWNqwbds8Y6vpsHKEeCzcBVDRiq6g,40305
|
|
76
|
+
pygeodesy/vector3d.py,sha256=sC7u9tgFFWoWHFxqtO-dvKVuiEzraw50TDU_QpdDbYw,43045
|
|
77
|
+
pygeodesy/vector3dBase.py,sha256=BHenp3NGpfhVbJ6JMgdNLx6vAcwDWDJIxl9hAdp-AVw,36301
|
|
78
|
+
pygeodesy/webmercator.py,sha256=z3Ft5TeHc9FoLA8zQhzTrSuShHSz0aHjanbvj53ohmo,15016
|
|
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=hMPcfAQbkD1DzwrRTB9pecfoytxHilPp5__n6UYUNlE,8679
|
|
84
|
+
pygeodesy/auxilats/__init__.py,sha256=g3x06SdwuCPcerCHZRyvwY8xaKR5IxZ1YV3AwTnONNg,2883
|
|
85
|
+
pygeodesy/auxilats/__main__.py,sha256=jH0ShJaDR8zWfoLPXuut37BJbVWVDsAm9rb4xc25XOY,3340
|
|
86
|
+
pygeodesy/auxilats/auxAngle.py,sha256=yptBTS1bVjUBkHSq1XV28b-TKJaYAtib_xqRJvECZmA,16734
|
|
87
|
+
pygeodesy/auxilats/auxDLat.py,sha256=lvffZo8DdVWWEHusPNXRYQeoCFfZcG5rNhgEooL5Xu0,10956
|
|
88
|
+
pygeodesy/auxilats/auxDST.py,sha256=ab8ByHMmX1dWBmGgOGxYUlmkZqTKKpawg5maLYYrG7M,10464
|
|
89
|
+
pygeodesy/auxilats/auxLat.py,sha256=2d6uliIVfxOHp8qibom-8l5T7bLONSyTr6LRTt4OwRs,31972
|
|
90
|
+
pygeodesy/auxilats/auxily.py,sha256=2pXzqlOb1Jy8RKcpKFaqy0yFrzhhc7WK666PD3T-_MI,8085
|
|
91
|
+
pygeodesy/deprecated/__init__.py,sha256=QkeQNBFL8OukeYlea0F0PGVUffqs8ZMAN8jDOuHVNvI,2823
|
|
92
|
+
pygeodesy/deprecated/bases.py,sha256=pL4fEW7PTrDc_coggRCcnrs3izp-MWUEyvr6yBNzgMw,1649
|
|
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=y1DcGwGBfIbbTK5upm1XgkbCVIlpGc5MLDn5WxcuLp8,1370
|
|
99
|
+
pygeodesy/deprecated/rhumbaux.py,sha256=pikSwb5cIE-MVwHPFjwGd-JYau_Of-Lf6wgghjNWS98,1423
|
|
100
|
+
pygeodesy/deprecated/rhumbsolve.py,sha256=GRyrxUTT19gjSe8BohUswxXRBjoNWrzQryPbqTH2XhE,1426
|
|
101
|
+
pygeodesy/deprecated/rhumbx.py,sha256=YSzTywlDLfVYZmJjAEi_gLtWbsf4eGxZembaL3wOTuk,1420
|
|
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=KXnzEGNtOtOke01y72dkIgT6sAwOP3zd6wgXho1F3T4,2468
|
|
106
|
+
pygeodesy/geodesicx/__main__.py,sha256=ugi6c-4y91WOMJIL0N-wgXhoGhV90QJIFji2MaIGLiA,4329
|
|
107
|
+
pygeodesy/geodesicx/gx.py,sha256=MdnQat0Q4b6h9jlsOCsJLpmpiDSU84vgip7Gny9nBlw,60971
|
|
108
|
+
pygeodesy/geodesicx/gxarea.py,sha256=1z-CQzi3vEls9Rs-okn003cdR9o_fWtO3lORbk_jpu8,19506
|
|
109
|
+
pygeodesy/geodesicx/gxbases.py,sha256=R9IQXwCK6KOPPcxI6qvdDbVcyuqfYJiZy5jcmrfkJ5A,6390
|
|
110
|
+
pygeodesy/geodesicx/gxline.py,sha256=JbFzLraITpW4xoOx8qCEzkF_5z8AgDSywZj0tcSexsg,27873
|
|
111
|
+
pygeodesy/rhumb/__init__.py,sha256=DsE5a16CUYWE5YTuo1U8mnDCtykuWw7VeGx23Yny_VU,2207
|
|
112
|
+
pygeodesy/rhumb/aux_.py,sha256=NeHkNLS2ULh3sTb3eBTtmRih9SZNyVJKMtJj7imKkuI,16117
|
|
113
|
+
pygeodesy/rhumb/bases.py,sha256=P5AQyL-MTbJaO4oKH_Y7qcusQxaHoAii0hJVQ9mT7hU,54250
|
|
114
|
+
pygeodesy/rhumb/ekx.py,sha256=GMY6ik4fgiRrjek-42cpZxU3U2bdoAcY6ZcbZRckpII,24026
|
|
115
|
+
pygeodesy/rhumb/solve.py,sha256=z8z_XYObTgz7w1skNLNcLBpe-EO_r0H4sVcZGlBcWnc,24005
|
|
116
|
+
pygeodesy-25.5.28.dist-info/METADATA,sha256=fowmWp0l0feRG1MkGeJGcJxfcyDdvoKZu6TrePRyaNY,20102
|
|
117
|
+
pygeodesy-25.5.28.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
|
|
118
|
+
pygeodesy-25.5.28.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
|
|
119
|
+
pygeodesy-25.5.28.dist-info/RECORD,,
|