pygeodesy 24.5.2__py2.py3-none-any.whl → 24.5.6__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-24.5.2.dist-info → PyGeodesy-24.5.6.dist-info}/METADATA +2 -2
- {PyGeodesy-24.5.2.dist-info → PyGeodesy-24.5.6.dist-info}/RECORD +16 -16
- pygeodesy/__init__.py +1 -1
- pygeodesy/ecef.py +12 -13
- pygeodesy/errors.py +2 -3
- pygeodesy/fmath.py +201 -178
- pygeodesy/fstats.py +48 -46
- pygeodesy/fsums.py +286 -228
- pygeodesy/interns.py +8 -6
- pygeodesy/named.py +18 -6
- pygeodesy/props.py +8 -7
- pygeodesy/streprs.py +16 -7
- pygeodesy/vector2d.py +2 -2
- pygeodesy/vector3d.py +2 -2
- {PyGeodesy-24.5.2.dist-info → PyGeodesy-24.5.6.dist-info}/WHEEL +0 -0
- {PyGeodesy-24.5.2.dist-info → PyGeodesy-24.5.6.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PyGeodesy
|
|
3
|
-
Version: 24.5.
|
|
3
|
+
Version: 24.5.6
|
|
4
4
|
Summary: Pure Python geodesy tools
|
|
5
5
|
Home-page: https://GitHub.com/mrJean1/PyGeodesy
|
|
6
6
|
Author: Jean M. Brouwers
|
|
@@ -158,7 +158,7 @@ and McCabe_ using Python 2.7.18 and with Flake8_ using Python 3.11.5, both in 64
|
|
|
158
158
|
|
|
159
159
|
For a summary of all *Karney*-based functionality in ``pygeodesy``, see module karney_.
|
|
160
160
|
|
|
161
|
-
*Last updated: May
|
|
161
|
+
*Last updated: May 06, 2024.*
|
|
162
162
|
|
|
163
163
|
License
|
|
164
164
|
=======
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
|
|
2
|
-
pygeodesy/__init__.py,sha256=
|
|
2
|
+
pygeodesy/__init__.py,sha256=5Q85uqE7EHB5oDhKSCKkujvjELK-sTT7tomCX4OfaKE,40733
|
|
3
3
|
pygeodesy/__main__.py,sha256=qMFG3caY8ZXWu6uGiemzyT4OqTFZnsFtlxcGCAgkVJw,4637
|
|
4
4
|
pygeodesy/albers.py,sha256=g2AVlpV8JO2AYFCthoIbRC2h1OJqjb9P3hpwF0C3TI8,30994
|
|
5
5
|
pygeodesy/azimuthal.py,sha256=tc4JxgLi-0jzU08m4Bvi-t-kzHXYPeGuzL3j_tyVFUA,50125
|
|
@@ -11,7 +11,7 @@ pygeodesy/constants.py,sha256=RxO8dMe_3AEfmZyKaRIy_44QnOTdEpzgYwimN0_w9Qs,19113
|
|
|
11
11
|
pygeodesy/css.py,sha256=sKXsahUiyruDcUk-tGjA6mxq-xzwBoBKxKo9_b2uBmY,25394
|
|
12
12
|
pygeodesy/datums.py,sha256=gJZPgV4bELZvZ8Sj2zE3MBysVtsLxqsN8zm0xjOKvpo,33851
|
|
13
13
|
pygeodesy/dms.py,sha256=op3MU-59CoJQRdybnu21aVM9wtocd_-XFNAZFqmozSo,44439
|
|
14
|
-
pygeodesy/ecef.py,sha256=
|
|
14
|
+
pygeodesy/ecef.py,sha256=47zX9rr7MdWY0K9shMqLbxGIb13MkNEUDDxtGigFwHE,59682
|
|
15
15
|
pygeodesy/elevations.py,sha256=ZTxzLWHLUrghFI9Fkl0ZGHzdiLDe0y3ImGUsfxFg6Qc,10814
|
|
16
16
|
pygeodesy/ellipsoidalBase.py,sha256=dqEmBFguS_Q0K95VaBN7oZOVEaxHuicLCrqIuj1QM7w,56639
|
|
17
17
|
pygeodesy/ellipsoidalBaseDI.py,sha256=MSuQI3PlJAHL7gtVy4t0qkm1QP3zeHqbkG4tnMDWDIg,38510
|
|
@@ -23,13 +23,13 @@ pygeodesy/ellipsoidalVincenty.py,sha256=Uk93B8GFcMnWiwKUOA84TlLwbBlvzVnsAXAx0cU7
|
|
|
23
23
|
pygeodesy/ellipsoids.py,sha256=SxMsivNnE9ibUjQGd0d24H0SzoSjh6jfhLWjasOWpao,119946
|
|
24
24
|
pygeodesy/elliptic.py,sha256=XRVpmpdm3hbztM4P-qhWKQizbgsXDUxWujgmOrIpgiQ,42428
|
|
25
25
|
pygeodesy/epsg.py,sha256=ldHoLWqJWR4FUiBVnDTtrI_e7TNjjtr9OkxDlri1g5E,8165
|
|
26
|
-
pygeodesy/errors.py,sha256=
|
|
26
|
+
pygeodesy/errors.py,sha256=RHZ_f1zcOIyLQYProiQznaAOhojbDPDR4XbblXJMuS0,27232
|
|
27
27
|
pygeodesy/etm.py,sha256=joEhU2lw9ehRv101nRpZvXq8hOYAEzdcYFpif9_obfk,44585
|
|
28
|
-
pygeodesy/fmath.py,sha256=
|
|
28
|
+
pygeodesy/fmath.py,sha256=HCnndaXPwRIW8gGIVzbACftxIZZUUrRAiIAFfgVYLgw,33477
|
|
29
29
|
pygeodesy/formy.py,sha256=Rces4Q5ecED0WVfuI9mQzeyHE54LDowYfI6faBHpyeA,74536
|
|
30
30
|
pygeodesy/frechet.py,sha256=qgee-ISBtT7Ov3rJkcd_t-WeXTbeNoMSQuMa0j3MyQc,33512
|
|
31
|
-
pygeodesy/fstats.py,sha256=
|
|
32
|
-
pygeodesy/fsums.py,sha256=
|
|
31
|
+
pygeodesy/fstats.py,sha256=UcaUuUpnQqaE8T7rqHCT6eptqa-IG23LsiCiOUh43U0,25681
|
|
32
|
+
pygeodesy/fsums.py,sha256=VttiMEC02riVsWWh2SqhLD3rwo2af0RsAvxvpiNSqsw,77895
|
|
33
33
|
pygeodesy/gars.py,sha256=fCiWBJ4kOJxPfNOxadX-OzBGDXj7C9g02NuGHiZa_88,11342
|
|
34
34
|
pygeodesy/geodesicw.py,sha256=5yjJ2rLekSsjT7e-Km6v592ZcFlA41flQP_E42jU9Sw,26901
|
|
35
35
|
pygeodesy/geodsolve.py,sha256=3GLI2_4gglzTpZwKchNzAv-XhWFBzWRKjcWsjCC3dvI,21900
|
|
@@ -37,7 +37,7 @@ pygeodesy/geohash.py,sha256=HwukecfkWvyfz9LHKfoA-WddQHYot_mB04o0lyWrKyU,32382
|
|
|
37
37
|
pygeodesy/geoids.py,sha256=EwZJ50qRXeZb1591N99hnamM_EC2NP6MIhLb5swVHf4,80605
|
|
38
38
|
pygeodesy/hausdorff.py,sha256=LJULGbDop4xqiWeRH5-Uayvk5WVCZQpxK4PCYu4kqSs,34192
|
|
39
39
|
pygeodesy/heights.py,sha256=tjr-5eb8UXn2MAp6-157sb6qxPREFk5dtDjHtBgIgZ8,42528
|
|
40
|
-
pygeodesy/interns.py,sha256=
|
|
40
|
+
pygeodesy/interns.py,sha256=LzgIw5JEMLMc_56v0n3LxgpcQ0cpdRghkus8yorcuGQ,30188
|
|
41
41
|
pygeodesy/iters.py,sha256=CfU365eE9F4oWZbBx0qTEvfodMhpa8rGOepLIv67xF8,20181
|
|
42
42
|
pygeodesy/karney.py,sha256=lYdsSHis8xQJVS1V0F3cphx6Dhgd77xTlMOdVR8MN8I,34994
|
|
43
43
|
pygeodesy/ktm.py,sha256=sCvbLvJItavlruilAyjeZ0sOZx2yJumzGe_UiIVbGi4,27315
|
|
@@ -47,19 +47,19 @@ pygeodesy/lcc.py,sha256=yNpmAdOwv3HNh2ZLopF5QtvDokeQYCmnxSc8UFUPHO4,25737
|
|
|
47
47
|
pygeodesy/ltp.py,sha256=8se8dYG7LG__Ru0FoK939DJBF9GCQGeJik_Un1Im8Xw,48609
|
|
48
48
|
pygeodesy/ltpTuples.py,sha256=iKzvDfv33HfmEevjNISUS4c9KXIkiISEkVlQopyKgfY,55769
|
|
49
49
|
pygeodesy/mgrs.py,sha256=GJ-vG54E2zSLtROyqJ_kj8fHH-8jWGf3kVe7gb8993o,28978
|
|
50
|
-
pygeodesy/named.py,sha256=
|
|
50
|
+
pygeodesy/named.py,sha256=MzYSWAckYfwJKIdG7duN-6pt1byb9_ZZ7772czjma50,48269
|
|
51
51
|
pygeodesy/namedTuples.py,sha256=msEYvQKj4oCW35Kx80RpeQXY85A1G0O3GEqsysLaV2M,27288
|
|
52
52
|
pygeodesy/nvectorBase.py,sha256=WJY5ylZ_HCeM1wGL7ryEecJphEYibp-EAWL0piKlMG8,28766
|
|
53
53
|
pygeodesy/osgr.py,sha256=voC1rbOe4dnS_EjaDaRDRUQ4MoG7puMBEMV6lcAuIBI,31029
|
|
54
54
|
pygeodesy/points.py,sha256=QNAAF0r7iqSXFr_6aQm-wW7f6vU3KusWVhXEMVeVo58,64442
|
|
55
|
-
pygeodesy/props.py,sha256=
|
|
55
|
+
pygeodesy/props.py,sha256=rPVqHSnowuDeQR95zFKGwmY0356X2WGW-yRsL2fODCo,21500
|
|
56
56
|
pygeodesy/resections.py,sha256=nkfBxYrsEdyq2JqAbPrRWKplJBzFkIXLvEZGB4gPu_A,43550
|
|
57
57
|
pygeodesy/simplify.py,sha256=FT3AzXiFjFfvwJ-X2q8iA9cQOUVdBT1vD_BIskM3gK8,25223
|
|
58
58
|
pygeodesy/solveBase.py,sha256=cBe3QQWEaJlPWUlXoiYo1eFMh4z6GDZbQyt8ZiwMfos,16687
|
|
59
59
|
pygeodesy/sphericalBase.py,sha256=sH2WwmY_RL0STyr1OhtCDKvGhO0Ks7o3V-MHLddpiHQ,31944
|
|
60
60
|
pygeodesy/sphericalNvector.py,sha256=TBs_nid_DTcox7bBegh_Djv4zZRGRY4mH6dd1xIHGms,56963
|
|
61
61
|
pygeodesy/sphericalTrigonometry.py,sha256=Q9qsqzIK43xBken2G8uP9snPXPuBoZ20pMHqbT_IjG0,64216
|
|
62
|
-
pygeodesy/streprs.py,sha256=
|
|
62
|
+
pygeodesy/streprs.py,sha256=8t10NwrS3DmuX6Qig0TDIR7bEWRFmnQUwV1_ItL9zd0,23940
|
|
63
63
|
pygeodesy/trf.py,sha256=4gVtF780EEZEqWwMBDe4x1AEkIz3hB8h4l0_0NXWM5U,118903
|
|
64
64
|
pygeodesy/triaxials.py,sha256=nYFQcLimivcxpeXMj9a83iWuENDU1gI-2zNgCkZzL0U,61549
|
|
65
65
|
pygeodesy/units.py,sha256=ofFTYc7mF9wOpfvpYHN83dGszMM18rTdsxfEXVzaIko,38705
|
|
@@ -69,8 +69,8 @@ pygeodesy/utily.py,sha256=jP82RmCPCVghxTQv4ZRuIS89afmsD-roz2iafHfyHXA,36128
|
|
|
69
69
|
pygeodesy/utm.py,sha256=0qF5Kjw8Wf9zxGWOaCF-LSweibat-EkHvvmy7dFO_KE,30981
|
|
70
70
|
pygeodesy/utmups.py,sha256=u2hlWSnmZKwR-ApgKw16R9p75sW_yaqQAmbcBUE8Zfg,13007
|
|
71
71
|
pygeodesy/utmupsBase.py,sha256=KetB8R0uRYU6X8nLG3JkBHUr1OfNlChKa0isgvm8Yq8,18807
|
|
72
|
-
pygeodesy/vector2d.py,sha256=
|
|
73
|
-
pygeodesy/vector3d.py,sha256=
|
|
72
|
+
pygeodesy/vector2d.py,sha256=pSvfpFoSa5R37o9tSmRma7KsjNnN9GwTDG9rhFOEmfA,35004
|
|
73
|
+
pygeodesy/vector3d.py,sha256=6ZLYLhZJoOM6UVJlbV8segkVXcFt38HA-SywCdWsynM,44972
|
|
74
74
|
pygeodesy/vector3dBase.py,sha256=wJpEcgHlJ5Qu0Us7CKuNDepZQzo6a-RvqZbA2-O4-ko,35583
|
|
75
75
|
pygeodesy/webmercator.py,sha256=1IXiAHBXTm5kMCp5gEI67oBJeRXD7BiPVI7bcRRX1U4,14918
|
|
76
76
|
pygeodesy/wgrs.py,sha256=AKUrYRCC67lOeJ6vUDAiGb_mY6R3ZwflXpOaP3wauOg,14774
|
|
@@ -109,7 +109,7 @@ pygeodesy/rhumb/aux_.py,sha256=W4HkgoHAQz_aWaysfsmOA5010nCGvBfUs2Q-bymnHYU,16660
|
|
|
109
109
|
pygeodesy/rhumb/bases.py,sha256=kzU_Dgt4FNPMgTg5rqbw-HiNpflDPKpmq9jhPbQmR4U,53851
|
|
110
110
|
pygeodesy/rhumb/ekx.py,sha256=lF3tZ-ZY9fPJV8y1kgHW-7EOZCyb3gJr-kR-jj5Fbf8,23871
|
|
111
111
|
pygeodesy/rhumb/solve.py,sha256=NZfwx7xv5UriQs7A0c7ZhoxxVUeAT15UwXK_jtwEXQw,27802
|
|
112
|
-
PyGeodesy-24.5.
|
|
113
|
-
PyGeodesy-24.5.
|
|
114
|
-
PyGeodesy-24.5.
|
|
115
|
-
PyGeodesy-24.5.
|
|
112
|
+
PyGeodesy-24.5.6.dist-info/METADATA,sha256=5ijdMD-qHxonaJpVNVWA0GMecR-fjfEAVCcSvFwWfuc,19363
|
|
113
|
+
PyGeodesy-24.5.6.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
|
|
114
|
+
PyGeodesy-24.5.6.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
|
|
115
|
+
PyGeodesy-24.5.6.dist-info/RECORD,,
|
pygeodesy/__init__.py
CHANGED
pygeodesy/ecef.py
CHANGED
|
@@ -67,7 +67,7 @@ from pygeodesy.datums import a_f2Tuple, _ellipsoidal_datum, _WGS84, _EWGS84
|
|
|
67
67
|
# from pygeodesy.ellipsoids import a_f2Tuple, _EWGS84 # from .datums
|
|
68
68
|
from pygeodesy.errors import _IndexError, LenError, _ValueError, _TypesError, \
|
|
69
69
|
_xattr, _xdatum, _xkwds, _xkwds_get
|
|
70
|
-
from pygeodesy.fmath import cbrt, fdot, hypot, hypot1, hypot2_
|
|
70
|
+
from pygeodesy.fmath import cbrt, fdot, Fpowers, hypot, hypot1, hypot2_, sqrt0
|
|
71
71
|
from pygeodesy.fsums import Fsum, fsumf_, Fmt, unstr
|
|
72
72
|
from pygeodesy.interns import NN, _a_, _C_, _datum_, _ellipsoid_, _f_, _height_, \
|
|
73
73
|
_lat_, _lon_, _M_, _name_, _singular_, _SPACE_, \
|
|
@@ -86,7 +86,7 @@ from pygeodesy.utily import atan1, atan1d, atan2d, degrees90, degrees180, \
|
|
|
86
86
|
from math import atan2, cos, degrees, fabs, radians, sqrt
|
|
87
87
|
|
|
88
88
|
__all__ = _ALL_LAZY.ecef
|
|
89
|
-
__version__ = '24.04
|
|
89
|
+
__version__ = '24.05.04'
|
|
90
90
|
|
|
91
91
|
_Ecef_ = 'Ecef'
|
|
92
92
|
_prolate_ = 'prolate'
|
|
@@ -797,14 +797,14 @@ class EcefYou(_EcefBase):
|
|
|
797
797
|
|
|
798
798
|
def __init__(self, a_ellipsoid=_EWGS84, f=None, **name_lon00): # PYCHOK signature
|
|
799
799
|
_EcefBase.__init__(self, a_ellipsoid, f=f, **name_lon00) # inherited documentation
|
|
800
|
-
|
|
800
|
+
self._ee2 = EcefYou._ee2(self.ellipsoid)
|
|
801
801
|
|
|
802
802
|
@staticmethod
|
|
803
|
-
def
|
|
803
|
+
def _ee2(E):
|
|
804
804
|
e2 = E.a2 - E.b2
|
|
805
805
|
if e2 < 0 or E.f < 0:
|
|
806
806
|
raise EcefError(ellipsoid=E, txt=_prolate_)
|
|
807
|
-
return e2
|
|
807
|
+
return sqrt0(e2), e2
|
|
808
808
|
|
|
809
809
|
def reverse(self, xyz, y=None, z=None, M=None, **name_lon00): # PYCHOK unused M
|
|
810
810
|
'''Convert geocentric C{(x, y, z)} to geodetic C{(lat, lon, height)}
|
|
@@ -831,13 +831,12 @@ class EcefYou(_EcefBase):
|
|
|
831
831
|
'''
|
|
832
832
|
x, y, z, name = _xyzn4(xyz, y, z, self._Geocentrics, **name_lon00)
|
|
833
833
|
|
|
834
|
-
E
|
|
835
|
-
e2 =
|
|
836
|
-
e = sqrt(e2) if e2 > 0 else _0_0 # XXX sqrt0(e2)?
|
|
834
|
+
E = self.ellipsoid
|
|
835
|
+
e, e2 = self._ee2
|
|
837
836
|
|
|
838
|
-
q
|
|
839
|
-
|
|
840
|
-
u
|
|
837
|
+
q = hypot(x, y) # R
|
|
838
|
+
u = Fpowers(2, x, y, z) - e2
|
|
839
|
+
u = u.fadd_(hypot(u, e * z * _2_0)).fover(_2_0)
|
|
841
840
|
if u > EPS02:
|
|
842
841
|
u = sqrt(u)
|
|
843
842
|
p = hypot(u, e)
|
|
@@ -849,8 +848,8 @@ class EcefYou(_EcefBase):
|
|
|
849
848
|
if isnon0(d):
|
|
850
849
|
B += fsumf_(u * E.b, -p, e2) / d
|
|
851
850
|
sB, cB = sincos2(B)
|
|
852
|
-
elif u <
|
|
853
|
-
raise EcefError(x=x, y=y, z=z, txt=_singular_)
|
|
851
|
+
elif u < (-EPS2):
|
|
852
|
+
raise EcefError(x=x, y=y, z=z, u=u, txt=_singular_)
|
|
854
853
|
else:
|
|
855
854
|
sB, cB = _copysign_1_0(z), _0_0
|
|
856
855
|
|
pygeodesy/errors.py
CHANGED
|
@@ -25,7 +25,7 @@ from pygeodesy.lazily import _ALL_LAZY, _ALL_MODS as _MODS, _getenv, _PYTHON_X_D
|
|
|
25
25
|
from copy import copy as _copy
|
|
26
26
|
|
|
27
27
|
__all__ = _ALL_LAZY.errors # _ALL_DOCS('_InvalidError', '_IsnotError') _under
|
|
28
|
-
__version__ = '24.
|
|
28
|
+
__version__ = '24.05.06'
|
|
29
29
|
|
|
30
30
|
_box_ = 'box'
|
|
31
31
|
_limiterrors = True # in .formy
|
|
@@ -397,15 +397,14 @@ def _error_init(Error, inst, args, fmt_name_value='%s (%r)', txt=NN,
|
|
|
397
397
|
|
|
398
398
|
t, n = (), len(args)
|
|
399
399
|
if n > 2:
|
|
400
|
-
s = _MODS.basics.isodd(n)
|
|
401
400
|
t = _fmtuple(zip(args[0::2], args[1::2]))
|
|
401
|
+
s = _MODS.basics.isodd(n)
|
|
402
402
|
if s: # XXX _xzip(..., strict=s)
|
|
403
403
|
t += args[-1:]
|
|
404
404
|
elif n == 2:
|
|
405
405
|
t = (fmt_name_value % args),
|
|
406
406
|
elif n: # == 1
|
|
407
407
|
t = str(args[0]),
|
|
408
|
-
|
|
409
408
|
if kwds:
|
|
410
409
|
t += _fmtuple(_MODS.basics.itemsorted(kwds))
|
|
411
410
|
t = _or(*t) if t else _SPACE_(_name_value_, MISSING)
|