pygeodesy 24.12.12__py2.py3-none-any.whl → 25.1.5__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.12.12.dist-info → PyGeodesy-25.1.5.dist-info}/METADATA +32 -33
- {PyGeodesy-24.12.12.dist-info → PyGeodesy-25.1.5.dist-info}/RECORD +26 -26
- pygeodesy/__init__.py +16 -16
- pygeodesy/basics.py +59 -7
- pygeodesy/constants.py +2 -2
- pygeodesy/deprecated/__init__.py +1 -1
- pygeodesy/deprecated/classes.py +85 -1
- pygeodesy/deprecated/datum.py +4 -4
- pygeodesy/deprecated/functions.py +25 -1
- pygeodesy/ecef.py +4 -4
- pygeodesy/fmath.py +2 -2
- pygeodesy/formy.py +350 -463
- pygeodesy/frechet.py +28 -85
- pygeodesy/geodesici.py +4 -4
- pygeodesy/geodesicx/__init__.py +1 -1
- pygeodesy/geodesicx/__main__.py +3 -4
- pygeodesy/geoids.py +276 -202
- pygeodesy/hausdorff.py +22 -80
- pygeodesy/heights.py +114 -149
- pygeodesy/latlonBase.py +51 -87
- pygeodesy/lazily.py +44 -35
- pygeodesy/ltpTuples.py +2 -2
- pygeodesy/named.py +11 -11
- pygeodesy/utily.py +188 -115
- {PyGeodesy-24.12.12.dist-info → PyGeodesy-25.1.5.dist-info}/WHEEL +0 -0
- {PyGeodesy-24.12.12.dist-info → PyGeodesy-25.1.5.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PyGeodesy
|
|
3
|
-
Version:
|
|
3
|
+
Version: 25.1.5
|
|
4
4
|
Summary: Pure Python geodesy tools
|
|
5
5
|
Home-page: https://GitHub.com/mrJean1/PyGeodesy
|
|
6
6
|
Author: Jean M. Brouwers
|
|
@@ -33,8 +33,8 @@ earth models using precision trigonometric, vector-based, exact, elliptic, itera
|
|
|
33
33
|
approximate methods for geodetic (lat-/longitude), geocentric (ECEF_ cartesian) and certain
|
|
34
34
|
`triaxial ellipsoidal`_ coordinates.
|
|
35
35
|
|
|
36
|
-
Transcoded from `JavaScript originals`_ by *Chris Veness (C) 2005-2024* and from several
|
|
37
|
-
classes`_ by *Charles F.F. Karney (C) 2008-2024* and published under the same `MIT License`_.
|
|
36
|
+
Transcoded partially from `JavaScript originals`_ by *Chris Veness (C) 2005-2024* and from several
|
|
37
|
+
`C++ classes`_ by *Charles F.F. Karney (C) 2008-2024* and published under the same `MIT License`_.
|
|
38
38
|
|
|
39
39
|
There are four modules for ellipsoidal earth models, *ellipsoidalExact*, *-Karney*, *-Vincenty*
|
|
40
40
|
and *-Nvector* and two for spherical ones, *sphericalTrigonometry* and *-Nvector*. Each module
|
|
@@ -73,7 +73,7 @@ If the wheel ``PyGeodesy-yy.m.d-py2.py3-none-any.whl`` is missing in `PyPI Downl
|
|
|
73
73
|
the file from `GitHub/dist`_. Install that with ``python[3] -m pip install <path-to-downloaded-wheel>``
|
|
74
74
|
and verify with ``python[3] -m pygeodesy``.
|
|
75
75
|
|
|
76
|
-
Alternatively, download ``PyGeodesy-yy.m.d.
|
|
76
|
+
Alternatively, download ``PyGeodesy-yy.m.d.tar.gz`` from PyPI_ or GitHub_, ``unzip`` the downloaded file,
|
|
77
77
|
``cd`` to directory ``PyGeodesy-yy.m.d`` and type ``python[3] setup.py install``.
|
|
78
78
|
|
|
79
79
|
To run all PyGeodesy tests, type ``python[3] test/run.py`` or type ``python[3] test/unitTestSuite.py``
|
|
@@ -108,49 +108,49 @@ variable ``PYGEODESY_RHUMBSOLVE`` or with property ``Ellipsoid.rhumbsolve``.
|
|
|
108
108
|
Documentation
|
|
109
109
|
=============
|
|
110
110
|
|
|
111
|
-
In addition to the ``pygeodesy`` package, the PyGeodesy_ `distribution files`_ contain the tests,
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
In addition to the ``pygeodesy`` package, the PyGeodesy_ `distribution files`_ contain the tests, the
|
|
112
|
+
test results (on macOS only) and the complete documentation_ generated by Epydoc_ using command line:
|
|
113
|
+
`epydoc --html --no-private --no-source --name=PyGeodesy --url=... -v pygeodesy``.
|
|
114
114
|
|
|
115
115
|
Tests
|
|
116
116
|
=====
|
|
117
117
|
|
|
118
|
-
The tests ran with Python 3.13.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
118
|
+
The tests ran with Python 3.13.1 (with geographiclib_ 2.0), 3.12.7 (with geographiclib_ 2.0, numpy_ 2.1.0,
|
|
119
|
+
scipy_ 1.14.1, GeodSolve_ 2.3, IntersectTool_ 2.3 and RhumbSolve_ 2.3), 3.11.5 (with geographiclib_ 2.0,
|
|
120
|
+
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,
|
|
121
|
+
GeoConvert_ 2.3, GeodSolve_ 2.3), Python 3.9.6 and Python 2.7.18 (with geographiclib_ 1.50, numpy_ 1.16.6,
|
|
122
|
+
scipy_ 1.2.2, GeoConvert_ 2.3, GeodSolve_ 2.3, IntersectTool_ 2.3 and RhumbSolve_ 2.3), all on macOS 14.6.1
|
|
123
|
+
Sonoma in 64-bit.
|
|
124
124
|
|
|
125
125
|
All tests ran with and without ``lazy import`` for Python 3 and with command line option ``-W default``
|
|
126
126
|
and env variable ``PYGEODESY_WARNINGS=on`` for all Python versions. The results of those tests are
|
|
127
127
|
included in the distribution files.
|
|
128
128
|
|
|
129
|
-
Python 3.13.
|
|
129
|
+
Python 3.13.1, 3.12.7, 3.11.5 and 3.10.8 run on Apple M1 Silicon (``arm64``), *natively*. Python 2.7.18
|
|
130
130
|
runs on Intel (``x86_64``) or Intel *emulation* (\"``arm64_x86_64``\", see function `pygeodesy.machine`_).
|
|
131
131
|
|
|
132
|
-
Test coverage has been measured with coverage_ 7.6.1 using Python 3.13.
|
|
132
|
+
Test coverage has been measured with coverage_ 7.6.1 using Python 3.13.1, 3.12.7, 3.11.5 and 3.10.8. The
|
|
133
133
|
complete coverage report in HTML and a PDF summary are included in the distribution files.
|
|
134
134
|
|
|
135
|
-
The tests also ran with Python 3.13.
|
|
135
|
+
The tests also ran with Python 3.13.1 (and geographiclib_ 2.0) on `Debian 12`_ in 64-bit only and with
|
|
136
136
|
Python 3.12.5 (and geographiclib_ 2.0) on `Windows 2019Server`_ in 64-bit only and with Python 2.7.18
|
|
137
137
|
(and with geographiclib_ 1.52) on `Windows 10`_ in 64- and 32-bit.
|
|
138
138
|
|
|
139
|
-
A single-File and single-Directory application with ``pygeodesy`` has been bundled using PyInstaller_
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
Previously, the tests were run with Python 3.12.0-6, 3.11.2-4, 3.10.1-7, 3.9.1, 3.8.7, 3.7.1, 2.7.15,
|
|
143
|
-
7.3.12 (Python 3.10.12), 7.3.1 (Python 3.6.9) and PyPy_ 7.1.1 (Python 2.7.13) (and geographiclib_ 1.52,
|
|
144
|
-
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, 1.4.1, 1.5.2 or 1.8.1)
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
Windows
|
|
139
|
+
A single-File and single-Directory application with ``pygeodesy`` has been bundled using PyInstaller_ 3.4
|
|
140
|
+
and 64-bit Python 3.7.4 and 3.7.3 on macOS 10.13.6 High Sierra.
|
|
141
|
+
|
|
142
|
+
Previously, the tests were run with Python 3.13.0, 3.12.0-6, 3.11.2-4, 3.10.1-7, 3.9.1, 3.8.7, 3.7.1, 2.7.15,
|
|
143
|
+
PyPy_ 7.3.12 (Python 3.10.12), 7.3.1 (Python 3.6.9) and PyPy_ 7.1.1 (Python 2.7.13) (and geographiclib_ 1.52,
|
|
144
|
+
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, 1.4.1, 1.5.2 or 1.8.1) on
|
|
145
|
+
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
|
|
146
|
+
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),
|
|
147
|
+
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
|
|
148
|
+
numpy_ 1.11.3) on macOS 14.0-5 Sonoma, 13.0-5.2 Ventura, 12.1-6 Monterey, 11.0-5.2-6.1 Big Sur (aka 10.16),
|
|
149
|
+
10.15.3, 10.15.5-7 Catalina, 10.14 Mojave, 10.13.6 High Sierra and 10.12 Sierra, MacOS X 10.11 El Capitan
|
|
150
|
+
and/or MacOS X 10.10 Yosemite, with Pythonista_ 3.2 (with geographiclib 1.50 or 1.49 and numpy 1.8.0) on
|
|
151
|
+
iOS 14.4.2, 11.4.1, 12.0-3 on iPad4, iPhone6, iPhone10 and/or iPhone12, with Pythonista_ 3.1 on iOS 10.3.3,
|
|
152
|
+
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 Server 2012R2,
|
|
153
|
+
Windows 10 Pro and 32-bit Python 2.6.6 on Windows XP SP3.
|
|
154
154
|
|
|
155
155
|
Notes
|
|
156
156
|
=====
|
|
@@ -160,7 +160,7 @@ and McCabe_ using Python 2.7.18 and with Flake8_ using Python 3.11.5, both in 64
|
|
|
160
160
|
|
|
161
161
|
For a summary of all *Karney*-based functionality in ``pygeodesy``, see module karney_.
|
|
162
162
|
|
|
163
|
-
*Last updated:
|
|
163
|
+
*Last updated: Jan 05, 2025.*
|
|
164
164
|
|
|
165
165
|
License
|
|
166
166
|
=======
|
|
@@ -265,7 +265,6 @@ DEALINGS IN THE SOFTWARE.
|
|
|
265
265
|
.. _Sutherland-Hodgman: https://WikiPedia.org/wiki/Sutherland-Hodgman_algorithm
|
|
266
266
|
.. _TRF: http://ITRF.ENSG.IGN.FR
|
|
267
267
|
.. _triaxial ellipsoidal: https://GeographicLib.SourceForge.io/1.44/triaxial.html
|
|
268
|
-
.. _Ubuntu 16.04: https://Travis-CI.com/mrJean1/PyGeodesy
|
|
269
268
|
.. _UPS: https://WikiPedia.org/wiki/Universal_polar_stereographic_coordinate_system
|
|
270
269
|
.. _UTM: https://www.Movable-Type.co.UK/scripts/latlong-utm-mgrs.html
|
|
271
270
|
.. _Vector-based: https://www.Movable-Type.co.UK/scripts/latlong-vectors.html
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
|
|
2
|
-
pygeodesy/__init__.py,sha256=
|
|
2
|
+
pygeodesy/__init__.py,sha256=oSRVJhOmmebIxdlJGcBqWj9vKnIBeT-8vQ-ozepzIfA,42648
|
|
3
3
|
pygeodesy/__main__.py,sha256=SJ-P17Lpr0_yOQSB9ItjqJzPue35ije8oxHPGS_OZk8,5442
|
|
4
4
|
pygeodesy/albers.py,sha256=0pl5e39wacZyEDP7GjHGRx9WXUc_vq36wPUusC7ltLo,30955
|
|
5
5
|
pygeodesy/azimuthal.py,sha256=or03e4j4AycZqVpkcsCj_doCFO7tkypB1Fu98tdg_E8,49763
|
|
6
|
-
pygeodesy/basics.py,sha256=
|
|
6
|
+
pygeodesy/basics.py,sha256=h2yPijizu_JR2_h4d-FYqLaAAexKUbWTdtDMQvUbqlg,31784
|
|
7
7
|
pygeodesy/booleans.py,sha256=RuZ26Hkl_fiDjvcg3FipsKrrB8kcQVYXHTUajPVocRE,73544
|
|
8
8
|
pygeodesy/cartesianBase.py,sha256=TPCRRw_Jua7lpnZ29LsIorPAhZ-uEn39y9hAScWnEMQ,45350
|
|
9
9
|
pygeodesy/clipy.py,sha256=r2M4Kzu4q95dFzia0w88oFoU9rM5ejwdRZ-aeqdB0JY,27728
|
|
10
|
-
pygeodesy/constants.py,sha256=
|
|
10
|
+
pygeodesy/constants.py,sha256=_LHRE9sAYn2YjPjfarhNukFGXNnXrd5VZhBm0euZF-U,19825
|
|
11
11
|
pygeodesy/css.py,sha256=g86DBzqNRbeWECY3101fMuBDien8Q4gtc16g83U0hFg,25642
|
|
12
12
|
pygeodesy/datums.py,sha256=pdIPv57Fs1sqKe8p8_HOAgyeT1tUQlvwuUsJ3uf5z6Q,34057
|
|
13
13
|
pygeodesy/dms.py,sha256=09Yw1w-uxhROlQA8cbActNp4A5n-lvPsVKJZvLnomJM,42174
|
|
14
|
-
pygeodesy/ecef.py,sha256=
|
|
14
|
+
pygeodesy/ecef.py,sha256=JfbsBHYnFG2yD3w0NnYlo5NJ8TxYsb7H3fuv_tyD48I,59386
|
|
15
15
|
pygeodesy/elevations.py,sha256=JMKlXMWzUp4evbCJA7mZX02UuXIr681zHM5knn3ycq0,10801
|
|
16
16
|
pygeodesy/ellipsoidalBase.py,sha256=_WxC5rzxZ5IQ0yl3Pm73W4KplbaO5idCD4vKEexYCWY,55111
|
|
17
17
|
pygeodesy/ellipsoidalBaseDI.py,sha256=cVAgJ057TAlqa-B4Ho1I1P-mfBFO_kx4WeFM71oUrzU,38243
|
|
@@ -25,31 +25,31 @@ pygeodesy/elliptic.py,sha256=s9MZgTK3zl4AQVSans3RjYoDqQ425xU2t2zIyxAFhYM,45003
|
|
|
25
25
|
pygeodesy/epsg.py,sha256=VIBidzAEuoBF4LdlJ4r3WtpL0Ymhru8kf4fAgfFr5ok,8220
|
|
26
26
|
pygeodesy/errors.py,sha256=MskMWomF3bVK4orjSmIfVYilLeXGLi1-bcuyqhmBrXc,32098
|
|
27
27
|
pygeodesy/etm.py,sha256=NLhinROJNuql1fRtPozUeVOyczc9RNBgtm-6h8AxY2M,46722
|
|
28
|
-
pygeodesy/fmath.py,sha256=
|
|
29
|
-
pygeodesy/formy.py,sha256=
|
|
30
|
-
pygeodesy/frechet.py,sha256=
|
|
28
|
+
pygeodesy/fmath.py,sha256=Uo8tTS4hNwNEuSoDHz0H82LA7mSF9LRRieLTODwHlw4,36933
|
|
29
|
+
pygeodesy/formy.py,sha256=qXUGFwRn6cAxW7Z9U42c5hVEIhYuVZxdwShqeyfIVVU,69849
|
|
30
|
+
pygeodesy/frechet.py,sha256=jOxnFQNI4eL-axq8IiytpUvOXkyOdeVkXIAVZeBbu_M,31765
|
|
31
31
|
pygeodesy/fstats.py,sha256=Bt2U_xdJW3Cio7Jn6MdxEJNGWR9VgNE5RLRb3ux5-g4,28288
|
|
32
32
|
pygeodesy/fsums.py,sha256=O2pHSJqMJ4DUfo6wr9LerutKVFdlOaJOAohxZVcvZss,103979
|
|
33
33
|
pygeodesy/gars.py,sha256=9DcCpPRv6QOgWeHIjW5qNZ8FSKZZueodRqi8xQru1Ik,11829
|
|
34
|
-
pygeodesy/geodesici.py,sha256=
|
|
34
|
+
pygeodesy/geodesici.py,sha256=eYEHEmkbtndfXH9_dtphhMGeI9RgqL0PgqmdF7I-Rck,74776
|
|
35
35
|
pygeodesy/geodesicw.py,sha256=C4HED2A4V7T9hdY-q4yoalvz5cWiXAoCSRo8iMeSJEE,28774
|
|
36
36
|
pygeodesy/geodsolve.py,sha256=BN769RW0D27HL4nM4DRg39rMvz--_gVeK6E2wphZmkw,28989
|
|
37
37
|
pygeodesy/geohash.py,sha256=pgSqcjOUx-9cTcBOiesBT2jLaRHaRGhAxTgt_jMFZ0Y,40201
|
|
38
|
-
pygeodesy/geoids.py,sha256=
|
|
39
|
-
pygeodesy/hausdorff.py,sha256=
|
|
40
|
-
pygeodesy/heights.py,sha256=
|
|
38
|
+
pygeodesy/geoids.py,sha256=ucMC9xuP5RqqbRdAy_LDNp2IIg1Z_i5xP_O37iClOaI,86215
|
|
39
|
+
pygeodesy/hausdorff.py,sha256=idjw0Or_2fxJhGN0jLoV1rX39HXgEOi0XeJaAxwnKck,32137
|
|
40
|
+
pygeodesy/heights.py,sha256=u8G9-uD_QxwlYZTc64Z145oche2xtSVb_8wa9GkTKVs,41190
|
|
41
41
|
pygeodesy/internals.py,sha256=y0e861QXZMWFNrI03u41rJ8VQXojxwd5G3naCNDzs2M,24299
|
|
42
42
|
pygeodesy/interns.py,sha256=TituXfrjkSxLcZlTdSofCfqpGNpu6dw02x9eEQYyEzs,23346
|
|
43
43
|
pygeodesy/iters.py,sha256=hG4wctuBdr35Zr6u0iDAA-rAH0XR9Diw2ARKwcr-5Aw,20311
|
|
44
44
|
pygeodesy/karney.py,sha256=X2dgUXyJ8IjyYSd1kxW6XB6szG7l85YTcDcjO1_wdfg,40480
|
|
45
45
|
pygeodesy/ktm.py,sha256=axEWse4f3SAbJz-PHoVBEjIJ7JW45reSJeOsPWKcAM0,27247
|
|
46
|
-
pygeodesy/latlonBase.py,sha256=
|
|
47
|
-
pygeodesy/lazily.py,sha256=
|
|
46
|
+
pygeodesy/latlonBase.py,sha256=c5EkQshey_Wvaxz_7f5cO7JJcrWxPFgbuPtLrnnxq_E,75653
|
|
47
|
+
pygeodesy/lazily.py,sha256=lrOtlNNM_ujQEPKIJd3M0pK9ck3j0obKvLYeI2ZV440,47004
|
|
48
48
|
pygeodesy/lcc.py,sha256=htSplUo-1vXpMKINc2RUKvrMeltUI7RZrfXCFJJIrbI,25671
|
|
49
49
|
pygeodesy/ltp.py,sha256=GbalGvmsaxAiwPhzrXcOA-JUmKwTCnYwyA3oFaIJgac,50576
|
|
50
|
-
pygeodesy/ltpTuples.py,sha256=
|
|
50
|
+
pygeodesy/ltpTuples.py,sha256=EFQOY3Vt76BjVRoPuxn7RheBWhRWzKofiGm43Pnvm2I,58999
|
|
51
51
|
pygeodesy/mgrs.py,sha256=jvoyB3_U_EpP4HBoDzTt6V-MoDYC32nOf077w-5txsQ,29819
|
|
52
|
-
pygeodesy/named.py,sha256=
|
|
52
|
+
pygeodesy/named.py,sha256=n8Ly9WZXkgKp9-RUsbzbzBpuWL4D1cIZ-YWgBootkkE,58510
|
|
53
53
|
pygeodesy/namedTuples.py,sha256=dBM93PadrJHkdqe3yinW_Pc7M_5ACYeU6rat5Dwp3Mk,30622
|
|
54
54
|
pygeodesy/nvectorBase.py,sha256=DF2qWGbcWfqjw9a11BTesLDDYd5bWKQlplOwSntlBJo,29969
|
|
55
55
|
pygeodesy/osgr.py,sha256=1TMaToE-7uoVEqHS482pTilDpPWKSj9bgAOVhkx5R_E,30777
|
|
@@ -67,7 +67,7 @@ pygeodesy/triaxials.py,sha256=GMaap3es1szw052XmJulOAJQ0ibl36NVYKSQyxG_Fwk,63952
|
|
|
67
67
|
pygeodesy/units.py,sha256=Nme99EnQkA831DV4zHJbtJB5naqbnCc097I0xSglEFM,35452
|
|
68
68
|
pygeodesy/unitsBase.py,sha256=uiPDOpLdFou3HG2VqlcX5trpvfelNvOdMP8cy9432IE,14060
|
|
69
69
|
pygeodesy/ups.py,sha256=GzhE5nMD_flcPsMRAg-3GxlyOp6LNpzPRkXMc3KQC7o,23349
|
|
70
|
-
pygeodesy/utily.py,sha256=
|
|
70
|
+
pygeodesy/utily.py,sha256=L8WQOvbcUJDwz3c_YX93oBGVSypKSbNbqjOMtwvFwmU,40017
|
|
71
71
|
pygeodesy/utm.py,sha256=kcXliftP9q0nTxviIOixVyvResK2Jydj-G52CXJiSuQ,31123
|
|
72
72
|
pygeodesy/utmups.py,sha256=mjdweGi9XaBw9u8nnbjsobd9-JUA-2hydMbe2eNBD7s,13196
|
|
73
73
|
pygeodesy/utmupsBase.py,sha256=MPUm9VYLiHjkvHswAH9v32_IhbPVbhTKqELMP-q1mJ0,18730
|
|
@@ -87,12 +87,12 @@ pygeodesy/auxilats/auxDLat.py,sha256=GnnvcKZY1jG4SWjYOlDqhGemooQmxDXX-jGr5yg89NM
|
|
|
87
87
|
pygeodesy/auxilats/auxDST.py,sha256=3maal46InF3sRgbh-iQrTm4L11qzfe4gr_S8rh1-faU,10468
|
|
88
88
|
pygeodesy/auxilats/auxLat.py,sha256=diAy7DeL5NTvX1t8UWPWTjjQ_JV1F3F9iGj_GotcoUQ,31908
|
|
89
89
|
pygeodesy/auxilats/auxily.py,sha256=yNdN2rmISVv21gjubDBKBj6iC6MX4uUHUeZwtYsCA1c,7882
|
|
90
|
-
pygeodesy/deprecated/__init__.py,sha256=
|
|
90
|
+
pygeodesy/deprecated/__init__.py,sha256=ndsBPtmorXG2F4nMuC-wKvR9zIu8GI2WWU3-lkMsTsQ,2815
|
|
91
91
|
pygeodesy/deprecated/bases.py,sha256=ykcmjlPG58xY6sS3M_sLr9pfxrSPuw4oqXvNi811Sog,1655
|
|
92
|
-
pygeodesy/deprecated/classes.py,sha256=
|
|
92
|
+
pygeodesy/deprecated/classes.py,sha256=4IHdSkJrexTK5cI96d94VAFOxAZKx1kwYJLcgAq_erA,16388
|
|
93
93
|
pygeodesy/deprecated/consterns.py,sha256=dQGhrSQN-JUHjQDLkLwv_RcfFIDwwu0d-P-wai7sR2g,1908
|
|
94
|
-
pygeodesy/deprecated/datum.py,sha256=
|
|
95
|
-
pygeodesy/deprecated/functions.py,sha256=
|
|
94
|
+
pygeodesy/deprecated/datum.py,sha256=aeY-POZBZrKKiTnrhqOImV5AfiXu2-9Vz8xu_d4ze2g,1910
|
|
95
|
+
pygeodesy/deprecated/functions.py,sha256=mpgYzx_ynbIrfy9WBDfjhNtI-sRx7nKwucyGaxqE10k,15792
|
|
96
96
|
pygeodesy/deprecated/nvector.py,sha256=rttz-znpX2Tm1ttoJt8_E8V_9n_ZciKi_CvvbwFmZQM,2117
|
|
97
97
|
pygeodesy/deprecated/rhumbBase.py,sha256=ptcQnDYAaXZqlVtevRnU5m8xsviqLYzPt6wEfXa-LEE,1375
|
|
98
98
|
pygeodesy/deprecated/rhumbaux.py,sha256=x3d5BsrVRKkNeGxHjVbcuQ74zy5lvJsgvpIdPEOOnQ0,1428
|
|
@@ -101,8 +101,8 @@ pygeodesy/deprecated/rhumbx.py,sha256=9GTE8CbsD_vRiAnR13gyquPHRpyiHOhPvCUzs5hfWx
|
|
|
101
101
|
pygeodesy/geodesicx/_C4_24.py,sha256=3OkzOxf0DdO1QL4N9CVYjpOgFCm8FcYjCyvcTLpL2wc,90707
|
|
102
102
|
pygeodesy/geodesicx/_C4_27.py,sha256=grqtju94Nu9V_eQPqe_7aRbLCYflxRuK127pPOPwuDA,134215
|
|
103
103
|
pygeodesy/geodesicx/_C4_30.py,sha256=I4ZuTy64yOq1IVgRtc_kqOL0HnKzXeTea7kTFSolcJs,201921
|
|
104
|
-
pygeodesy/geodesicx/__init__.py,sha256=
|
|
105
|
-
pygeodesy/geodesicx/__main__.py,sha256=
|
|
104
|
+
pygeodesy/geodesicx/__init__.py,sha256=dGVtLErbUtxd2Xt1M_e4wKf6rJoNMWwQmYEN-FZEzUY,2478
|
|
105
|
+
pygeodesy/geodesicx/__main__.py,sha256=x-9DiCBXFX7YZ0Ary1A4gIqV2LCqWF-HbqzsJzv2Ye0,4141
|
|
106
106
|
pygeodesy/geodesicx/gx.py,sha256=hviRcMq3IUh3sYIdV_zpuLEMhZL7kiALUgv0pl4ObL4,60641
|
|
107
107
|
pygeodesy/geodesicx/gxarea.py,sha256=ZnXURCXVdZVir34yNA7gNJdWhDrZ4tzlGKm3Wf4Z3b0,19454
|
|
108
108
|
pygeodesy/geodesicx/gxbases.py,sha256=EF9IL_oQBSlF70_ROag-DRBoU-ASWKlX-l-wfrUEQYs,6130
|
|
@@ -112,7 +112,7 @@ pygeodesy/rhumb/aux_.py,sha256=636KtNGMCLd0xbqyST-Xwv4dG4npekQDVoHMbcP3EUo,16048
|
|
|
112
112
|
pygeodesy/rhumb/bases.py,sha256=UUzUVaDbZF5WgeHdTkQKUg8NQAwe6tGqIrqyxCraMz8,54162
|
|
113
113
|
pygeodesy/rhumb/ekx.py,sha256=QWU5muyirMsjbm-lGmgxuO_6snaurOQ-dcF6GrdmffU,24055
|
|
114
114
|
pygeodesy/rhumb/solve.py,sha256=PwMWh-TGLj4Pr1g5kIjcK-PfPN-1p26B7QGRbY27_ag,23943
|
|
115
|
-
PyGeodesy-
|
|
116
|
-
PyGeodesy-
|
|
117
|
-
PyGeodesy-
|
|
118
|
-
PyGeodesy-
|
|
115
|
+
PyGeodesy-25.1.5.dist-info/METADATA,sha256=UIK1rcjrUK20UCRnOXmJ-KFxBL7ImBlDjwEd8g0nlMM,19900
|
|
116
|
+
PyGeodesy-25.1.5.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
|
|
117
|
+
PyGeodesy-25.1.5.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
|
|
118
|
+
PyGeodesy-25.1.5.dist-info/RECORD,,
|
pygeodesy/__init__.py
CHANGED
|
@@ -7,9 +7,9 @@ methods for geodetic (lat-/longitude), geocentric (U{ECEF<https://WikiPedia.org/
|
|
|
7
7
|
cartesian) and certain U{triaxial ellipsoidal<https://GeographicLib.SourceForge.io/1.44/triaxial.html>}
|
|
8
8
|
coordinates.
|
|
9
9
|
|
|
10
|
-
Transcoded from U{JavaScript originals<https://GitHub.com/ChrisVeness/geodesy>} by I{Chris Veness (C)
|
|
11
|
-
and from several U{C++ classes<https://GeographicLib.SourceForge.io/C++/doc/annotated.html>} by I{Charles
|
|
12
|
-
Karney (C) 2008-2024} and published under the same U{MIT License<https://OpenSource.org/licenses/MIT>}**.
|
|
10
|
+
Transcoded partially from U{JavaScript originals<https://GitHub.com/ChrisVeness/geodesy>} by I{Chris Veness (C)
|
|
11
|
+
2005-2024} and from several U{C++ classes<https://GeographicLib.SourceForge.io/C++/doc/annotated.html>} by I{Charles
|
|
12
|
+
F. F. Karney (C) 2008-2024} and published under the same U{MIT License<https://OpenSource.org/licenses/MIT>}**.
|
|
13
13
|
|
|
14
14
|
There are four modules for ellipsoidal earth models, C{ellipsoidalExact}, C{-Karney}, C{-Vincenty} and C{-Nvector}
|
|
15
15
|
and two for spherical ones, C{sphericalTrigonometry} and C{-Nvector}. Each module provides a geodetic B{C{LatLon}}
|
|
@@ -72,7 +72,7 @@ PyPI.org/project/PyGeodesy/#files>}, download the file from U{GitHub/dist<https:
|
|
|
72
72
|
PyGeodesy/tree/master/dist>}. Install that with C{python[3] -m pip install <path-to-downloaded-wheel>}
|
|
73
73
|
and verify with C{python[3] -m pygeodesy}.
|
|
74
74
|
|
|
75
|
-
Alternatively, download C{PyGeodesy-yy.m.d.
|
|
75
|
+
Alternatively, download C{PyGeodesy-yy.m.d.tar.gz} from U{PyPI<https://PyPI.org/project/PyGeodesy>}
|
|
76
76
|
or U{GitHub<https://GitHub.com/mrJean1/PyGeodesy>}, C{unzip} the downloaded file, C{cd} to
|
|
77
77
|
directory C{Pygeodesy-yy.m.d} and type C{python[3] setup.py install}.
|
|
78
78
|
|
|
@@ -122,7 +122,7 @@ C{epydoc --html --no-private --no-source --name=PyGeodesy --url=... -v pygeodesy
|
|
|
122
122
|
Tests
|
|
123
123
|
=====
|
|
124
124
|
|
|
125
|
-
The tests ran with Python 3.13.
|
|
125
|
+
The tests ran with Python 3.13.1 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0),
|
|
126
126
|
Python 3.12.7 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0,
|
|
127
127
|
U{numpy<https://PyPI.org/project/numpy>} 2.1.0, U{scipy<https://PyPI.org/project/scipy>} 1.14.1,
|
|
128
128
|
U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3,
|
|
@@ -146,24 +146,24 @@ env variable C{PYGEODESY_WARNINGS=on} for all Python versions. The results of t
|
|
|
146
146
|
the distribution files.
|
|
147
147
|
|
|
148
148
|
Test coverage has been measured with U{coverage<https://PyPI.org/project/coverage>} 7.6.1 using Python
|
|
149
|
-
3.13.
|
|
149
|
+
3.13.1, 3.12.7, 3.11.5 and 3.10.8. The complete coverage report in HTML and a PDF summary are included in
|
|
150
150
|
the distribution files.
|
|
151
151
|
|
|
152
|
-
Python 3.13.
|
|
152
|
+
Python 3.13.1, 3.12.7, 3.11.5 and 3.10.8 run on Apple M1 Silicon (C{arm64}), I{natively}. Python 2.7.18 runs
|
|
153
153
|
on Intel (C{x86_64}) or Intel I{emulation} ("C{arm64_x86_64}", see function L{machine<pygeodesy.machine>}).
|
|
154
154
|
|
|
155
|
-
The tests also ran with Python 3.13.
|
|
155
|
+
The tests also ran with Python 3.13.1 (and U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on
|
|
156
156
|
U{Debian 12<https://Cirrus-CI.com/github/mrJean1/PyGeodesy/master>} in 64-bit only, with Python 3.12.5 (and
|
|
157
|
-
U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on U{Windows
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
157
|
+
U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on U{Windows 2019Server
|
|
158
|
+
<https://CI.AppVeyor.com/project/mrJean1/pygeodesy>} in 64-bit only and with Python 2.7.18 (and U{geographiclib
|
|
159
|
+
<https://PyPI.org/project/geographiclib>} 1.52) on U{Windows 10<https://CI.AppVeyor.com/project/mrJean1/pygeodesy>}
|
|
160
|
+
in 64- and 32-bit.
|
|
161
161
|
|
|
162
162
|
A single-File and single-Directory application with C{pygeodesy} has been bundled using U{PyInstaller
|
|
163
163
|
<https://PyPI.org/project/pyinstaller>} 3.4 and 64-bit Python 3.7.3 on macOS 10.13.6 High Sierra.
|
|
164
164
|
|
|
165
|
-
Previously, the tests were run with Python 3.12.0-6, 3.11.2-4, 3.10.1-7, 3.9.6, 3.9.1, 3.8.7, 3.7.1, 2.7.15,
|
|
166
|
-
<https://PyPy.org>} 7.3.12 (Python 3.10.12), 7.3.1 (Python 3.6.9) and U{PyPy<https://PyPy.org>} 7.1.1 (Python
|
|
165
|
+
Previously, the tests were run with Python 3.13.0, 3.12.0-6, 3.11.2-4, 3.10.1-7, 3.9.6, 3.9.1, 3.8.7, 3.7.1, 2.7.15,
|
|
166
|
+
U{PyPy<https://PyPy.org>} 7.3.12 (Python 3.10.12), 7.3.1 (Python 3.6.9) and U{PyPy<https://PyPy.org>} 7.1.1 (Python
|
|
167
167
|
2.7.13) (and U{geographiclib <https://PyPI.org/project/geographiclib>} 1.52, U{numpy<https://PyPI.org/project/numpy>}
|
|
168
168
|
1.16.3, 1.16.4, 1.16.6, 1.19.0, 1.19.4, 1.19.5 or 1.22.4 and U{scipy<https://PyPI.org/project/scipy>} 1.2.1, 1.4.1,
|
|
169
169
|
1.5.2 or 1.8.1) on U{Ubuntu 16.04<https://Travis-CI.com/mrJean1/PyGeodesy>}, with Python 3.10.0-1, 3.9.0-5, 3.8.0-6,
|
|
@@ -566,7 +566,7 @@ if _init__all__ and not _lazy_import2: # import and set __all__
|
|
|
566
566
|
# GilderGeek<https://GitHub.com/mrJean1/PyGeodesy/issues/31>)
|
|
567
567
|
ns = list(lazily._ALL_INIT)
|
|
568
568
|
# XXX ps = () if _isfrozen else set([_pygeodesy_] + __name__.split(_DOT_))
|
|
569
|
-
for mod, attrs in lazily.
|
|
569
|
+
for mod, attrs in lazily._all_enums():
|
|
570
570
|
mod = _headof(_headof(mod))
|
|
571
571
|
if mod not in globalocals:
|
|
572
572
|
t = _DOT_(_pygeodesy_, mod)
|
|
@@ -598,7 +598,7 @@ else:
|
|
|
598
598
|
|
|
599
599
|
from pygeodesy.internals import _version2, _DOT_ # PYCHOK import
|
|
600
600
|
# from pygeodesy.interns import _DOT_ # from .internals
|
|
601
|
-
__version__ = '
|
|
601
|
+
__version__ = '25.01.05'
|
|
602
602
|
# see setup.py for similar logic
|
|
603
603
|
version = _DOT_(*_version2(__version__, n=3))
|
|
604
604
|
|
pygeodesy/basics.py
CHANGED
|
@@ -37,7 +37,7 @@ from math import copysign as _copysign
|
|
|
37
37
|
# import inspect as _inspect # _MODS
|
|
38
38
|
|
|
39
39
|
__all__ = _ALL_LAZY.basics
|
|
40
|
-
__version__ = '24.
|
|
40
|
+
__version__ = '24.12.31'
|
|
41
41
|
|
|
42
42
|
_below_ = 'below'
|
|
43
43
|
_list_tuple_types = (list, tuple)
|
|
@@ -362,25 +362,48 @@ def isint(obj, both=False):
|
|
|
362
362
|
return False
|
|
363
363
|
|
|
364
364
|
|
|
365
|
-
def isiterable(obj):
|
|
365
|
+
def isiterable(obj, strict=False):
|
|
366
366
|
'''Is B{C{obj}}ect C{iterable}?
|
|
367
367
|
|
|
368
368
|
@arg obj: The object (any C{type}).
|
|
369
|
+
@kwarg strict: If C{True}, check class attributes (C{bool}).
|
|
369
370
|
|
|
370
371
|
@return: C{True} if C{iterable}, C{False} otherwise.
|
|
371
372
|
'''
|
|
372
373
|
# <https://PyPI.org/project/isiterable/>
|
|
373
|
-
return hasattr(obj, '__iter__') # map, range, set
|
|
374
|
+
return isiterabletype(obj) if strict else hasattr(obj, '__iter__') # map, range, set
|
|
374
375
|
|
|
375
376
|
|
|
376
|
-
def isiterablen(obj):
|
|
377
|
+
def isiterablen(obj, strict=False):
|
|
377
378
|
'''Is B{C{obj}}ect C{iterable} and has C{len}gth?
|
|
378
379
|
|
|
379
380
|
@arg obj: The object (any C{type}).
|
|
381
|
+
@kwarg strict: If C{True}, check class attributes (C{bool}).
|
|
380
382
|
|
|
381
383
|
@return: C{True} if C{iterable} with C{len}gth, C{False} otherwise.
|
|
382
384
|
'''
|
|
383
|
-
|
|
385
|
+
_has = isiterabletype if strict else hasattr
|
|
386
|
+
return _has(obj, '__len__') and _has(obj, '__getitem__')
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
def isiterabletype(obj, method='__iter__'):
|
|
390
|
+
'''Is B{C{obj}}ect an instance of an C{iterable} class or type?
|
|
391
|
+
|
|
392
|
+
@arg obj: The object (any C{type}).
|
|
393
|
+
@kwarg method: The name of the required method (C{str}).
|
|
394
|
+
|
|
395
|
+
@return: The C{base-class} if C{iterable}, C{None} otherwise.
|
|
396
|
+
'''
|
|
397
|
+
try: # <https://StackOverflow.com/questions/73568964>
|
|
398
|
+
for b in type(obj).__mro__[:-1]: # ignore C{object}
|
|
399
|
+
try:
|
|
400
|
+
if callable(b.__dict__[method]):
|
|
401
|
+
return b
|
|
402
|
+
except (AttributeError, KeyError):
|
|
403
|
+
pass
|
|
404
|
+
except (AttributeError, TypeError):
|
|
405
|
+
pass
|
|
406
|
+
return None
|
|
384
407
|
|
|
385
408
|
|
|
386
409
|
try:
|
|
@@ -558,7 +581,7 @@ def map1(fun1, *xs): # XXX map_
|
|
|
558
581
|
return tuple(map(fun1, xs))
|
|
559
582
|
|
|
560
583
|
|
|
561
|
-
def map2(fun, *xs):
|
|
584
|
+
def map2(fun, *xs, **strict):
|
|
562
585
|
'''Like Python's B{C{map}} but returning a C{tuple} of results.
|
|
563
586
|
|
|
564
587
|
Unlike Python 2's built-in L{map}, Python 3+ L{map} returns a
|
|
@@ -568,10 +591,39 @@ def map2(fun, *xs):
|
|
|
568
591
|
|
|
569
592
|
@arg fun: Function (C{callable}).
|
|
570
593
|
@arg xs: Arguments (C{all positional}).
|
|
594
|
+
@kwarg strict: See U{Python 3.14+ map<https://docs.Python.org/
|
|
595
|
+
3.14/library/functions.html#map>} (C{bool}).
|
|
571
596
|
|
|
572
597
|
@return: Function results (C{tuple}).
|
|
573
598
|
'''
|
|
574
|
-
return tuple(map(fun, *xs))
|
|
599
|
+
return tuple(map(fun, *xs, **strict) if strict else map(fun, *xs))
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
def max2(*xs):
|
|
603
|
+
'''Return 2-tuple C{(max(xs), xs.index(max(xs)))}.
|
|
604
|
+
'''
|
|
605
|
+
return _max2min2(xs, max, max2)
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
def _max2min2(xs, _m, _m2):
|
|
609
|
+
'''(INTERNAL) Helper for C{max2} and C{min2}.
|
|
610
|
+
'''
|
|
611
|
+
if len(xs) == 1:
|
|
612
|
+
x = xs[0]
|
|
613
|
+
if isiterable(x) or isiterablen(x):
|
|
614
|
+
x, i = _m2(*x)
|
|
615
|
+
else:
|
|
616
|
+
i = 0
|
|
617
|
+
else:
|
|
618
|
+
x = _m(xs) # max or min
|
|
619
|
+
i = xs.index(x)
|
|
620
|
+
return x, i
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
def min2(*xs):
|
|
624
|
+
'''Return 2-tuple C{(min(xs), xs.index(min(xs)))}.
|
|
625
|
+
'''
|
|
626
|
+
return _max2min2(xs, min, min2)
|
|
575
627
|
|
|
576
628
|
|
|
577
629
|
def neg(x, neg0=None):
|
pygeodesy/constants.py
CHANGED
|
@@ -26,7 +26,7 @@ except ImportError: # Python 2-
|
|
|
26
26
|
_inf, _nan = float(_INF_), float(_NAN_)
|
|
27
27
|
|
|
28
28
|
__all__ = _ALL_LAZY.constants
|
|
29
|
-
__version__ = '24.
|
|
29
|
+
__version__ = '24.12.22'
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
def _copysign_0_0(y):
|
|
@@ -182,6 +182,7 @@ _9_0 = _float( 9) # PYCHOK expected
|
|
|
182
182
|
_10_0 = _float( 10) # PYCHOK expected
|
|
183
183
|
_16_0 = _float( 16) # PYCHOK expected
|
|
184
184
|
_32_0 = _float( 32) # PYCHOK expected
|
|
185
|
+
_45_0 = _float( 45) # PYCHOK expected
|
|
185
186
|
_60_0 = _float( 60) # PYCHOK expected
|
|
186
187
|
_64_0 = _float( 64) # PYCHOK expected
|
|
187
188
|
_90_0 = _float( 90) # PYCHOK expected
|
|
@@ -189,7 +190,6 @@ _100_0 = _float(_100_0) # PYCHOK expected
|
|
|
189
190
|
_180_0 = _float( 180) # PYCHOK expected
|
|
190
191
|
_270_0 = _float( 270) # PYCHOK expected
|
|
191
192
|
_360_0 = _float( 360) # PYCHOK expected
|
|
192
|
-
_400_0 = _float( 400) # PYCHOK expected
|
|
193
193
|
_720_0 = _float( 720) # PYCHOK expected
|
|
194
194
|
_1000_0 = _float(1000) # PYCHOK expected
|
|
195
195
|
_3600_0 = _float(3600) # PYCHOK expected
|
pygeodesy/deprecated/__init__.py
CHANGED
|
@@ -27,7 +27,7 @@ __all__ = (_ALL_DEPRECATED.deprecated_bases +
|
|
|
27
27
|
_ALL_DEPRECATED.deprecated_classes +
|
|
28
28
|
_ALL_DEPRECATED.deprecated_consterns +
|
|
29
29
|
_ALL_DEPRECATED.deprecated_functions)
|
|
30
|
-
__version__ = '24.
|
|
30
|
+
__version__ = '24.12.31'
|
|
31
31
|
|
|
32
32
|
if _unLazy0:
|
|
33
33
|
from pygeodesy.deprecated import bases, datum, nvector, rhumbBase, \
|
pygeodesy/deprecated/classes.py
CHANGED
|
@@ -22,7 +22,7 @@ from pygeodesy.trf import TRFXform7Tuple as _TRFXform7Tuple
|
|
|
22
22
|
from pygeodesy.units import Bearing, Int, Lamd, Lat, Lon, Meter, Phid
|
|
23
23
|
|
|
24
24
|
__all__ = _ALL_DEPRECATED.deprecated_classes
|
|
25
|
-
__version__ = '24.
|
|
25
|
+
__version__ = '24.12.31'
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class _Deprecated_NamedTuple(_NamedTuple):
|
|
@@ -111,6 +111,62 @@ def Fn_rt(root, *xs, **name_RESIDUAL_raiser): # PYCHOK no cover
|
|
|
111
111
|
Froot.__init__(self, root, *xs, **name_RESIDUAL_raiser)
|
|
112
112
|
|
|
113
113
|
|
|
114
|
+
def FrechetCosineAndoyerLambert(point1s, **kwds): # PYCHOK no cover
|
|
115
|
+
'''DEPRECATED on 2024.12.31, use class L{FrechetCosineLaw} with C{B{corr}=1}.'''
|
|
116
|
+
FrechetCosineLaw = _MODS.frechet.FrechetCosineLaw
|
|
117
|
+
|
|
118
|
+
class FrechetCosineAndoyerLambert(FrechetCosineLaw):
|
|
119
|
+
'''DEPRECATED on 2024.12.31, use class L{FrechetCosineLaw} with C{B{corr}=1}.
|
|
120
|
+
'''
|
|
121
|
+
def __init__(self, point1s, **seed_name__radius_wrap):
|
|
122
|
+
deprecated_class(self.__class__)
|
|
123
|
+
FrechetCosineLaw.__init__(self, point1s, corr=1, **seed_name__radius_wrap)
|
|
124
|
+
|
|
125
|
+
return FrechetCosineAndoyerLambert(point1s, **kwds)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def FrechetCosineForsytheAndoyerLambert(point1s, **kwds): # PYCHOK no cover
|
|
129
|
+
'''DEPRECATED on 2024.12.31, use class L{FrechetCosineLaw} with C{B{corr}=2}.'''
|
|
130
|
+
FrechetCosineLaw = _MODS.frechet.FrechetCosineLaw
|
|
131
|
+
|
|
132
|
+
class FrechetCosineForsytheAndoyerLambert(FrechetCosineLaw):
|
|
133
|
+
'''DEPRECATED on 2024.12.31, use class L{FrechetCosineLaw} with C{B{corr}=w}.
|
|
134
|
+
'''
|
|
135
|
+
def __init__(self, point1s, **seed_name__radius_wrap):
|
|
136
|
+
deprecated_class(self.__class__)
|
|
137
|
+
FrechetCosineLaw.__init__(self, point1s, corr=2, **seed_name__radius_wrap)
|
|
138
|
+
|
|
139
|
+
return FrechetCosineForsytheAndoyerLambert(point1s, **kwds)
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def HausdorffCosineAndoyerLambert(point1s, **kwds): # PYCHOK no cover
|
|
143
|
+
'''DEPRECATED on 2024.12.31, use class L{HausdorffCosineLaw} with C{B{corr}=1}.'''
|
|
144
|
+
HausdorffCosineLaw = _MODS.hausdorff.HausdorffCosineLaw
|
|
145
|
+
|
|
146
|
+
class HausdorffCosineAndoyerLambert(HausdorffCosineLaw):
|
|
147
|
+
'''DEPRECATED on 2024.12.31, use class L{HausdorffCosineLaw} with C{B{corr}=1}.
|
|
148
|
+
'''
|
|
149
|
+
def __init__(self, point1s, **seed_name__radius_wrap):
|
|
150
|
+
deprecated_class(self.__class__)
|
|
151
|
+
HausdorffCosineLaw.__init__(self, point1s, corr=1, **seed_name__radius_wrap)
|
|
152
|
+
|
|
153
|
+
return HausdorffCosineAndoyerLambert(point1s, **kwds)
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def HausdorffCosineForsytheAndoyerLambert(point1s, **kwds): # PYCHOK no cover
|
|
157
|
+
'''DEPRECATED on 2024.12.31, use class L{HausdorffCosineLaw} with C{B{corr}=2}.'''
|
|
158
|
+
HausdorffCosineLaw = _MODS.hausdorff.HausdorffCosineLaw
|
|
159
|
+
|
|
160
|
+
class HausdorffCosineForsytheAndoyerLambert(HausdorffCosineLaw):
|
|
161
|
+
'''DEPRECATED on 2024.12.31, use class L{HausdorffCosineLaw} with C{B{corr}=2}
|
|
162
|
+
'''
|
|
163
|
+
def __init__(self, point1s, **seed_name__radius_wrap):
|
|
164
|
+
deprecated_class(self.__class__)
|
|
165
|
+
HausdorffCosineLaw.__init__(self, point1s, corr=2, **seed_name__radius_wrap)
|
|
166
|
+
|
|
167
|
+
return HausdorffCosineForsytheAndoyerLambert(point1s, **kwds)
|
|
168
|
+
|
|
169
|
+
|
|
114
170
|
def HeightIDW(knots, **kwds): # PYCHOK no cover
|
|
115
171
|
'''DEPRECATED, use class L{HeightIDWeuclidean}.'''
|
|
116
172
|
HeightIDWeuclidean = _MODS.heights.HeightIDWeuclidean
|
|
@@ -151,6 +207,34 @@ def HeightIDW3(knots, **kwds): # PYCHOK no cover
|
|
|
151
207
|
return HeightIDW3(knots, **kwds)
|
|
152
208
|
|
|
153
209
|
|
|
210
|
+
def HeightIDWcosineAndoyerLambert(knots, **kwds): # PYCHOK no cover
|
|
211
|
+
'''DEPRECATED on 2024.12.31, use class L{HeightIDWcosineLaw} with C{B{corr}=1}.'''
|
|
212
|
+
HeightIDWcosineLaw = _MODS.heights.HeightIDWcosineLaw
|
|
213
|
+
|
|
214
|
+
class HeightIDWcosineAndoyerLambert(HeightIDWcosineLaw):
|
|
215
|
+
'''DEPRECATED on 2024.12.31, use class L{HeightIDWcosineLaw} with C{B{corr}=1}.
|
|
216
|
+
'''
|
|
217
|
+
def __init__(self, knots, **beta_name__datum_wrap):
|
|
218
|
+
deprecated_class(self.__class__)
|
|
219
|
+
HeightIDWcosineLaw.__init__(self, knots, corr=1, **beta_name__datum_wrap)
|
|
220
|
+
|
|
221
|
+
return HeightIDWcosineAndoyerLambert(knots, **kwds)
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
def HeightIDWcosineForsytheAndoyerLambert(knots, **kwds): # PYCHOK no cover
|
|
225
|
+
'''DEPRECATED on 2024.12.31, use class L{HeightIDWcosineLaw} with C{B{corr}=2}.'''
|
|
226
|
+
HeightIDWcosineLaw = _MODS.heights.HeightIDWcosineLaw
|
|
227
|
+
|
|
228
|
+
class HeightIDWcosineForsytheAndoyerLambert(HeightIDWcosineLaw):
|
|
229
|
+
'''DEPRECATED on 2024.12.31, use class L{HeightIDWcosineLaw} with C{B{corr}=2}.
|
|
230
|
+
'''
|
|
231
|
+
def __init__(self, knots, **beta_name__datum_wrap):
|
|
232
|
+
deprecated_class(self.__class__)
|
|
233
|
+
HeightIDWcosineLaw.__init__(self, knots, corr=2, **beta_name__datum_wrap)
|
|
234
|
+
|
|
235
|
+
return HeightIDWcosineForsytheAndoyerLambert(knots, **kwds)
|
|
236
|
+
|
|
237
|
+
|
|
154
238
|
class Lam_(Lamd):
|
|
155
239
|
'''DEPRECATED on 2024.06.15, use class L{Lamd}.'''
|
|
156
240
|
def __init__(self, *args, **kwds): # PYCHOK no cover
|
pygeodesy/deprecated/datum.py
CHANGED
|
@@ -11,11 +11,11 @@ from pygeodesy.ellipsoids import Ellipsoid, Ellipsoids, Curvature2Tuple
|
|
|
11
11
|
from pygeodesy.lazily import _ALL_DEPRECATED, _ALL_OTHER
|
|
12
12
|
|
|
13
13
|
__all__ = _ALL_DEPRECATED.deprecated_datum
|
|
14
|
-
__version__ = '24.
|
|
14
|
+
__version__ = '24.12.31'
|
|
15
15
|
|
|
16
|
-
assert _ALL_OTHER(Curvature2Tuple, Datum, Ellipsoid, Transform) +
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
assert _ALL_OTHER(Curvature2Tuple, Datum, Ellipsoid, Transform) + tuple(_.name for _ in
|
|
17
|
+
(Datums, Ellipsoids, Transforms,
|
|
18
|
+
R_FM, R_KM, R_M, R_MA, R_MB, R_NM, R_SM, R_VM)) == __all__
|
|
19
19
|
|
|
20
20
|
# **) MIT License
|
|
21
21
|
#
|
|
@@ -14,7 +14,7 @@ from pygeodesy.props import deprecated_function
|
|
|
14
14
|
from pygeodesy.units import _1mm, Number_, Scalar_
|
|
15
15
|
|
|
16
16
|
__all__ = _ALL_DEPRECATED.deprecated_functions
|
|
17
|
-
__version__ = '24.
|
|
17
|
+
__version__ = '24.12.31'
|
|
18
18
|
|
|
19
19
|
_WGS84 = _UTM = object()
|
|
20
20
|
|
|
@@ -84,6 +84,30 @@ def copysign(x, y): # PYCHOK no cover
|
|
|
84
84
|
return _MODS.basics.copysign0(x, y)
|
|
85
85
|
|
|
86
86
|
|
|
87
|
+
@deprecated_function
|
|
88
|
+
def cosineAndoyerLambert(lat1, lon1, lat2, lon2, **datum_wrap):
|
|
89
|
+
'''DEPRECATED on 2024.12.31, use function L{pygeodesy.cosineLaw} with C{B{corr}=1}.'''
|
|
90
|
+
return _MODS.formy.cosineLaw(lat1, lon1, lat2, lon2, corr=1, **datum_wrap)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
@deprecated_function
|
|
94
|
+
def cosineAndoyerLambert_(phi2, phi1, lam21, **datum):
|
|
95
|
+
'''DEPRECATED on 2024.12.31, use function L{pygeodesy.cosineLaw_} with C{B{corr}=1}.'''
|
|
96
|
+
return _MODS.formy.cosineLaw_(phi2, phi1, lam21, corr=1, **datum)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
@deprecated_function
|
|
100
|
+
def cosineForsytheAndoyerLambert(lat1, lon1, lat2, lon2, **datum_wrap):
|
|
101
|
+
'''DEPRECATED on 2024.12.31, use function L{pygeodesy.cosineLaw} with C{B{corr}=2}.'''
|
|
102
|
+
return _MODS.formy.cosineLaw(lat1, lon1, lat2, lon2, corr=2, **datum_wrap)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
@deprecated_function
|
|
106
|
+
def cosineForsytheAndoyerLambert_(phi2, phi1, lam21, **datum):
|
|
107
|
+
'''DEPRECATED on 2024.12.31, use function L{pygeodesy.cosineLaw_} with C{B{corr}=2}.'''
|
|
108
|
+
return _MODS.formy.cosineLaw_(phi2, phi1, lam21, corr=2, **datum)
|
|
109
|
+
|
|
110
|
+
|
|
87
111
|
@deprecated_function
|
|
88
112
|
def decodeEPSG2(arg): # PYCHOK no cover
|
|
89
113
|
'''DEPRECATED, use function L{epsg.decode2}.
|