pygeodesy 24.5.15__py2.py3-none-any.whl → 24.6.1__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.15.dist-info → PyGeodesy-24.6.1.dist-info}/METADATA +6 -5
- PyGeodesy-24.6.1.dist-info/RECORD +116 -0
- pygeodesy/__init__.py +4 -4
- pygeodesy/albers.py +41 -41
- pygeodesy/auxilats/__init__.py +1 -1
- pygeodesy/auxilats/__main__.py +2 -2
- pygeodesy/auxilats/auxAngle.py +32 -31
- pygeodesy/auxilats/auxLat.py +80 -51
- pygeodesy/azimuthal.py +123 -124
- pygeodesy/basics.py +46 -10
- pygeodesy/booleans.py +13 -14
- pygeodesy/cartesianBase.py +25 -23
- pygeodesy/clipy.py +3 -3
- pygeodesy/constants.py +3 -3
- pygeodesy/css.py +50 -42
- pygeodesy/datums.py +42 -41
- pygeodesy/deprecated/functions.py +9 -3
- pygeodesy/dms.py +6 -6
- pygeodesy/ecef.py +41 -41
- pygeodesy/ellipsoidalBase.py +41 -41
- pygeodesy/ellipsoidalBaseDI.py +3 -4
- pygeodesy/ellipsoidalGeodSolve.py +2 -2
- pygeodesy/ellipsoidalKarney.py +3 -3
- pygeodesy/ellipsoidalNvector.py +11 -12
- pygeodesy/ellipsoids.py +45 -38
- pygeodesy/elliptic.py +3 -4
- pygeodesy/epsg.py +4 -3
- pygeodesy/errors.py +52 -20
- pygeodesy/etm.py +68 -65
- pygeodesy/fmath.py +44 -49
- pygeodesy/formy.py +129 -115
- pygeodesy/frechet.py +118 -103
- pygeodesy/fstats.py +21 -14
- pygeodesy/fsums.py +124 -80
- pygeodesy/gars.py +10 -9
- pygeodesy/geodesicw.py +19 -17
- pygeodesy/geodesicx/__init__.py +1 -1
- pygeodesy/geodesicx/__main__.py +2 -2
- pygeodesy/geodesicx/gx.py +39 -33
- pygeodesy/geodesicx/gxarea.py +12 -9
- pygeodesy/geodesicx/gxbases.py +3 -4
- pygeodesy/geodesicx/gxline.py +6 -8
- pygeodesy/geodsolve.py +29 -28
- pygeodesy/geohash.py +60 -57
- pygeodesy/geoids.py +34 -32
- pygeodesy/hausdorff.py +114 -101
- pygeodesy/heights.py +137 -130
- pygeodesy/internals.py +16 -11
- pygeodesy/interns.py +3 -6
- pygeodesy/iters.py +19 -17
- pygeodesy/karney.py +21 -17
- pygeodesy/ktm.py +25 -18
- pygeodesy/latlonBase.py +12 -11
- pygeodesy/lazily.py +6 -6
- pygeodesy/lcc.py +24 -25
- pygeodesy/ltp.py +143 -113
- pygeodesy/ltpTuples.py +207 -150
- pygeodesy/mgrs.py +26 -26
- pygeodesy/named.py +172 -90
- pygeodesy/namedTuples.py +33 -25
- pygeodesy/nvectorBase.py +8 -8
- pygeodesy/osgr.py +40 -48
- pygeodesy/points.py +18 -18
- pygeodesy/props.py +29 -16
- pygeodesy/rhumb/__init__.py +1 -1
- pygeodesy/rhumb/aux_.py +13 -15
- pygeodesy/rhumb/bases.py +12 -5
- pygeodesy/rhumb/ekx.py +24 -18
- pygeodesy/rhumb/solve.py +13 -10
- pygeodesy/simplify.py +16 -16
- pygeodesy/solveBase.py +18 -18
- pygeodesy/sphericalBase.py +17 -21
- pygeodesy/sphericalTrigonometry.py +21 -21
- pygeodesy/streprs.py +5 -5
- pygeodesy/trf.py +13 -11
- pygeodesy/triaxials.py +68 -64
- pygeodesy/units.py +35 -35
- pygeodesy/unitsBase.py +24 -11
- pygeodesy/ups.py +66 -70
- pygeodesy/utily.py +3 -3
- pygeodesy/utm.py +183 -187
- pygeodesy/utmups.py +38 -38
- pygeodesy/utmupsBase.py +104 -106
- pygeodesy/vector2d.py +6 -7
- pygeodesy/vector3d.py +16 -17
- pygeodesy/vector3dBase.py +4 -5
- pygeodesy/webmercator.py +43 -51
- PyGeodesy-24.5.15.dist-info/RECORD +0 -116
- {PyGeodesy-24.5.15.dist-info → PyGeodesy-24.6.1.dist-info}/WHEEL +0 -0
- {PyGeodesy-24.5.15.dist-info → PyGeodesy-24.6.1.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.6.1
|
|
4
4
|
Summary: Pure Python geodesy tools
|
|
5
5
|
Home-page: https://GitHub.com/mrJean1/PyGeodesy
|
|
6
6
|
Author: Jean M. Brouwers
|
|
@@ -22,6 +22,7 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
22
22
|
Classifier: Programming Language :: Python :: 3.10
|
|
23
23
|
Classifier: Programming Language :: Python :: 3.11
|
|
24
24
|
Classifier: Programming Language :: Python :: 3.12
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
25
26
|
Classifier: Topic :: Software Development
|
|
26
27
|
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
27
28
|
|
|
@@ -118,7 +119,7 @@ The tests ran with Python 3.12.3 (with geographiclib_ 2.0), 3.11.5 (with geograp
|
|
|
118
119
|
1.24.2 and scipy_ 1.10.1), Python 3.10.8 (with geographiclib_ 2.0, numpy_ 1.23.3, scipy_ 1.9.1,
|
|
119
120
|
GeoConvert_ 2.2, GeodSolve_ 2.2 and RhumbSolve_ 2.2), Python 3.9.6 and Python 2.7.18 (with geographiclib_
|
|
120
121
|
1.50, numpy_ 1.16.6, scipy_ 1.2.2, GeoConvert_ 2.2, GeodSolve_ 2.2 and RhumbSolve_ 2.2), all on macOS
|
|
121
|
-
14.
|
|
122
|
+
14.5 Sonoma and in 64-bit only.
|
|
122
123
|
|
|
123
124
|
All tests ran with and without ``lazy import`` for Python 3 and with command line option ``-W default``
|
|
124
125
|
and env variable ``PYGEODESY_WARNINGS=on`` for all Python versions. The results of those tests are
|
|
@@ -143,7 +144,7 @@ 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
|
|
|
143
144
|
on `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,
|
|
144
145
|
2.7.10 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_
|
|
145
146
|
1.5.0), 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`_
|
|
146
|
-
3.5.3 (and numpy_ 1.11.3) on macOS 14.0-
|
|
147
|
+
3.5.3 (and numpy_ 1.11.3) on macOS 14.0-4.1 Sonoma, 13.0-5.2 Ventura, 12.1-6 Monterey, 11.0-5.2-6.1 Big
|
|
147
148
|
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
|
|
148
149
|
10.11 El Capitan and/or MacOS X 10.10 Yosemite, with Pythonista_ 3.2 (with geographiclib 1.50 or 1.49 and
|
|
149
150
|
numpy 1.8.0) on iOS 14.4.2, 11.4.1, 12.0-3 on iPad4, iPhone6, iPhone10 and/or iPhone12, with Pythonista_
|
|
@@ -154,11 +155,11 @@ Notes
|
|
|
154
155
|
=====
|
|
155
156
|
|
|
156
157
|
All Python source code has been statically checked_ with PyChecker_, PyFlakes_, PyCodeStyle_ (formerly Pep8)
|
|
157
|
-
and McCabe_ using Python 2.7.18 and with Flake8_ using Python 3.11.5, both in 64-bit on macOS 14.
|
|
158
|
+
and McCabe_ using Python 2.7.18 and with Flake8_ using Python 3.11.5, both in 64-bit on macOS 14.5 Sonoma.
|
|
158
159
|
|
|
159
160
|
For a summary of all *Karney*-based functionality in ``pygeodesy``, see module karney_.
|
|
160
161
|
|
|
161
|
-
*Last updated:
|
|
162
|
+
*Last updated: June 01, 2024.*
|
|
162
163
|
|
|
163
164
|
License
|
|
164
165
|
=======
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
|
|
2
|
+
pygeodesy/__init__.py,sha256=OjQWLVL3lst38mHti3vDOiO8W1oKhBMV6a9gnDehDvI,41046
|
|
3
|
+
pygeodesy/__main__.py,sha256=UmTd6Qw20g_pgnQjdaHePm-xuOEBi1tUNRLO0eL0-rU,4593
|
|
4
|
+
pygeodesy/albers.py,sha256=2t8EjmoFWmkdTb4DUHMlECkwTPDS1wpNf92WD_UWXds,31081
|
|
5
|
+
pygeodesy/azimuthal.py,sha256=RQdZbHoLlHSamhnJ4GMrrRU6UrYmTpa1yK59nYB-A4o,50252
|
|
6
|
+
pygeodesy/basics.py,sha256=Ez1tApjFnk6vNsYXeZzi28hYsa5AhUYobLS1Anna2g0,29381
|
|
7
|
+
pygeodesy/booleans.py,sha256=24uqW-VvA8sJWIC8PfncPIk6EdknrXHZvg7tbk4ChSY,74143
|
|
8
|
+
pygeodesy/cartesianBase.py,sha256=P3EUMYKad9HxNSQQJTbPu4QehQu5HDxqOo9-xYsTdp4,47366
|
|
9
|
+
pygeodesy/clipy.py,sha256=3ysIEWQ89HjvLnSlZm0nZAt9EN5AQxIs1sLLM8yF9zM,27675
|
|
10
|
+
pygeodesy/constants.py,sha256=-weWOuHwE-qI6pYRLcTucI0KNcNJm6vPNzxwrJzACKs,19192
|
|
11
|
+
pygeodesy/css.py,sha256=RXlLh76tVDFClVh7L1U3FFrLZvjBPFASDf3vq8dHecE,25778
|
|
12
|
+
pygeodesy/datums.py,sha256=GYbtvPyzDChHYgnNleBqsM-MNwLNQqrO2_MMV4Z9kmI,34006
|
|
13
|
+
pygeodesy/dms.py,sha256=VujWxk1L2Kp6OMfnu0XPI-j8bnyJ33sFmtB9_MbHqSU,44455
|
|
14
|
+
pygeodesy/ecef.py,sha256=2wAvnAtDMLw0nNmAnzl_ebm8ISO5JLcy3dPojwDLWk8,59926
|
|
15
|
+
pygeodesy/elevations.py,sha256=1qZM2w0rDF7jHunydpTEmdLwOwF81KUL9L6RALJC7K4,10807
|
|
16
|
+
pygeodesy/ellipsoidalBase.py,sha256=HgZCXrNEji896GuXGfM34w6wdUug4UwEqWCjk4XgnfM,56687
|
|
17
|
+
pygeodesy/ellipsoidalBaseDI.py,sha256=lPUPP5lVsCzI5RIukxmJ5MH6j2Mb7mdvftQ0tsvsW6g,38585
|
|
18
|
+
pygeodesy/ellipsoidalExact.py,sha256=a_2C6S6hGRumavy5giRoC9QAhnjqpujiXyu92od6nKo,16951
|
|
19
|
+
pygeodesy/ellipsoidalGeodSolve.py,sha256=nzT6KOubBOxXRHYafOo5ByQ90VOY1zvaS7byhnwaFqE,16830
|
|
20
|
+
pygeodesy/ellipsoidalKarney.py,sha256=m07XlZKWvBnOzIKV6P7RNttk8G5s2JRBH2RVF_lg0_k,19243
|
|
21
|
+
pygeodesy/ellipsoidalNvector.py,sha256=JuxCUqUtot4e8587Q84Npc1_SdahywTYsybRSMTRtSc,30265
|
|
22
|
+
pygeodesy/ellipsoidalVincenty.py,sha256=Uk93B8GFcMnWiwKUOA84TlLwbBlvzVnsAXAx0cU7cn4,26004
|
|
23
|
+
pygeodesy/ellipsoids.py,sha256=_fbQy9k_k40Li6jAOlHcSlEPPUnliZsqjIR2be3h2QI,120238
|
|
24
|
+
pygeodesy/elliptic.py,sha256=-80MbZvRPk-TeA_ggkfXhjuPv07MzsB4HxNF7gbdhB4,42501
|
|
25
|
+
pygeodesy/epsg.py,sha256=oWHX_QVChE5roktAyXUmPmX49XHiryYmXTHxQzrAprE,8222
|
|
26
|
+
pygeodesy/errors.py,sha256=iKiloJ1wvI7v_DZi-yE9f7zWuBlZrw9brCyb9UVIejs,28441
|
|
27
|
+
pygeodesy/etm.py,sha256=DeX0mZQcHK0KbmOZodp2iv2TEFtRjYziSL9oUEV2YxU,44952
|
|
28
|
+
pygeodesy/fmath.py,sha256=EOHD0uZ8VULZtXAk8tVeuPaSTozPDCN8GJcemCo-jqg,33709
|
|
29
|
+
pygeodesy/formy.py,sha256=JKFqC7OlxBvB9sOH9OaWJX4bLkf0dMqW3LcVrwdnt7A,75121
|
|
30
|
+
pygeodesy/frechet.py,sha256=YAEWRJbX2rYjB94tvBlBUWK2g1eOHgk1t1dtoi9wtAY,34363
|
|
31
|
+
pygeodesy/fstats.py,sha256=4eIhzSCMnn-2nVP3Q-5cCWCI-rvH0CE-zkk9hp3Pvn8,28642
|
|
32
|
+
pygeodesy/fsums.py,sha256=uPsR2HGSq6KT9Tvmai7KYl99ei9UkeA0TDAnXd7VIYo,80451
|
|
33
|
+
pygeodesy/gars.py,sha256=gVnLQIEofyf_dA8dhpLrmhtIxGhBHZVRw8PbWgYUnnY,11400
|
|
34
|
+
pygeodesy/geodesicw.py,sha256=PwUO5jCGExhMt6cKkQwVnPTHMMVadkTrd6pV4UWZYNY,27064
|
|
35
|
+
pygeodesy/geodsolve.py,sha256=_LDW6PSO_z2v77MUuKsYsRbutI2c5ldPZfR_b9GthFw,22021
|
|
36
|
+
pygeodesy/geohash.py,sha256=Z-r58-9nm8M17O7q5qTddS1N3B4eFn6ZgNl9t4dcJY8,32399
|
|
37
|
+
pygeodesy/geoids.py,sha256=25HrOgsCvFnXTjh3ghc1Y1FQKjerPpo_OLlQBNayK_0,80887
|
|
38
|
+
pygeodesy/hausdorff.py,sha256=fSGq6mHPpY8_uC_dZz4lLc7gZmViHU6TzFjZ03YpMzA,34737
|
|
39
|
+
pygeodesy/heights.py,sha256=n5BnaF5smUBOOGk8-veAv9jOGycjTwhl5gJWkGRwejg,43575
|
|
40
|
+
pygeodesy/internals.py,sha256=INfBdSTWaHJf5xcSaddJEtqE8TJLcUIe8tHeORMRK64,19346
|
|
41
|
+
pygeodesy/interns.py,sha256=QoDo_S1qY8IJVqI0pH2jGESLEexEF480PuwWZnTVrRI,23600
|
|
42
|
+
pygeodesy/iters.py,sha256=ML14NjtDpfPRtDJQsUYUtJZ81HH4NPFrCjecxwkcIuM,20309
|
|
43
|
+
pygeodesy/karney.py,sha256=iGoi32hDPdaMR39i6pypcbY2hqvHFVPFROYcjjA-Jrw,35121
|
|
44
|
+
pygeodesy/ktm.py,sha256=itQElJegrfhpAuMujAWFTcyuMSeKIgSyw5qkkHFs7vE,27519
|
|
45
|
+
pygeodesy/latlonBase.py,sha256=DglIfu916vtMV8-wEUs4GrXmk698-j3dkSud8FOBB6o,77762
|
|
46
|
+
pygeodesy/lazily.py,sha256=Oc5J9yuktR9ZBk-Dwn3r2oA0zt1-8oAx2PUmpZ-qOPg,45498
|
|
47
|
+
pygeodesy/lcc.py,sha256=6vGht5JCN_BYYzbU2YCK6jz3PFcVymvY-RK2Uflt7ZE,25745
|
|
48
|
+
pygeodesy/ltp.py,sha256=ciPmdUv8Z5z-wr8kmU7AKxO8d2nYx3mmjnnaWJVN74w,50135
|
|
49
|
+
pygeodesy/ltpTuples.py,sha256=secLaYIdGYXg1wcOivzjY9tpPsHzu4ckphjkygeZrL8,58424
|
|
50
|
+
pygeodesy/mgrs.py,sha256=2uuWL56hWpip6lJa071WXe5_hILlo5RaNW3sfCV25NQ,29059
|
|
51
|
+
pygeodesy/named.py,sha256=C75ZNJZ2B0EF3EmAGbuUhziPgdGHACRalVycLR0Nt5s,51195
|
|
52
|
+
pygeodesy/namedTuples.py,sha256=N8fyc6OMdXNHgOk_tK2zhuWwBq6oB-QcAY-PG9xIgWk,27535
|
|
53
|
+
pygeodesy/nvectorBase.py,sha256=ZSIzieN2gN3ZWbJJ0TM_5Jqv5tXqpGHlwnD90kjgtY4,28830
|
|
54
|
+
pygeodesy/osgr.py,sha256=g-uCTy735aUNh5odTp27PY8CLDnTaquc1_oTs8Qv6zg,30827
|
|
55
|
+
pygeodesy/points.py,sha256=izCcYGX09v7Lv7_pDIP4mJMfEXbgFzHdw0LIsW5R3qE,64412
|
|
56
|
+
pygeodesy/props.py,sha256=8dGmTpdEABnLbBngmaOIpM0h4NYiBteMOHc_r4iNpAg,21988
|
|
57
|
+
pygeodesy/resections.py,sha256=nkfBxYrsEdyq2JqAbPrRWKplJBzFkIXLvEZGB4gPu_A,43550
|
|
58
|
+
pygeodesy/simplify.py,sha256=NybC-pfze0ObEm4ZCz6ZQrjJlQ-QyA83E6mSJqCuKq4,25223
|
|
59
|
+
pygeodesy/solveBase.py,sha256=wKOrVyULKf4SFBMcgWw03sCVhPnHZ9fSlJwGEMF85_w,16759
|
|
60
|
+
pygeodesy/sphericalBase.py,sha256=CuLD4lVKPGnYg71UFHJz_BbJj3FNxxyzFZCnadfuUy0,31873
|
|
61
|
+
pygeodesy/sphericalNvector.py,sha256=TBs_nid_DTcox7bBegh_Djv4zZRGRY4mH6dd1xIHGms,56963
|
|
62
|
+
pygeodesy/sphericalTrigonometry.py,sha256=SqkFi2_Cy1LOzlZvvO4tpwxkS-AEBhdfRTgopXFTISw,64208
|
|
63
|
+
pygeodesy/streprs.py,sha256=AZzil7Encfb1E7NG7tNHHivuayKQ-LZJJTMVumUhsEQ,23993
|
|
64
|
+
pygeodesy/trf.py,sha256=AP-4s-hGWnrjhYfEfF0SnIVE6vVNwU6s0hNjm6G0GsU,119019
|
|
65
|
+
pygeodesy/triaxials.py,sha256=wK_KGdl3OdYKzbqYD6v1mbjjLE7ICpAfF7eQf1A3kF0,62039
|
|
66
|
+
pygeodesy/units.py,sha256=DIllydnoz4rfw3ST91D_6-K_QGFiCqNcYvf6B_mUJMs,38827
|
|
67
|
+
pygeodesy/unitsBase.py,sha256=FA4DuXUb88YYsDS3aIkd7BGvj70JATMeuBV_efshUx0,13544
|
|
68
|
+
pygeodesy/ups.py,sha256=p9F49qQ9tGGf18fnFWJ5DdqQA-FdNe_BcuIGAi5tIoE,23419
|
|
69
|
+
pygeodesy/utily.py,sha256=qT7J7kv4CO0vSz705cXIHr4d6muT6xi5ZhR3cjvYXfo,36143
|
|
70
|
+
pygeodesy/utm.py,sha256=ZxBvDcCkdnmTRzMOHyhADHdZJSUo0U0xBAsg0rEeTHk,31148
|
|
71
|
+
pygeodesy/utmups.py,sha256=_GCrF3TljW4k5W9uKwilO1ivPLAbOArxlzi7jPJ4rbc,13226
|
|
72
|
+
pygeodesy/utmupsBase.py,sha256=dO7jX0MunLZykTkvN47HuNhHTZNN1OOhNOdC-qxoAk0,18762
|
|
73
|
+
pygeodesy/vector2d.py,sha256=zJq5PB777_mFJpKD-rt_T0Vm4SNbVwF7pc3KxX8uCT8,34994
|
|
74
|
+
pygeodesy/vector3d.py,sha256=danoz3QA90EJjqr2dmLPCYP5UG0m_pgiyNuNBW0aNJ8,45065
|
|
75
|
+
pygeodesy/vector3dBase.py,sha256=GhEq2oFfLoF57cDy6lvsB0b-dgTneMcrtDSyIiGr4mY,35630
|
|
76
|
+
pygeodesy/webmercator.py,sha256=J89VAROczHNpD34AuIWD3vxfogk3ZKoYj1w0lXOCkYA,14968
|
|
77
|
+
pygeodesy/wgrs.py,sha256=AKUrYRCC67lOeJ6vUDAiGb_mY6R3ZwflXpOaP3wauOg,14774
|
|
78
|
+
pygeodesy/auxilats/_CX_4.py,sha256=U41njj8Pu8cHMGuoUUVA20QIvRJAq-VGCnyoKJl0Ylo,8662
|
|
79
|
+
pygeodesy/auxilats/_CX_6.py,sha256=x4hrHxunjqqkEsZbVW1dyn3R5mR8EWYOuX77RzDEyh4,14856
|
|
80
|
+
pygeodesy/auxilats/_CX_8.py,sha256=t-OO48t4cCOsOgMi1FoyPw2DQqybVZFsgQMqAYP-jKY,25304
|
|
81
|
+
pygeodesy/auxilats/__init__.py,sha256=tj9fglSENe7whplLC9YCl--EQNyMNd1g26BPLT2JNr0,2881
|
|
82
|
+
pygeodesy/auxilats/__main__.py,sha256=Vuj1YSp1LV0zejVzi6EYauka1Dv8kwOHI_aeHxQEVYk,2899
|
|
83
|
+
pygeodesy/auxilats/auxAngle.py,sha256=rljkFpqLhCMZVMo9u0xNBmGZV0KxsmIbI41d5itcZ3E,16740
|
|
84
|
+
pygeodesy/auxilats/auxDLat.py,sha256=U3BHF6AkW5--nrwH9whL5wZVIZLH_keRLfUz6c6KBx4,10950
|
|
85
|
+
pygeodesy/auxilats/auxDST.py,sha256=bdNEh3TdABWH7qW6ngZx5SnzDM3B5rtPLvYhvCnFsKc,10497
|
|
86
|
+
pygeodesy/auxilats/auxLat.py,sha256=GUpK5_rcL8IHjC209dhIibYYBJudFU0Yk7JD-KUApbc,32529
|
|
87
|
+
pygeodesy/auxilats/auxily.py,sha256=ZiCFedYcr32O6TWQ_dcnwMrc9TgogyuhNSbR77WMDpg,8240
|
|
88
|
+
pygeodesy/deprecated/__init__.py,sha256=ZRGqgwSdvtKSYZdw09-LPuGa_i0jMHWKIwrPG3r1hHs,2815
|
|
89
|
+
pygeodesy/deprecated/bases.py,sha256=nxUtxscAg5cb7HEzTSmPJFafLc9Ad2SL5ovwkYaU5z8,1655
|
|
90
|
+
pygeodesy/deprecated/classes.py,sha256=PXgss-2kEu3bzaxvSeVZJGdcRqsdi_6_aRqsESyUQKQ,11662
|
|
91
|
+
pygeodesy/deprecated/consterns.py,sha256=W-rQiw443_zCFEUzjCGykGND-i5P_ghEIyJUSGg7-Nc,1908
|
|
92
|
+
pygeodesy/deprecated/datum.py,sha256=KfuMA64LYGMj1voW2uai2RGcugtWdpvlOL6UHJvpTeQ,1875
|
|
93
|
+
pygeodesy/deprecated/functions.py,sha256=nwYgLqw9Wy6ieDxQGZJ-dIeBaF4IvmNBFx9AcHwiBlE,13907
|
|
94
|
+
pygeodesy/deprecated/nvector.py,sha256=_dZf84RdmPr7e7i8Yi683R-8Mqn0ipTqIsDhNl29hGo,2117
|
|
95
|
+
pygeodesy/deprecated/rhumbBase.py,sha256=d7YKW--dnRpobB2CSvhFsntWF0B5-HYJqID2pv5lD5k,1375
|
|
96
|
+
pygeodesy/deprecated/rhumbaux.py,sha256=n29xazYMbVG4MJkLjAGu8B88bbcFF5xnvuj9xSxjfIk,1428
|
|
97
|
+
pygeodesy/deprecated/rhumbsolve.py,sha256=QprjRfo5T1_C4ovaa1cffAcmNczzkhGIfmybAup9a9w,1431
|
|
98
|
+
pygeodesy/deprecated/rhumbx.py,sha256=OS0p_meaoVrpZe5UhK6qZljjlrGpL0pCHWw8gofw7ks,1425
|
|
99
|
+
pygeodesy/geodesicx/_C4_24.py,sha256=kS4XMR9m7iBs01V8K0Oz9qTYmjN-icIQGpc_8iwVhig,90750
|
|
100
|
+
pygeodesy/geodesicx/_C4_27.py,sha256=bPbj2Ckrn9WJglm3SNTXyMkULNwANM0tCQ-LKxP1L58,134258
|
|
101
|
+
pygeodesy/geodesicx/_C4_30.py,sha256=QZO8p971ztJwDGLOaJYgIhklztz9GlqbtS-xRP_E7o4,201964
|
|
102
|
+
pygeodesy/geodesicx/__init__.py,sha256=0_wTYAkvfJ2xVTzw5Zo9qQlSQIT7Q_PUwC_IqFQkrWA,2446
|
|
103
|
+
pygeodesy/geodesicx/__main__.py,sha256=JnKrYmg1q9J5wRRqUy-dQ9abj2-2jpWtrolMMaFfWiY,3176
|
|
104
|
+
pygeodesy/geodesicx/gx.py,sha256=Luu-bmgX9WAJ7sVNkeLRuWUUj-ndp4FGafe71xC3H2k,61650
|
|
105
|
+
pygeodesy/geodesicx/gxarea.py,sha256=-Kwe6spe2MSQbeLFDd6UN2NOi4JOjYhHAEzonOU3u4A,19409
|
|
106
|
+
pygeodesy/geodesicx/gxbases.py,sha256=nSQpDPuRQFkkzvjOaalBTHOQCYT1fhSOb5uy-5NvvSA,5215
|
|
107
|
+
pygeodesy/geodesicx/gxline.py,sha256=GP7BXfpsePLZy0SLLiIO6ytWKFpBLuPsOaL2Z_-45iU,27373
|
|
108
|
+
pygeodesy/rhumb/__init__.py,sha256=70qKVuNKkddfqMSxZ9c0VCZM1w0_Ka_nBWwtpfxxh2o,2207
|
|
109
|
+
pygeodesy/rhumb/aux_.py,sha256=UJEnoam_MLx2dBxgzjn_zU59f9wwDDNotdsV3ccWZFU,16652
|
|
110
|
+
pygeodesy/rhumb/bases.py,sha256=J8fXg42CcAI1VR4Hz-MctOwUs029PWRTRIo6sSZYo8I,54089
|
|
111
|
+
pygeodesy/rhumb/ekx.py,sha256=GZLJOqAEy_120q27rdt7kyEvkuoBPk6LOhOzjPOTOr8,24084
|
|
112
|
+
pygeodesy/rhumb/solve.py,sha256=a0ynvD3MI-i3-8gSYcUojyYfkc_e7BqOxAOX-b2KFNQ,27982
|
|
113
|
+
PyGeodesy-24.6.1.dist-info/METADATA,sha256=SUy_uel3BJloCDLkVOyxIc83clB0Zhao6vQtageyyKg,19411
|
|
114
|
+
PyGeodesy-24.6.1.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
|
|
115
|
+
PyGeodesy-24.6.1.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
|
|
116
|
+
PyGeodesy-24.6.1.dist-info/RECORD,,
|
pygeodesy/__init__.py
CHANGED
|
@@ -133,7 +133,7 @@ U{geographiclib<https://PyPI.org/project/geographiclib>} 1.50, U{numpy<https://P
|
|
|
133
133
|
1.16.6, U{scipy<https://PyPI.org/project/scipy>} 1.2.2, U{GeoConvert
|
|
134
134
|
<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.2, U{GeodSolve
|
|
135
135
|
<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.2 and U{RhumbSolve
|
|
136
|
-
<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.2), all on macOS 14.
|
|
136
|
+
<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.2), all on macOS 14.5 Sonoma and
|
|
137
137
|
in 64-bit only.
|
|
138
138
|
|
|
139
139
|
All tests ran with and without C{lazy import} for Python 3 and with command line option C{-W default} and
|
|
@@ -164,7 +164,7 @@ Previously, the tests were run with Python 3.12.0-2, 3.11.2-4, 3.10.1-7, 3.9.1,
|
|
|
164
164
|
1.16.5, 1.16.2, 1.15.2, 1.14.0, 1.13.1, 1.8.0rc1 or 1.6.2 and U{scipy<https://PyPI.org/project/scipy>} 1.5.0), U{PyPy
|
|
165
165
|
<https://PyPy.org>} 7.3.0 (Python 2.7.13 and 3.6.9), U{PyPy<https://PyPy.org>} 6.0.0 (Python 2.7.13 and 3.5.3)
|
|
166
166
|
and U{Intel-Python<https://software.Intel.com/en-us/distribution-for-python>} 3.5.3 (and U{numpy
|
|
167
|
-
<https://PyPI.org/project/numpy>} 1.11.3) on macOS 14.0-
|
|
167
|
+
<https://PyPI.org/project/numpy>} 1.11.3) on macOS 14.0-4.1 Sonoma, 13.0-5.2 Ventura, 12.1-6 Monterey, 11.0-5.2-6.1
|
|
168
168
|
Big 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
|
|
169
169
|
10.11 El Capitan and/or MacOS X 10.10 Yosemite, with U{Pythonista<https://OMZ-Software.com/pythonista>}3.2 (with
|
|
170
170
|
geographiclib 1.50 or 1.49 and numpy 1.8.0) on iOS 14.4.2, 11.4.1, 12.0-3 on iPad4, iPhone6, iPhone10 and/or
|
|
@@ -179,7 +179,7 @@ All Python source code has been statically U{checked<https://GitHub.com/ActiveSt
|
|
|
179
179
|
Python/546532_PyChecker_postprocessor>} with U{PyChecker<https://PyPI.org/project/pychecker>}, U{PyFlakes
|
|
180
180
|
<https://PyPI.org/project/pyflakes>}, U{PyCodeStyle<https://PyPI.org/project/pycodestyle>} (formerly Pep8) and
|
|
181
181
|
U{McCabe<https://PyPI.org/project/mccabe>} using Python 2.7.18 and with U{Flake8<https://PyPI.org/project/flake8>}
|
|
182
|
-
using Python 3.11.5, both in 64-bit on macOS 14.
|
|
182
|
+
using Python 3.11.5, both in 64-bit on macOS 14.5 Sonoma.
|
|
183
183
|
|
|
184
184
|
For a summary of all I{Karney}-based functionality in C{pygeodesy}, see module U{karney
|
|
185
185
|
<https://mrJean1.GitHub.io/PyGeodesy/docs/pygeodesy.karney-module.html>}.
|
|
@@ -589,7 +589,7 @@ else:
|
|
|
589
589
|
|
|
590
590
|
from pygeodesy.internals import _version2, _DOT_ # PYCHOK import
|
|
591
591
|
# from pygeodesy.interns import _DOT_ # from .internals
|
|
592
|
-
__version__ = '24.
|
|
592
|
+
__version__ = '24.06.01'
|
|
593
593
|
# see setup.py for similar logic
|
|
594
594
|
version = _DOT_(*_version2(__version__, n=3))
|
|
595
595
|
|
pygeodesy/albers.py
CHANGED
|
@@ -24,11 +24,11 @@ from pygeodesy.errors import _ValueError, _xkwds
|
|
|
24
24
|
from pygeodesy.fmath import hypot, hypot1, sqrt3
|
|
25
25
|
from pygeodesy.fsums import Fsum, _Fsum1f_, fsum1f_
|
|
26
26
|
from pygeodesy.interns import NN, _COMMASPACE_, _datum_, _gamma_, _k0_, \
|
|
27
|
-
_lat_, _lat1_, _lat2_, _lon_,
|
|
28
|
-
|
|
27
|
+
_lat_, _lat1_, _lat2_, _lon_, _negative_, \
|
|
28
|
+
_scale_, _SPACE_, _x_, _y_
|
|
29
29
|
from pygeodesy.karney import _diff182, _norm180, _signBit
|
|
30
30
|
from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY
|
|
31
|
-
from pygeodesy.named import _NamedBase, _NamedTuple, _Pass
|
|
31
|
+
from pygeodesy.named import _name2__, _NamedBase, _NamedTuple, _Pass
|
|
32
32
|
from pygeodesy.props import deprecated_Property_RO, Property_RO, _update_all
|
|
33
33
|
from pygeodesy.streprs import Fmt, strs, unstr
|
|
34
34
|
from pygeodesy.units import Bearing, Float_, Lat, Lat_, Lon, Meter, Scalar_
|
|
@@ -38,7 +38,7 @@ from pygeodesy.utily import atan1, atan1d, degrees360, sincos2, sincos2d, \
|
|
|
38
38
|
from math import atan2, atanh, degrees, fabs, radians, sqrt
|
|
39
39
|
|
|
40
40
|
__all__ = _ALL_LAZY.albers
|
|
41
|
-
__version__ = '24.05.
|
|
41
|
+
__version__ = '24.05.21'
|
|
42
42
|
|
|
43
43
|
_k1_ = 'k1'
|
|
44
44
|
_NUMIT = 8 # XXX 4?
|
|
@@ -111,12 +111,12 @@ class _AlbersBase(_NamedBase):
|
|
|
111
111
|
# _sxi0 = None # (INTERNAL) sin(xi)
|
|
112
112
|
# _txi0 = None # (INTERNAL) tan(xi)
|
|
113
113
|
|
|
114
|
-
def __init__(self, sa1, ca1, sa2, ca2, k, datum, name):
|
|
114
|
+
def __init__(self, sa1, ca1, sa2, ca2, k, datum, **name):
|
|
115
115
|
'''(INTERNAL) New C{AlbersEqualArea...} instance.
|
|
116
116
|
'''
|
|
117
117
|
qZ = self._qZ
|
|
118
118
|
if datum not in (None, self._datum):
|
|
119
|
-
self._datum = _ellipsoidal_datum(datum, name
|
|
119
|
+
self._datum = _ellipsoidal_datum(datum, **name)
|
|
120
120
|
qZ = _qZx(self)
|
|
121
121
|
elif qZ is None:
|
|
122
122
|
qZ = _qZx(_AlbersBase)
|
|
@@ -226,13 +226,13 @@ class _AlbersBase(_NamedBase):
|
|
|
226
226
|
|
|
227
227
|
f = flattening
|
|
228
228
|
|
|
229
|
-
def forward(self, lat, lon, lon0=0, name
|
|
229
|
+
def forward(self, lat, lon, lon0=0, **name):
|
|
230
230
|
'''Convert a geodetic location to east- and northing.
|
|
231
231
|
|
|
232
232
|
@arg lat: Latitude of the location (C{degrees}).
|
|
233
233
|
@arg lon: Longitude of the location (C{degrees}).
|
|
234
234
|
@kwarg lon0: Optional central meridian longitude (C{degrees}).
|
|
235
|
-
@kwarg name: Optional name for the location (C{str}).
|
|
235
|
+
@kwarg name: Optional C{B{name}=NN} for the location (C{str}).
|
|
236
236
|
|
|
237
237
|
@return: An L{Albers7Tuple}C{(x, y, lat, lon, gamma, scale, datum)},
|
|
238
238
|
with C{lon} offset by B{C{lon0}} and reduced C{[-180,180]}.
|
|
@@ -277,7 +277,7 @@ class _AlbersBase(_NamedBase):
|
|
|
277
277
|
if t:
|
|
278
278
|
k0 = self._azik(t, ta)
|
|
279
279
|
return Albers7Tuple(x, y, lat, lon, g, k0, self.datum,
|
|
280
|
-
|
|
280
|
+
name=self._name__(name))
|
|
281
281
|
|
|
282
282
|
@Property_RO
|
|
283
283
|
def ispolar(self):
|
|
@@ -343,16 +343,16 @@ class _AlbersBase(_NamedBase):
|
|
|
343
343
|
_update_all(self)
|
|
344
344
|
self._k0s(k0)
|
|
345
345
|
|
|
346
|
-
def reverse(self, x, y, lon0=0,
|
|
346
|
+
def reverse(self, x, y, lon0=0, LatLon=None, **name_LatLon_kwds):
|
|
347
347
|
'''Convert an east- and northing location to geodetic lat- and longitude.
|
|
348
348
|
|
|
349
349
|
@arg x: Easting of the location (C{meter}).
|
|
350
350
|
@arg y: Northing of the location (C{meter}).
|
|
351
351
|
@kwarg lon0: Optional central meridian longitude (C{degrees}).
|
|
352
|
-
@kwarg name: Optional name for the location (C{str}).
|
|
353
352
|
@kwarg LatLon: Class to use (C{LatLon}) or C{None}.
|
|
354
|
-
@kwarg
|
|
355
|
-
|
|
353
|
+
@kwarg name_LatLon_kwds: Optional C{B{name}=NN} for the location
|
|
354
|
+
and optional, additional B{C{LatLon}} keyword
|
|
355
|
+
arguments, ignored if C{B{LatLon} is None}.
|
|
356
356
|
|
|
357
357
|
@return: The geodetic (C{LatLon}) or if B{C{LatLon}} is C{None} an
|
|
358
358
|
L{Albers7Tuple}C{(x, y, lat, lon, gamma, scale, datum)}.
|
|
@@ -397,7 +397,7 @@ class _AlbersBase(_NamedBase):
|
|
|
397
397
|
lon += _norm180(lon0)
|
|
398
398
|
lon = _norm180(lon)
|
|
399
399
|
|
|
400
|
-
n =
|
|
400
|
+
n, LatLon_kwds = _name2__(name_LatLon_kwds, _or_nameof=self)
|
|
401
401
|
if LatLon is None:
|
|
402
402
|
g = degrees360(s * th)
|
|
403
403
|
if den:
|
|
@@ -540,11 +540,11 @@ class _AlbersBase(_NamedBase):
|
|
|
540
540
|
(self.lat1,))
|
|
541
541
|
t = strs(t, prec=prec)
|
|
542
542
|
if k:
|
|
543
|
-
t =
|
|
543
|
+
t = t[:-1] + (Fmt.EQUAL(k, t[-1]),)
|
|
544
544
|
if self.datum != _WGS84:
|
|
545
|
-
t +=
|
|
545
|
+
t += Fmt.EQUAL(datum=self.datum),
|
|
546
546
|
if self.name:
|
|
547
|
-
t +=
|
|
547
|
+
t += Fmt.EQUAL(name=repr(self.name)),
|
|
548
548
|
return t if sep is None else sep.join(t)
|
|
549
549
|
|
|
550
550
|
def _txif(self, ta): # in .Ellipsoid.auxAuthalic
|
|
@@ -575,20 +575,20 @@ class AlbersEqualArea(_AlbersBase):
|
|
|
575
575
|
'''
|
|
576
576
|
_k = _k0_
|
|
577
577
|
|
|
578
|
-
def __init__(self, lat, k0=1, datum=_WGS84, name
|
|
578
|
+
def __init__(self, lat, k0=1, datum=_WGS84, **name):
|
|
579
579
|
'''New L{AlbersEqualArea} projection.
|
|
580
580
|
|
|
581
581
|
@arg lat: Standard parallel (C{degrees}).
|
|
582
582
|
@kwarg k0: Azimuthal scale on the standard parallel (C{scalar}).
|
|
583
583
|
@kwarg datum: Optional datum or ellipsoid (L{Datum}, L{Ellipsoid},
|
|
584
584
|
L{Ellipsoid2} or L{a_f2Tuple}).
|
|
585
|
-
@kwarg name: Optional name for the projection (C{str}).
|
|
585
|
+
@kwarg name: Optional C{B{name}=NN} for the projection (C{str}).
|
|
586
586
|
|
|
587
587
|
@raise AlbersError: Invalid B{C{lat}}, B{C{k0}} or no convergence.
|
|
588
588
|
'''
|
|
589
589
|
self._lat1 = self._lat2 = lat = _Lat(lat1=lat)
|
|
590
|
-
args = tuple(sincos2d(lat)) * 2 + (_Ks(k0=k0), datum
|
|
591
|
-
_AlbersBase.__init__(self, *args)
|
|
590
|
+
args = tuple(sincos2d(lat)) * 2 + (_Ks(k0=k0), datum)
|
|
591
|
+
_AlbersBase.__init__(self, *args, **name)
|
|
592
592
|
|
|
593
593
|
|
|
594
594
|
class AlbersEqualArea2(_AlbersBase):
|
|
@@ -598,7 +598,7 @@ class AlbersEqualArea2(_AlbersBase):
|
|
|
598
598
|
'''
|
|
599
599
|
_k = _k1_
|
|
600
600
|
|
|
601
|
-
def __init__(self, lat1, lat2, k1=1, datum=_WGS84, name
|
|
601
|
+
def __init__(self, lat1, lat2, k1=1, datum=_WGS84, **name):
|
|
602
602
|
'''New L{AlbersEqualArea2} projection.
|
|
603
603
|
|
|
604
604
|
@arg lat1: First standard parallel (C{degrees}).
|
|
@@ -606,14 +606,14 @@ class AlbersEqualArea2(_AlbersBase):
|
|
|
606
606
|
@kwarg k1: Azimuthal scale on the standard parallels (C{scalar}).
|
|
607
607
|
@kwarg datum: Optional datum or ellipsoid (L{Datum}, L{Ellipsoid},
|
|
608
608
|
L{Ellipsoid2} or L{a_f2Tuple}).
|
|
609
|
-
@kwarg name: Optional name for the projection (C{str}).
|
|
609
|
+
@kwarg name: Optional C{B{name}=NN} for the projection (C{str}).
|
|
610
610
|
|
|
611
611
|
@raise AlbersError: Invalid B{C{lat1}}m B{C{lat2}}, B{C{k1}}
|
|
612
612
|
or no convergence.
|
|
613
613
|
'''
|
|
614
614
|
self._lat1, self._lat2 = lats = _Lat(lat1=lat1), _Lat(lat2=lat2)
|
|
615
|
-
args = tuple(sincos2d_(*lats)) + (_Ks(k1=k1), datum
|
|
616
|
-
_AlbersBase.__init__(self, *args)
|
|
615
|
+
args = tuple(sincos2d_(*lats)) + (_Ks(k1=k1), datum)
|
|
616
|
+
_AlbersBase.__init__(self, *args, **name)
|
|
617
617
|
|
|
618
618
|
|
|
619
619
|
class AlbersEqualArea4(_AlbersBase):
|
|
@@ -624,7 +624,7 @@ class AlbersEqualArea4(_AlbersBase):
|
|
|
624
624
|
'''
|
|
625
625
|
_k = _k1_
|
|
626
626
|
|
|
627
|
-
def __init__(self, slat1, clat1, slat2, clat2, k1=1, datum=_WGS84, name
|
|
627
|
+
def __init__(self, slat1, clat1, slat2, clat2, k1=1, datum=_WGS84, **name):
|
|
628
628
|
'''New L{AlbersEqualArea4} projection.
|
|
629
629
|
|
|
630
630
|
@arg slat1: Sine of first standard parallel (C{scalar}).
|
|
@@ -634,20 +634,20 @@ class AlbersEqualArea4(_AlbersBase):
|
|
|
634
634
|
@kwarg k1: Azimuthal scale on the standard parallels (C{scalar}).
|
|
635
635
|
@kwarg datum: Optional datum or ellipsoid (L{Datum}, L{Ellipsoid},
|
|
636
636
|
L{Ellipsoid2} or L{a_f2Tuple}).
|
|
637
|
-
@kwarg name: Optional name for the projection (C{str}).
|
|
637
|
+
@kwarg name: Optional C{B{name}=NN} for the projection (C{str}).
|
|
638
638
|
|
|
639
639
|
@raise AlbersError: Negative B{C{clat1}} or B{C{clat2}}, B{C{slat1}}
|
|
640
640
|
and B{C{slat2}} have opposite signs (hemispheres),
|
|
641
641
|
invalid B{C{k1}} or no convergence.
|
|
642
642
|
'''
|
|
643
|
-
def _Lat_s_c3(
|
|
644
|
-
r = Float_(hypot(s, c), name=
|
|
645
|
-
L = _Lat(atan1d(s, c), name=
|
|
643
|
+
def _Lat_s_c3(n, s, c):
|
|
644
|
+
r = Float_(hypot(s, c), name=n, Error=AlbersError)
|
|
645
|
+
L = _Lat( atan1d(s, c), name=n)
|
|
646
646
|
return L, (s / r), (c / r)
|
|
647
647
|
|
|
648
648
|
self._lat1, sa1, ca1 = _Lat_s_c3(_lat1_, slat1, clat1)
|
|
649
649
|
self._lat2, sa2, ca2 = _Lat_s_c3(_lat2_, slat2, clat2)
|
|
650
|
-
_AlbersBase.__init__(self, sa1, ca1, sa2, ca2, _Ks(k1=k1), datum, name)
|
|
650
|
+
_AlbersBase.__init__(self, sa1, ca1, sa2, ca2, _Ks(k1=k1), datum, **name)
|
|
651
651
|
|
|
652
652
|
|
|
653
653
|
class AlbersEqualAreaCylindrical(_AlbersBase):
|
|
@@ -656,16 +656,16 @@ class AlbersEqualAreaCylindrical(_AlbersBase):
|
|
|
656
656
|
'''
|
|
657
657
|
_lat1 = _lat2 = _Lat(lat1=_0_0)
|
|
658
658
|
|
|
659
|
-
def __init__(self, lat=_0_0, datum=_WGS84, name
|
|
659
|
+
def __init__(self, lat=_0_0, datum=_WGS84, **name):
|
|
660
660
|
'''New L{AlbersEqualAreaCylindrical} projection.
|
|
661
661
|
|
|
662
662
|
@kwarg lat: Standard parallel (C{0 degrees} I{fixed}).
|
|
663
663
|
@kwarg datum: Optional datum or ellipsoid (L{Datum}, L{Ellipsoid},
|
|
664
664
|
L{Ellipsoid2} or L{a_f2Tuple}).
|
|
665
|
-
@kwarg name: Optional name for the projection (C{str}).
|
|
665
|
+
@kwarg name: Optional C{B{name}=NN} for the projection (C{str}).
|
|
666
666
|
'''
|
|
667
667
|
_xlat(lat, _0_0, AlbersEqualAreaCylindrical)
|
|
668
|
-
_AlbersBase.__init__(self, _0_0, _1_0, _0_0, _1_0, 1, datum, name)
|
|
668
|
+
_AlbersBase.__init__(self, _0_0, _1_0, _0_0, _1_0, 1, datum, **name)
|
|
669
669
|
|
|
670
670
|
|
|
671
671
|
class AlbersEqualAreaNorth(_AlbersBase):
|
|
@@ -674,16 +674,16 @@ class AlbersEqualAreaNorth(_AlbersBase):
|
|
|
674
674
|
'''
|
|
675
675
|
_lat1 = _lat2 = _Lat(lat1=_90_0)
|
|
676
676
|
|
|
677
|
-
def __init__(self, lat=_90_0, datum=_WGS84, name
|
|
677
|
+
def __init__(self, lat=_90_0, datum=_WGS84, **name):
|
|
678
678
|
'''New L{AlbersEqualAreaNorth} projection.
|
|
679
679
|
|
|
680
680
|
@kwarg lat: Standard parallel (C{90 degrees} I{fixed}).
|
|
681
681
|
@kwarg datum: Optional datum or ellipsoid (L{Datum}, L{Ellipsoid},
|
|
682
682
|
L{Ellipsoid2} or L{a_f2Tuple}).
|
|
683
|
-
@kwarg name: Optional name for the projection (C{str}).
|
|
683
|
+
@kwarg name: Optional C{B{name}=NN} for the projection (C{str}).
|
|
684
684
|
'''
|
|
685
685
|
_xlat(lat, _90_0, AlbersEqualAreaNorth)
|
|
686
|
-
_AlbersBase.__init__(self, _1_0, _0_0, _1_0, _0_0, 1, datum, name)
|
|
686
|
+
_AlbersBase.__init__(self, _1_0, _0_0, _1_0, _0_0, 1, datum, **name)
|
|
687
687
|
|
|
688
688
|
|
|
689
689
|
class AlbersEqualAreaSouth(_AlbersBase):
|
|
@@ -692,16 +692,16 @@ class AlbersEqualAreaSouth(_AlbersBase):
|
|
|
692
692
|
'''
|
|
693
693
|
_lat1 = _lat2 = _Lat(lat1=_N_90_0)
|
|
694
694
|
|
|
695
|
-
def __init__(self, lat=_N_90_0, datum=_WGS84, name
|
|
695
|
+
def __init__(self, lat=_N_90_0, datum=_WGS84, **name):
|
|
696
696
|
'''New L{AlbersEqualAreaSouth} projection.
|
|
697
697
|
|
|
698
698
|
@kwarg lat: Standard parallel (C{-90 degrees} I{fixed}).
|
|
699
699
|
@kwarg datum: Optional datum or ellipsoid (L{Datum}, L{Ellipsoid},
|
|
700
700
|
L{Ellipsoid2} or L{a_f2Tuple}).
|
|
701
|
-
@kwarg name: Optional name for the projection (C{str}).
|
|
701
|
+
@kwarg name: Optional C{B{name}=NN} for the projection (C{str}).
|
|
702
702
|
'''
|
|
703
703
|
_xlat(lat, _N_90_0, AlbersEqualAreaSouth)
|
|
704
|
-
_AlbersBase.__init__(self, _N_1_0, _0_0, _N_1_0, _0_0, 1, datum, name)
|
|
704
|
+
_AlbersBase.__init__(self, _N_1_0, _0_0, _N_1_0, _0_0, 1, datum, **name)
|
|
705
705
|
|
|
706
706
|
|
|
707
707
|
class Albers7Tuple(_NamedTuple):
|
|
@@ -832,7 +832,7 @@ def _xlat(lat, f, where):
|
|
|
832
832
|
'''
|
|
833
833
|
if lat is not f and _Lat(lat=lat) != f:
|
|
834
834
|
t = unstr(where, lat=lat)
|
|
835
|
-
raise AlbersError(t,
|
|
835
|
+
raise AlbersError(t, txt_not_=f)
|
|
836
836
|
|
|
837
837
|
|
|
838
838
|
__all__ += _ALL_DOCS(_AlbersBase)
|
pygeodesy/auxilats/__init__.py
CHANGED
|
@@ -29,7 +29,7 @@ from pygeodesy.lazily import _ALL_OTHER
|
|
|
29
29
|
# no modules: auxAngle, auxDLat, auxDST, auxily, auxLat
|
|
30
30
|
__all__ = _ALL_OTHER(Aux, AuxAngle, AuxDLat, AuxDST, AuxLat,
|
|
31
31
|
AuxBeta, AuxChi, AuxMu, AuxPhi, AuxTheta, AuxXi)
|
|
32
|
-
__version__ = '
|
|
32
|
+
__version__ = '24.05.31'
|
|
33
33
|
|
|
34
34
|
# **) MIT License
|
|
35
35
|
#
|
pygeodesy/auxilats/__main__.py
CHANGED
|
@@ -5,7 +5,7 @@ u'''Print L{auxilats} version, etc. using C{python -m pygeodesy.auxilats}.
|
|
|
5
5
|
'''
|
|
6
6
|
|
|
7
7
|
__all__ = ()
|
|
8
|
-
__version__ = '24.05.
|
|
8
|
+
__version__ = '24.05.31'
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
def _CXstats(): # PYCHOK no cover
|
|
@@ -80,4 +80,4 @@ _main()
|
|
|
80
80
|
# OTHER DEALINGS IN THE SOFTWARE.
|
|
81
81
|
|
|
82
82
|
# % python3 -m pygeodesy.geodesicx
|
|
83
|
-
# pygeodesy.
|
|
83
|
+
# pygeodesy.auxilats.version=24.05.31, .ALorder=6, .CXlen=522, .CXset=418, .CXset_len=80.1%, .CXx=6 (Python 3.12.3, 64bit, arm64, geographiclib 2.0)
|
pygeodesy/auxilats/auxAngle.py
CHANGED
|
@@ -14,16 +14,15 @@ under the MIT/X11 License. For more information, see the U{GeographicLib
|
|
|
14
14
|
# make sure int/int division yields float quotient, see .basics
|
|
15
15
|
from __future__ import division as _; del _ # PYCHOK semicolon
|
|
16
16
|
|
|
17
|
-
from pygeodesy.auxilats.auxily import Aux, _Aux2Greek
|
|
18
|
-
from pygeodesy.basics import _xinstanceof
|
|
17
|
+
from pygeodesy.auxilats.auxily import Aux, _Aux2Greek
|
|
18
|
+
from pygeodesy.basics import _xinstanceof
|
|
19
19
|
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, _UnexpectedError, _xkwds_pop2
|
|
22
22
|
from pygeodesy.fmath import hypot, unstr
|
|
23
|
-
from pygeodesy.fsums import _add_op_, _iadd_op_, _isub_op_, _sub_op_
|
|
24
|
-
|
|
25
|
-
# from pygeodesy.
|
|
26
|
-
from pygeodesy.lazily import _ALL_DOCS, _ALL_MODS as _MODS
|
|
23
|
+
from pygeodesy.fsums import _add_op_, _iadd_op_, _isub_op_, _sub_op_
|
|
24
|
+
from pygeodesy.named import _name2__, _Named, _ALL_DOCS, _MODS
|
|
25
|
+
# from pygeodesy.lazily import _ALL_DOCS, _ALL_MODS as _MODS # from .named
|
|
27
26
|
from pygeodesy.props import Property, Property_RO, property_RO, _update_all
|
|
28
27
|
# from pygeodesy.streprs import unstr # from .fmath
|
|
29
28
|
from pygeodesy.units import Degrees, Radians
|
|
@@ -32,7 +31,7 @@ from pygeodesy.utily import atan2d, sincos2, sincos2d
|
|
|
32
31
|
from math import asinh, atan2, copysign, degrees, fabs, radians, sinh
|
|
33
32
|
|
|
34
33
|
__all__ = ()
|
|
35
|
-
__version__ = '24.
|
|
34
|
+
__version__ = '24.05.25'
|
|
36
35
|
|
|
37
36
|
_0_INF_NAN_NINF = (0, _0_0) + _INF_NAN_NINF
|
|
38
37
|
_MAX_2 = MAX * _0_5 # PYCHOK used!
|
|
@@ -49,18 +48,18 @@ class AuxAngle(_Named):
|
|
|
49
48
|
_y = _0_0
|
|
50
49
|
_x = _1_0
|
|
51
50
|
|
|
52
|
-
def __init__(self, y_angle=_0_0, x=_1_0,
|
|
51
|
+
def __init__(self, y_angle=_0_0, x=_1_0, **name_aux):
|
|
53
52
|
'''New L{AuxAngle}.
|
|
54
53
|
|
|
55
54
|
@kwarg y_angle: The Y component (C{scalar}, including C{INF}, C{NAN}
|
|
56
55
|
and C{NINF}) or a previous L{AuxAngle} instance.
|
|
57
56
|
@kwarg x: The X component, ignored if C{B{y_angle}} is non-C{scalar}.
|
|
58
|
-
@kwarg
|
|
59
|
-
|
|
60
|
-
is non-C{scalar}.
|
|
57
|
+
@kwarg name_aux: Optional C{B{name}=NN} (C{str}) and I{Auxiliary} kind
|
|
58
|
+
(C{B{aux}=Aux.KIND}), ignored if B{C{y_angle}} is L{AuxAngle}.
|
|
61
59
|
|
|
62
60
|
@raise AuxError: Invalid B{C{y_angle}}, B{C{x}} or B{C{aux}}.
|
|
63
61
|
'''
|
|
62
|
+
name, aux = _name2__(**name_aux)
|
|
64
63
|
try:
|
|
65
64
|
yx = y_angle._yx
|
|
66
65
|
if self._AUX is None:
|
|
@@ -70,11 +69,13 @@ class AuxAngle(_Named):
|
|
|
70
69
|
except AttributeError:
|
|
71
70
|
yx = y_angle, x
|
|
72
71
|
if aux:
|
|
73
|
-
|
|
74
|
-
if
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
a, kwds = _xkwds_pop2(aux, aux=self._AUX)
|
|
73
|
+
if kwds:
|
|
74
|
+
raise _UnexpectedError(**kwds)
|
|
75
|
+
if a is not self._AUX:
|
|
76
|
+
if a not in _AUXClass:
|
|
77
|
+
raise AuxError(aux=a)
|
|
78
|
+
self._AUX = a
|
|
78
79
|
self._y, self._x = _yx2(yx)
|
|
79
80
|
if name:
|
|
80
81
|
self.name = name
|
|
@@ -428,16 +429,16 @@ class AuxBeta(AuxAngle):
|
|
|
428
429
|
_AUX = Aux.BETA
|
|
429
430
|
|
|
430
431
|
@staticmethod
|
|
431
|
-
def fromDegrees(deg, name
|
|
432
|
+
def fromDegrees(deg, **name):
|
|
432
433
|
'''Get an L{AuxBeta} from degrees.
|
|
433
434
|
'''
|
|
434
|
-
return AuxBeta(*sincos2d(deg), name
|
|
435
|
+
return AuxBeta(*sincos2d(deg), **name)
|
|
435
436
|
|
|
436
437
|
@staticmethod
|
|
437
|
-
def fromRadians(rad, name
|
|
438
|
+
def fromRadians(rad, **name):
|
|
438
439
|
'''Get an L{AuxBeta} from radians.
|
|
439
440
|
'''
|
|
440
|
-
return AuxBeta(*sincos2(rad), name
|
|
441
|
+
return AuxBeta(*sincos2(rad), **name)
|
|
441
442
|
|
|
442
443
|
|
|
443
444
|
class AuxChi(AuxAngle):
|
|
@@ -446,10 +447,10 @@ class AuxChi(AuxAngle):
|
|
|
446
447
|
_AUX = Aux.CHI
|
|
447
448
|
|
|
448
449
|
@staticmethod
|
|
449
|
-
def fromDegrees(deg, name
|
|
450
|
+
def fromDegrees(deg, **name):
|
|
450
451
|
'''Get an L{AuxChi} from degrees.
|
|
451
452
|
'''
|
|
452
|
-
return AuxChi(*sincos2d(deg), name
|
|
453
|
+
return AuxChi(*sincos2d(deg), **name)
|
|
453
454
|
|
|
454
455
|
|
|
455
456
|
class AuxMu(AuxAngle):
|
|
@@ -458,10 +459,10 @@ class AuxMu(AuxAngle):
|
|
|
458
459
|
_AUX = Aux.MU
|
|
459
460
|
|
|
460
461
|
@staticmethod
|
|
461
|
-
def fromDegrees(deg, name
|
|
462
|
+
def fromDegrees(deg, **name):
|
|
462
463
|
'''Get an L{AuxMu} from degrees.
|
|
463
464
|
'''
|
|
464
|
-
return AuxMu(*sincos2d(deg), name
|
|
465
|
+
return AuxMu(*sincos2d(deg), **name)
|
|
465
466
|
|
|
466
467
|
|
|
467
468
|
class AuxPhi(AuxAngle):
|
|
@@ -471,10 +472,10 @@ class AuxPhi(AuxAngle):
|
|
|
471
472
|
_diff = _1_0 # see .auxLat._Newton
|
|
472
473
|
|
|
473
474
|
@staticmethod
|
|
474
|
-
def fromDegrees(deg, name
|
|
475
|
+
def fromDegrees(deg, **name):
|
|
475
476
|
'''Get an L{AuxPhi} from degrees.
|
|
476
477
|
'''
|
|
477
|
-
return AuxPhi(*sincos2d(deg), name
|
|
478
|
+
return AuxPhi(*sincos2d(deg), **name)
|
|
478
479
|
|
|
479
480
|
|
|
480
481
|
class AuxTheta(AuxAngle):
|
|
@@ -483,10 +484,10 @@ class AuxTheta(AuxAngle):
|
|
|
483
484
|
_AUX = Aux.THETA
|
|
484
485
|
|
|
485
486
|
@staticmethod
|
|
486
|
-
def fromDegrees(deg, name
|
|
487
|
+
def fromDegrees(deg, **name):
|
|
487
488
|
'''Get an L{AuxTheta} from degrees.
|
|
488
489
|
'''
|
|
489
|
-
return AuxTheta(*sincos2d(deg), name
|
|
490
|
+
return AuxTheta(*sincos2d(deg), **name)
|
|
490
491
|
|
|
491
492
|
|
|
492
493
|
class AuxXi(AuxAngle):
|
|
@@ -495,10 +496,10 @@ class AuxXi(AuxAngle):
|
|
|
495
496
|
_AUX = Aux.XI
|
|
496
497
|
|
|
497
498
|
@staticmethod
|
|
498
|
-
def fromDegrees(deg, name
|
|
499
|
+
def fromDegrees(deg, **name):
|
|
499
500
|
'''Get an L{AuxXi} from degrees.
|
|
500
501
|
'''
|
|
501
|
-
return AuxXi(*sincos2d(deg), name
|
|
502
|
+
return AuxXi(*sincos2d(deg), **name)
|
|
502
503
|
|
|
503
504
|
|
|
504
505
|
_AUXClass = {Aux.BETA: AuxBeta,
|