pygeodesy 25.4.25__py2.py3-none-any.whl → 25.5.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 +191 -189
- pygeodesy/__main__.py +2 -2
- 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/basics.py +1 -1
- pygeodesy/booleans.py +8 -8
- pygeodesy/cartesianBase.py +7 -6
- pygeodesy/clipy.py +2 -2
- pygeodesy/constants.py +2 -2
- 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 +15 -26
- pygeodesy/ecefLocals.py +186 -0
- pygeodesy/ellipsoidalBase.py +2 -2
- pygeodesy/ellipsoidalBaseDI.py +7 -6
- pygeodesy/ellipsoidalExact.py +3 -3
- pygeodesy/ellipsoidalNvector.py +4 -4
- pygeodesy/ellipsoidalVincenty.py +15 -14
- pygeodesy/ellipsoids.py +23 -30
- pygeodesy/elliptic.py +2 -2
- pygeodesy/errors.py +1 -1
- pygeodesy/etm.py +2 -2
- pygeodesy/fmath.py +28 -13
- pygeodesy/formy.py +2 -2
- pygeodesy/frechet.py +5 -5
- pygeodesy/fstats.py +2 -2
- pygeodesy/fsums.py +38 -29
- pygeodesy/gars.py +2 -3
- pygeodesy/geodesici.py +4 -4
- pygeodesy/geodesicx/__init__.py +3 -3
- pygeodesy/geodesicx/gx.py +2 -2
- pygeodesy/geodesicx/gxarea.py +2 -2
- pygeodesy/geodesicx/gxline.py +2 -2
- pygeodesy/geoids.py +5 -5
- pygeodesy/hausdorff.py +4 -4
- pygeodesy/heights.py +2 -2
- pygeodesy/iters.py +1 -1
- pygeodesy/karney.py +2 -2
- pygeodesy/ktm.py +2 -2
- pygeodesy/latlonBase.py +10 -8
- pygeodesy/lazily.py +46 -22
- pygeodesy/lcc.py +2 -2
- pygeodesy/ltp.py +54 -57
- pygeodesy/ltpTuples.py +34 -35
- pygeodesy/mgrs.py +3 -3
- pygeodesy/named.py +2 -147
- pygeodesy/namedTuples.py +3 -3
- pygeodesy/nvectorBase.py +2 -2
- pygeodesy/osgr.py +2 -2
- pygeodesy/points.py +2 -3
- pygeodesy/props.py +16 -16
- pygeodesy/resections.py +90 -82
- 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 +6 -6
- pygeodesy/sphericalNvector.py +2 -2
- pygeodesy/sphericalTrigonometry.py +6 -5
- pygeodesy/trf.py +4 -4
- pygeodesy/triaxials.py +2 -2
- pygeodesy/units.py +7 -8
- pygeodesy/utily.py +2 -2
- pygeodesy/utmupsBase.py +55 -33
- pygeodesy/vector2d.py +16 -10
- pygeodesy/vector3d.py +3 -3
- pygeodesy/webmercator.py +2 -2
- {pygeodesy-25.4.25.dist-info → pygeodesy-25.5.25.dist-info}/METADATA +20 -19
- pygeodesy-25.5.25.dist-info/RECORD +119 -0
- pygeodesy-25.4.25.dist-info/RECORD +0 -118
- {pygeodesy-25.4.25.dist-info → pygeodesy-25.5.25.dist-info}/WHEEL +0 -0
- {pygeodesy-25.4.25.dist-info → pygeodesy-25.5.25.dist-info}/top_level.txt +0 -0
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,10 +5,10 @@ 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
|
-
from pygeodesy.basics import _isin, isint, isscalar, isstr,
|
|
11
|
-
|
|
10
|
+
from pygeodesy.basics import _copysign, _isin, isint, isscalar, isstr, \
|
|
11
|
+
neg_, _xinstanceof, _xsubclassof
|
|
12
12
|
from pygeodesy.constants import _float, _0_0, _0_5, _N_90_0, _180_0
|
|
13
13
|
from pygeodesy.datums import _ellipsoidal_datum, _WGS84
|
|
14
14
|
from pygeodesy.dms import degDMS, parseDMS2
|
|
@@ -29,10 +29,10 @@ from pygeodesy.streprs import Fmt, fstr, _fstrENH2, _xzipairs
|
|
|
29
29
|
from pygeodesy.units import Band, Easting, Lat, Northing, Phi, Scalar, Zone
|
|
30
30
|
from pygeodesy.utily import atan1, _Wrap, wrap360
|
|
31
31
|
|
|
32
|
-
from math import cos, degrees, fabs, sin, tan
|
|
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
|
|
@@ -195,43 +195,65 @@ class UtmUpsBase(_NamedBase):
|
|
|
195
195
|
self._notOverloaded(self)
|
|
196
196
|
|
|
197
197
|
def _footpoint(self, y, lat0, makris):
|
|
198
|
-
'''(INTERNAL)
|
|
198
|
+
'''(INTERNAL) Return the foot-point latitude in C{radians}.
|
|
199
199
|
'''
|
|
200
|
+
F = _MODS.fsums.Fsum
|
|
201
|
+
E = self.datum.ellipsoid
|
|
200
202
|
if y is None:
|
|
201
203
|
_, y = self.eastingnorthing2(falsed=False)
|
|
202
|
-
|
|
203
|
-
E = self.datum.ellipsoid
|
|
204
|
-
P = S(E.Llat(lat0), y)
|
|
204
|
+
B = F(E.Llat(lat0), y)
|
|
205
205
|
if E.isSpherical:
|
|
206
|
-
|
|
206
|
+
r = B.fover(E.a) # == E.b
|
|
207
|
+
|
|
207
208
|
elif makris:
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
if
|
|
209
|
+
b = B.fover(E.b)
|
|
210
|
+
r = fabs(b)
|
|
211
|
+
if r:
|
|
211
212
|
e2 = E.e22 # E.e22abs?
|
|
212
213
|
e4 = E.e4
|
|
213
214
|
|
|
214
|
-
e1 =
|
|
215
|
-
e2 =
|
|
216
|
-
e4 *= cos(
|
|
217
|
-
|
|
218
|
-
s = sin(
|
|
219
|
-
|
|
220
|
-
U =
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
215
|
+
e1 = F(-1, e2 / 4, -11 / 64 * e4).as_iscalar
|
|
216
|
+
e2 = F( e2 / 8, -13 / 128 * e4).as_iscalar
|
|
217
|
+
e4 *= cos(r)**2 / 8
|
|
218
|
+
|
|
219
|
+
s = sin(r * 2)
|
|
220
|
+
r = -r
|
|
221
|
+
U = F(e1 * r, e2 * s, e4 * r, e4 / 8 * 5 * s**2)
|
|
222
|
+
r = _copysign(atan1(E.a * tan(float(U)) / E.b), b)
|
|
223
|
+
|
|
224
|
+
# elif clins: # APRIL-ZJU/clins/include/utils/gps_convert_utils.h
|
|
225
|
+
# n = E.n
|
|
226
|
+
# n2 = n**2
|
|
227
|
+
# n3 = n**3
|
|
228
|
+
# n4 = n**4
|
|
229
|
+
# n5 = n**5
|
|
230
|
+
# A = F(1, n2 / 4, n4 / 64).fmul((E.a + E.b) / 2)
|
|
231
|
+
# r = B.fover(A)
|
|
232
|
+
# R = F(r)
|
|
233
|
+
# if clins: # FootpointLatitude, GPS-Theory-Practice, 1994
|
|
234
|
+
# R += F(3 / 2 * n, -27 / 32 * n3, 269 / 512 * n5).fmul(sin(r * 2))
|
|
235
|
+
# R += F( 21 / 16 * n2, -55 / 32 * n4).fmul(sin(r * 4))
|
|
236
|
+
# R += F( 151 / 96 * n3, -417 / 128 * n5).fmul(sin(r * 6))
|
|
237
|
+
# R += (1097 / 512 * n4) * sin(r * 8)
|
|
238
|
+
# else: # GPS-Theory-Practice, 1992, page 234-235
|
|
239
|
+
# R += F(-3 / 2 * n, 9 / 16 * n3, -3 / 32 * n5).fmul(sin(r * 2))
|
|
240
|
+
# R += F( 15 / 16 * n2, -15 / 32 * n4).fmul(sin(r * 4))
|
|
241
|
+
# R += F( -35 / 48 * n3, 105 / 256 * n4).fmul(sin(r * 6)) # n5?
|
|
242
|
+
# r = float(R)
|
|
243
|
+
|
|
244
|
+
else: # PyGeodetics/src/geodetics/footpoint_latitude.py
|
|
225
245
|
f = E.f
|
|
226
246
|
f2 = f**2
|
|
227
247
|
f3 = f**3
|
|
228
|
-
B0 =
|
|
229
|
-
r =
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
248
|
+
B0 = F(1, -f / 2, f2 / 16, f3 / 32).fmul(E.a)
|
|
249
|
+
r = B.fover(B0)
|
|
250
|
+
R = F(r)
|
|
251
|
+
R += F(3 / 4 * f, 3 / 8 * f2, 21 / 256 * f3).fmul(sin(r * 2))
|
|
252
|
+
R += F( 21 / 64 * f2, 21 / 64 * f3).fmul(sin(r * 4))
|
|
253
|
+
R += (151 / 768 * f3) * sin(r * 6)
|
|
254
|
+
r = float(R)
|
|
255
|
+
|
|
256
|
+
return r
|
|
235
257
|
|
|
236
258
|
@Property_RO
|
|
237
259
|
def gamma(self):
|
|
@@ -251,8 +273,8 @@ class UtmUpsBase(_NamedBase):
|
|
|
251
273
|
def latFootPoint(self, northing=None, lat0=0, makris=False):
|
|
252
274
|
'''Compute the foot-point latitude in C{degrees}.
|
|
253
275
|
|
|
254
|
-
@arg northing: Northing (C{meter}, same units this
|
|
255
|
-
overriding this I{unfalsed}
|
|
276
|
+
@arg northing: Northing (C{meter}, same units this ellipsoid's axes),
|
|
277
|
+
overriding this northing, I{unfalsed}.
|
|
256
278
|
@kwarg lat0: Geodetic latitude of the meridian's origin (C{degrees}).
|
|
257
279
|
@kwarg makris: If C{True}, use C{Makris}' formula, otherwise C{PyGeodetics}'.
|
|
258
280
|
|
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>}
|
|
@@ -16,7 +16,7 @@ from pygeodesy.constants import EPS, EPS0, EPS02, EPS4, INF, INT0, \
|
|
|
16
16
|
_1_0, _1_0_1T, _N_1_0, _2_0, _N_2_0, _4_0
|
|
17
17
|
from pygeodesy.errors import _and, _AssertionError, IntersectionError, NumPyError, \
|
|
18
18
|
PointsError, TriangleError, _xError, _xkwds
|
|
19
|
-
from pygeodesy.fmath import fabs, fdot, fdot_, hypot, hypot2_, sqrt
|
|
19
|
+
from pygeodesy.fmath import fabs, fdot, Fdot_, fdot_, hypot, hypot2_, sqrt
|
|
20
20
|
from pygeodesy.fsums import _Fsumf_, fsumf_, fsum1f_
|
|
21
21
|
# from pygeodesy.internals import typename # from .basics
|
|
22
22
|
from pygeodesy.interns import NN, _a_, _and_, _b_, _c_, _center_, _coincident_, \
|
|
@@ -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.09'
|
|
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
|
'''
|
|
@@ -755,8 +761,8 @@ def _trilaterate2d2(x1, y1, radius1, x2, y2, radius2, x3, y3, radius3,
|
|
|
755
761
|
raise IntersectionError(_and(_astr(x1=x1, y1=y1, radius1=r1),
|
|
756
762
|
_astr(x2=x2, y2=y2, radius2=r2),
|
|
757
763
|
_astr(x3=x3, y3=y3, radius3=r3)), txt=t)
|
|
758
|
-
t = Vector2Tuple(
|
|
759
|
-
|
|
764
|
+
t = Vector2Tuple(Fdot_(c, e, -b, f).fover(q),
|
|
765
|
+
Fdot_(a, f, -c, d).fover(q), name=typename(trilaterate2d2))
|
|
760
766
|
|
|
761
767
|
if eps and eps > 0: # check distances to center vs radius
|
|
762
768
|
for x, y, r in ((x1, y1, r1), (x2, y2, r2), (x3, y3, r3)):
|
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.
|
|
3
|
+
Version: 25.5.25
|
|
4
4
|
Summary: Pure Python geodesy tools
|
|
5
5
|
Home-page: https://GitHub.com/mrJean1/PyGeodesy
|
|
6
6
|
Author: Jean M. Brouwers
|
|
@@ -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
|
-
|
|
33
|
-
|
|
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
|
|
@@ -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:
|
|
167
|
+
*Last updated: May 25, 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
|
|
@@ -244,6 +243,7 @@ DEALINGS IN THE SOFTWARE.
|
|
|
244
243
|
.. _Latitude/Longitude: https://www.Movable-Type.co.UK/scripts/latlong.html
|
|
245
244
|
.. _LatLon: https://mrJean1.GitHub.io/PyGeodesy/docs/pygeodesy-LatLon-attributes-table.html
|
|
246
245
|
.. _Liang-Barsky: https://www.CS.Helsinki.FI/group/goa/viewing/leikkaus/intro.html
|
|
246
|
+
.. _LTP: https://WikiPedia.org/wiki/Local_tangent_plane_coordinates
|
|
247
247
|
.. _McCabe: https://PyPI.org/project/mccabe
|
|
248
248
|
.. _MGRS: https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1MGRS.html
|
|
249
249
|
.. _MIT License: https://OpenSource.org/licenses/MIT
|
|
@@ -264,6 +264,7 @@ DEALINGS IN THE SOFTWARE.
|
|
|
264
264
|
.. _Ramer-Douglas-Peucker: https://WikiPedia.org/wiki/Ramer-Douglas-Peucker_algorithm
|
|
265
265
|
.. _Reumann-Witkam: https://psimpl.SourceForge.net/reumann-witkam.html
|
|
266
266
|
.. _RhumbSolve: https://GeographicLib.SourceForge.io/C++/doc/utilities.html
|
|
267
|
+
.. _Ruff: https://GitHub.com/astral-sh/ruff
|
|
267
268
|
.. _scipy: https://PyPI.org/project/scipy
|
|
268
269
|
.. _simplify: https://Bost.Ocks.org/mike/simplify
|
|
269
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=lJoIhQqDE5sqmoU2P-S8CbYP2AR1CEMSqZvNu9ulO4U,42290
|
|
3
|
+
pygeodesy/__main__.py,sha256=B7CImXa4fm8lEqjTTp5AEalqIhldNpghdHtJkyMdyh0,5522
|
|
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=ncA4SV-2TX78CUsRKRgFh43g5NhkW_Iy1mnnudA3Nog,73683
|
|
8
|
+
pygeodesy/cartesianBase.py,sha256=tvb1pGUTvSkIAInNhrnHXjBCwnQrVn6a-H2fipoapKE,45365
|
|
9
|
+
pygeodesy/clipy.py,sha256=a0azaK7YDmGDU8mVVKe2MvUiPEhqZ9XJ-9u0T1iHKbo,27779
|
|
10
|
+
pygeodesy/constants.py,sha256=xU8_niBOG4VFdWEqCi4XARiNJEAmprSTPCNkUrG3Bec,19899
|
|
11
|
+
pygeodesy/css.py,sha256=Vn4MSpCagj55L_SM47AVX6V5sPglG17X1JJiU1rW1yA,25797
|
|
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=YVGVUmBTYu4NuYZdIx2f6zCCXM6Tqbv2nlkXQBqhvus,16973
|
|
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=HLFjX6o26q2fzVCjLSL0PdEh96xhGtjfzo2V_k54j4A,30146
|
|
23
|
+
pygeodesy/ellipsoidalVincenty.py,sha256=5syxUVS5RbTz9ZATU4ViegJPFBpdZWt6i8ZGVInype4,26122
|
|
24
|
+
pygeodesy/ellipsoids.py,sha256=v964yZIL2nCc8MJgt3nzV6pczaQsQubXmX_sAh_nrBw,107765
|
|
25
|
+
pygeodesy/elliptic.py,sha256=JkZzRytShhZsLnS-t031UA49DZnKXjob6ocGQZKI-GA,45020
|
|
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=k-6pWb3WQAXXIUdAzG2AnFxvnmK7k-GHj4CoYdzDNbg,35592
|
|
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=dafScZ4nVuC_vlHXuYlSan32CsIEiL9uNcJYfnY1NtQ,29004
|
|
37
|
+
pygeodesy/geodsolve.py,sha256=fFlyNlkEOpkJaeddEuKwfhtqaZjmVs0egNGM5cwFFoc,29101
|
|
38
|
+
pygeodesy/geohash.py,sha256=1P9-k9sMN-ZVFr2iWbQpFi1lg3uNmChHFCIfETkgFJU,40153
|
|
39
|
+
pygeodesy/geoids.py,sha256=Uke9Lvb0QzMicWyE_H6dwYoCGhby3-1rCAQ-TIoCSgo,86129
|
|
40
|
+
pygeodesy/hausdorff.py,sha256=3iDV4FetRrHcz2D1ddswx56XNi18zzCE2HMTDDoK6sI,32273
|
|
41
|
+
pygeodesy/heights.py,sha256=FfBP1-Zw9XCjp3sBrTqtgZr_KKeejne2cizW0Lhkg_U,41014
|
|
42
|
+
pygeodesy/internals.py,sha256=0jfelLhG50VY0hgy2qzqUvEFDJrcLDfpI_eNs4Go6BI,24028
|
|
43
|
+
pygeodesy/interns.py,sha256=IBM_RuZDmP__4TUx9MLCU3L-Vx5uZz0VBi2eoH0hV44,23467
|
|
44
|
+
pygeodesy/iters.py,sha256=nKVp_LUQyTqOz_OLzY25g6-_xlKG7lmAnjKKMXESmiM,20345
|
|
45
|
+
pygeodesy/karney.py,sha256=xlkRlmg66XRdL1ale2sWHhxfostQU86II4qwNyk-ewM,40938
|
|
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=N31gphU0nSrc-i2CeJYux7CgbHrTfHwAXajta-mV57s,25790
|
|
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=ALaBNSPLpaDjFTtwdYeTVqMZhGqLLiERTCAmTrGrjd0,24608
|
|
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=T3vZJV7FSb7Y_cZJDZeIuBL_qh-YvRNBNOuQABwXPp4,32087
|
|
63
|
+
pygeodesy/sphericalNvector.py,sha256=uS40EpEQfVaz3-fwFBNfHg4gOkk1CWcm1tHrvfpQbmc,54824
|
|
64
|
+
pygeodesy/sphericalTrigonometry.py,sha256=fATw2WUWvY3smtg0vwIczIsl9GamsjwJ3zEwM-subv0,64110
|
|
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=djVevQCHZWfzbwmPIZRpPFeKY6pkrOAsydrYAW4pqK8,40309
|
|
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=nvErvXV6ELc5_B2qBffFMf_n6qbk_g4ewChEuzbgVKI,60791
|
|
108
|
+
pygeodesy/geodesicx/gxarea.py,sha256=zedg2zYlQv4DK0gwr3JeQWdtWcFuLSjzls8ddrk4Av0,19461
|
|
109
|
+
pygeodesy/geodesicx/gxbases.py,sha256=EF9IL_oQBSlF70_ROag-DRBoU-ASWKlX-l-wfrUEQYs,6130
|
|
110
|
+
pygeodesy/geodesicx/gxline.py,sha256=WaptQVCDqdVoyhLOP2e0g5fq-UuDOjz86B1bEjLs1SY,27653
|
|
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.25.dist-info/METADATA,sha256=mvciPhcidpH1u2mDSmMdSRQykcl7CDCqanD46bFFzM0,20102
|
|
117
|
+
pygeodesy-25.5.25.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
|
|
118
|
+
pygeodesy-25.5.25.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
|
|
119
|
+
pygeodesy-25.5.25.dist-info/RECORD,,
|