pygeodesy 24.4.24__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.4.24.dist-info → PyGeodesy-24.5.6.dist-info}/METADATA +2 -2
- {PyGeodesy-24.4.24.dist-info → PyGeodesy-24.5.6.dist-info}/RECORD +19 -19
- pygeodesy/__init__.py +1 -2
- pygeodesy/auxilats/auxAngle.py +3 -3
- pygeodesy/basics.py +2 -2
- pygeodesy/ecef.py +12 -13
- pygeodesy/errors.py +2 -3
- pygeodesy/fmath.py +201 -178
- pygeodesy/fstats.py +49 -47
- pygeodesy/fsums.py +758 -624
- pygeodesy/interns.py +8 -7
- pygeodesy/named.py +18 -6
- pygeodesy/props.py +8 -7
- pygeodesy/streprs.py +18 -7
- pygeodesy/triaxials.py +5 -5
- pygeodesy/vector2d.py +2 -2
- pygeodesy/vector3d.py +2 -2
- {PyGeodesy-24.4.24.dist-info → PyGeodesy-24.5.6.dist-info}/WHEEL +0 -0
- {PyGeodesy-24.4.24.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.
|
|
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:
|
|
161
|
+
*Last updated: May 06, 2024.*
|
|
162
162
|
|
|
163
163
|
License
|
|
164
164
|
=======
|
|
@@ -1,9 +1,9 @@
|
|
|
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
|
|
6
|
-
pygeodesy/basics.py,sha256=
|
|
6
|
+
pygeodesy/basics.py,sha256=Mh70LwAH185gr8aYhdOhfqAa-SkHvAatlJEOFIH7N8Y,28162
|
|
7
7
|
pygeodesy/booleans.py,sha256=HZbwoL-S7Ww9d4C2D1BVqXfmcuqqVpEVSU9_S0uyUyo,74204
|
|
8
8
|
pygeodesy/cartesianBase.py,sha256=I3q29mRdBB3NCDmPoJsJ0QOFfLzkdMWc8X9zG4IwJyA,47264
|
|
9
9
|
pygeodesy/clipy.py,sha256=VU3ynQ1IZ0v5hJlicqD48oW0imRgiL5_ZzRPrIjpfPw,27683
|
|
@@ -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,21 +47,21 @@ 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
|
-
pygeodesy/triaxials.py,sha256=
|
|
64
|
+
pygeodesy/triaxials.py,sha256=nYFQcLimivcxpeXMj9a83iWuENDU1gI-2zNgCkZzL0U,61549
|
|
65
65
|
pygeodesy/units.py,sha256=ofFTYc7mF9wOpfvpYHN83dGszMM18rTdsxfEXVzaIko,38705
|
|
66
66
|
pygeodesy/unitsBase.py,sha256=xRZlNlO7S47Mwy0FGBg_cefvB4fEtWFM5dAE-Nlw-NE,13111
|
|
67
67
|
pygeodesy/ups.py,sha256=07AG-Rb1D4EvmN3g-xk3ZxKzyaNYvOzztcyYbx7t8jc,23229
|
|
@@ -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
|
|
@@ -79,7 +79,7 @@ pygeodesy/auxilats/_CX_6.py,sha256=x4hrHxunjqqkEsZbVW1dyn3R5mR8EWYOuX77RzDEyh4,1
|
|
|
79
79
|
pygeodesy/auxilats/_CX_8.py,sha256=t-OO48t4cCOsOgMi1FoyPw2DQqybVZFsgQMqAYP-jKY,25304
|
|
80
80
|
pygeodesy/auxilats/__init__.py,sha256=yOa5RDYOOed9Z4dvcKlatH0JBgohAJ8ADXjU9mZGTfQ,2881
|
|
81
81
|
pygeodesy/auxilats/__main__.py,sha256=TVN8evCKEzBKdANU5-Ucps8bZySqBTQmEGU4hy_U1cw,2980
|
|
82
|
-
pygeodesy/auxilats/auxAngle.py,sha256=
|
|
82
|
+
pygeodesy/auxilats/auxAngle.py,sha256=LEa1GVR1EOYnTxR-mBLUj4mGoLO6jRrpsyG4v7N8W_0,16727
|
|
83
83
|
pygeodesy/auxilats/auxDLat.py,sha256=U3BHF6AkW5--nrwH9whL5wZVIZLH_keRLfUz6c6KBx4,10950
|
|
84
84
|
pygeodesy/auxilats/auxDST.py,sha256=bdNEh3TdABWH7qW6ngZx5SnzDM3B5rtPLvYhvCnFsKc,10497
|
|
85
85
|
pygeodesy/auxilats/auxLat.py,sha256=U6thEwMEoUm4OFb2_JviEtEn2-nqyVjNbII7oyMf0hM,31282
|
|
@@ -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.
|
|
113
|
-
PyGeodesy-24.
|
|
114
|
-
PyGeodesy-24.
|
|
115
|
-
PyGeodesy-24.
|
|
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
|
@@ -194,7 +194,6 @@ The following environment variables are observed by C{PyGeodesy}:
|
|
|
194
194
|
|
|
195
195
|
- C{PYGEODESY_EXCEPTION_CHAINING} - see module L{pygeodesy.errors}.
|
|
196
196
|
- C{PYGEODESY_FMT_FORM} - see module L{pygeodesy.dms}.
|
|
197
|
-
- C{PYGEODESY_FSUM_PARTIALS} - see module L{pygeodesy.fsums} and class L{pygeodesy.Fsum}.
|
|
198
197
|
- C{PYGEODESY_FSUM_RESIDUAL} - see module L{pygeodesy.fsums} and class L{pygeodesy.Fsum}.
|
|
199
198
|
- C{PYGEODESY_GEOCONVERT} - see module L{pygeodesy.mgrs}.
|
|
200
199
|
- C{PYGEODESY_GEODSOLVE} - see module L{pygeodesy.geodsolve}.
|
|
@@ -586,7 +585,7 @@ else:
|
|
|
586
585
|
_init__all__ = False
|
|
587
586
|
|
|
588
587
|
from pygeodesy.interns import _DOT_, _version2 # PYCHOK import
|
|
589
|
-
__version__ = '24.
|
|
588
|
+
__version__ = '24.05.06'
|
|
590
589
|
# see setup.py for similar logic
|
|
591
590
|
version = _DOT_(*_version2(__version__, n=3))
|
|
592
591
|
|
pygeodesy/auxilats/auxAngle.py
CHANGED
|
@@ -20,8 +20,8 @@ from pygeodesy.constants import EPS, _INF_NAN_NINF, MAX, NAN, _0_0, _0_5, _1_0,
|
|
|
20
20
|
_copysign_1_0, _over, _pos_self, isfinite, isnan
|
|
21
21
|
# from pygeodesy.errors import AuxError, _xkwds_get # from .auxily, .basics
|
|
22
22
|
from pygeodesy.fmath import hypot, unstr
|
|
23
|
-
from pygeodesy.fsums import _add_op_, _isub_op_, _sub_op_,
|
|
24
|
-
# from pygeodesy.interns import NN
|
|
23
|
+
from pygeodesy.fsums import _add_op_, _iadd_op_, _isub_op_, _sub_op_, _Named, NN
|
|
24
|
+
# from pygeodesy.interns import NN # from .fsums
|
|
25
25
|
# from pygeodesy.named import _Named # from .fsums
|
|
26
26
|
from pygeodesy.lazily import _ALL_DOCS, _ALL_MODS as _MODS
|
|
27
27
|
from pygeodesy.props import Property, Property_RO, property_RO, _update_all
|
|
@@ -32,7 +32,7 @@ from pygeodesy.utily import atan2d, sincos2, sincos2d
|
|
|
32
32
|
from math import asinh, atan2, copysign, degrees, fabs, radians, sinh
|
|
33
33
|
|
|
34
34
|
__all__ = ()
|
|
35
|
-
__version__ = '
|
|
35
|
+
__version__ = '24.04.26'
|
|
36
36
|
|
|
37
37
|
_0_INF_NAN_NINF = (0, _0_0) + _INF_NAN_NINF
|
|
38
38
|
_MAX_2 = MAX * _0_5 # PYCHOK used!
|
pygeodesy/basics.py
CHANGED
|
@@ -34,7 +34,7 @@ from math import copysign as _copysign
|
|
|
34
34
|
import inspect as _inspect
|
|
35
35
|
|
|
36
36
|
__all__ = _ALL_LAZY.basics
|
|
37
|
-
__version__ = '24.04.
|
|
37
|
+
__version__ = '24.04.28'
|
|
38
38
|
|
|
39
39
|
_0_0 = 0.0 # in .constants
|
|
40
40
|
_below_ = 'below'
|
|
@@ -576,7 +576,7 @@ def signBit(x):
|
|
|
576
576
|
def _signOf(x, ref): # in .fsums
|
|
577
577
|
'''(INTERNAL) Return the sign of B{C{x}} versus B{C{ref}}.
|
|
578
578
|
'''
|
|
579
|
-
return
|
|
579
|
+
return (-1) if x < ref else (+1 if x > ref else 0)
|
|
580
580
|
|
|
581
581
|
|
|
582
582
|
def signOf(x):
|
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)
|