pygeodesy 24.7.7__py2.py3-none-any.whl → 24.7.24__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.7.7.dist-info → PyGeodesy-24.7.24.dist-info}/METADATA +25 -23
- {PyGeodesy-24.7.7.dist-info → PyGeodesy-24.7.24.dist-info}/RECORD +29 -29
- pygeodesy/__init__.py +47 -47
- pygeodesy/auxilats/auxAngle.py +5 -5
- pygeodesy/auxilats/auxDST.py +9 -10
- pygeodesy/auxilats/auxily.py +2 -2
- pygeodesy/cartesianBase.py +5 -6
- pygeodesy/ecef.py +7 -9
- pygeodesy/ellipsoids.py +12 -12
- pygeodesy/fsums.py +12 -6
- pygeodesy/geodesici.py +232 -131
- pygeodesy/geodesicw.py +70 -45
- pygeodesy/geodesicx/gx.py +8 -8
- pygeodesy/geodesicx/gxline.py +5 -5
- pygeodesy/geodsolve.py +12 -3
- pygeodesy/geoids.py +8 -10
- pygeodesy/karney.py +84 -78
- pygeodesy/ktm.py +2 -5
- pygeodesy/latlonBase.py +4 -5
- pygeodesy/lazily.py +5 -4
- pygeodesy/ltp.py +6 -6
- pygeodesy/named.py +3 -3
- pygeodesy/nvectorBase.py +4 -5
- pygeodesy/props.py +75 -17
- pygeodesy/rhumb/solve.py +2 -2
- pygeodesy/solveBase.py +26 -12
- pygeodesy/triaxials.py +4 -5
- {PyGeodesy-24.7.7.dist-info → PyGeodesy-24.7.24.dist-info}/WHEEL +0 -0
- {PyGeodesy-24.7.7.dist-info → PyGeodesy-24.7.24.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PyGeodesy
|
|
3
|
-
Version: 24.7.
|
|
3
|
+
Version: 24.7.24
|
|
4
4
|
Summary: Pure Python geodesy tools
|
|
5
5
|
Home-page: https://GitHub.com/mrJean1/PyGeodesy
|
|
6
6
|
Author: Jean M. Brouwers
|
|
@@ -8,7 +8,7 @@ Author-email: mrJean1@Gmail.com
|
|
|
8
8
|
Maintainer: Jean M. Brouwers
|
|
9
9
|
Maintainer-email: mrJean1@Gmail.com
|
|
10
10
|
License: MIT
|
|
11
|
-
Keywords: AER Albers altitude Andoyer annulus antipode area attitude Authalic auxiliary azimuth azimuthal azimuth-elevation-range bearing bank Barsky Barth beta boolean cached Cagnoli cartesian Cassini Cassini-Soldner chord circle-intersections circumcenter circumcircle circumradius clip Cohen Cohen-Sutherland Collins composite conformal conic constants contact-triangle Cook Correia cosines-law coverage curvature cylindrical datum deprecation deficit development discrete distance Douglas earth east-north-up eccentricity ECEF elevation ellipsoid ellipsoidal-latitude-beta ellipsoidal-longitude-omega elliptic ENU EPSG equal-area equidistant equirectangular ETM ETRF Euclidean even-odd-rule ExactTM excess Farrell Farrell-Barth flattening Field-Of-View fmath footprint Forster Forster-Hormann-Popa Forsythe FOV fractional Frechet Fréchet frustum Fsum GARS geocentric GeoConvert GeodesicExact geodesy geodetic GeodSolve GeodTest geographiclib geohash geoid geoidHeight GeoidHeights georef Girard gnomonic gons grades gradians Greiner Greiner-Hormann Hartzell Hausdorff Haversine heading height Heron Hodgman horizon Hormann Hubeny IDW incenter incirle infix_@_operator inradius intermediate interpolate intersect intersection intersection3d intersections Inverse-Distance-Weighting Isometric ITRF Jacobi Jacobi-Conformal Jarque-Bera Jekel Karney Krueger Krüger kurtosis Lambert latitude law-of-cosines least-squares Lesh L_Huilier LHuilier Liang Liang-Barsky linearize Line-Of-Sight LocalCartesian local-tangent-plane local-x-y-z longitude LOS loxodrome lstsq LTP lune LV03 LV95 mean memoize memoized Mercator Meeus MGRS nearest NED normalize Norrdine north-east-down numpy n-vector Nvector oblate omega orthographic orthometric-height OSGB OSGR overlap parallel parallel-of-latitude Parametric path-intersection perimeter Peucker Pierlot pitch plumb Point-Of-View polar Popa POV precision-cubic-root precision-hypotenuse precision-powers precision-running-summation precision-square-root precision-summation prolate Pseudo-Mercator PyGeodesy PyInstaller PyPy radical radii radius Ramer Ramer-Douglas-Peucker Rectifying Reduced resect resection Rey-Jer Reumann Reumann-Witkam rhumb RhumbSolve running-linear-regression running-statistics running-stats running-summation scipy secant semi-perimeter sexagecimal simplify skewness Snellius Snellius-Pothenot Snyder Soddy Soddy-circles Soldner sphere sphere-intersections spherical-deficit spherical-excess spherical-triangle standard-deviation stereographic Sudano surface-area Sutherland Sutherland-Hodgman tangent-circles Terrestrial-Reference-Frame Thomas Tienstra tilt TMcoords TMExact toise transverse TransverseMercatorExact TRF triangle triangulate triaxial triaxial-ellipsoid trigonometry trilaterate trilaterate-2d trilaterate-3d umbilic-point unit unroll UPS UTM UTM/UPS variance velocities Veness Vermeille viewing-frustum Vincenty Visvalingam Visvalingam-Whyatt volume volumetric Web-Mercator Welford WGRS WGS Whyatt Wildberger Witkam winding-number XYZ yaw You
|
|
11
|
+
Keywords: AER Albers altitude Andoyer annulus antipode area attitude Authalic auxiliary azimuth azimuthal azimuth-elevation-range bearing bank Barsky Barth beta boolean cached Cagnoli cartesian Cassini Cassini-Soldner chord circle-intersections circumcenter circumcircle circumradius clip Cohen Cohen-Sutherland Collins composite conformal conic constants contact-triangle Cook Correia cosines-law coverage curvature cylindrical datum deprecation deficit development discrete distance Douglas earth east-north-up eccentricity ECEF elevation ellipsoid ellipsoidal-latitude-beta ellipsoidal-longitude-omega elliptic ENU EPSG equal-area equidistant equirectangular ETM ETRF Euclidean even-odd-rule ExactTM excess Farrell Farrell-Barth flattening Field-Of-View fmath footprint Forster Forster-Hormann-Popa Forsythe FOV fractional Frechet Fréchet frustum Fsum GARS geocentric GeoConvert GeodesicExact geodesy geodetic GeodSolve GeodTest geographiclib geohash geoid geoidHeight GeoidHeights georef Girard gnomonic gons grades gradians Greiner Greiner-Hormann Hartzell Hausdorff Haversine heading height Heron Hodgman horizon Hormann Hubeny IDW incenter incirle infix_@_operator inradius intermediate interpolate intersect intersection intersection3d intersections IntersectTool Inverse-Distance-Weighting Isometric ITRF Jacobi Jacobi-Conformal Jarque-Bera Jekel Karney Krueger Krüger kurtosis Lambert latitude law-of-cosines least-squares Lesh L_Huilier LHuilier Liang Liang-Barsky linearize Line-Of-Sight LocalCartesian local-tangent-plane local-x-y-z longitude LOS loxodrome lstsq LTP lune LV03 LV95 mean memoize memoized Mercator Meeus MGRS nearest NED normalize Norrdine north-east-down numpy n-vector Nvector oblate omega orthographic orthometric-height OSGB OSGR overlap parallel parallel-of-latitude Parametric path-intersection perimeter Peucker Pierlot pitch plumb Point-Of-View polar Popa POV precision-cubic-root precision-hypotenuse precision-powers precision-running-summation precision-square-root precision-summation prolate Pseudo-Mercator PyGeodesy PyInstaller PyPy radical radii radius Ramer Ramer-Douglas-Peucker Rectifying Reduced resect resection Rey-Jer Reumann Reumann-Witkam rhumb RhumbSolve running-linear-regression running-statistics running-stats running-summation scipy secant semi-perimeter sexagecimal simplify skewness Snellius Snellius-Pothenot Snyder Soddy Soddy-circles Soldner sphere sphere-intersections spherical-deficit spherical-excess spherical-triangle standard-deviation stereographic Sudano surface-area Sutherland Sutherland-Hodgman tangent-circles Terrestrial-Reference-Frame Thomas Tienstra tilt TMcoords TMExact toise transverse TransverseMercatorExact TRF triangle triangulate triaxial triaxial-ellipsoid trigonometry trilaterate trilaterate-2d trilaterate-3d umbilic-point unit unroll UPS UTM UTM/UPS variance velocities Veness Vermeille viewing-frustum Vincenty Visvalingam Visvalingam-Whyatt volume volumetric Web-Mercator Welford WGRS WGS Whyatt Wildberger Witkam winding-number XYZ yaw You
|
|
12
12
|
Classifier: Development Status :: 5 - Production/Stable
|
|
13
13
|
Classifier: Environment :: Console
|
|
14
14
|
Classifier: Intended Audience :: Developers
|
|
@@ -41,13 +41,13 @@ classes`_ by *Charles F.F. Karney (C) 2008-2023* and published under the same `M
|
|
|
41
41
|
|
|
42
42
|
There are four modules for ellipsoidal earth models, *ellipsoidalExact*, *-Karney*, *-Vincenty*
|
|
43
43
|
and *-Nvector* and two for spherical ones, *sphericalTrigonometry* and *-Nvector*. Each module
|
|
44
|
-
provides a geodetic LatLon_ and a geocentric Cartesian_ class with methods and functions to
|
|
45
|
-
|
|
46
|
-
points,
|
|
47
|
-
|
|
48
|
-
and unrolling, among other things. For more information and further details see the
|
|
49
|
-
the descriptions of `Latitude/Longitude`_, Vincenty_ and `Vector-based`_ geodesy, the
|
|
50
|
-
`JavaScript source`_ or docs_ and *Karney*\'s Python geographiclib_ and `C++ GeographicLib`_.
|
|
44
|
+
provides a geodetic LatLon_ and a geocentric Cartesian_ class with methods and functions to compute
|
|
45
|
+
distance, surface area, perimeter, forward and reverse azimuth, initial and final bearing, intermediate
|
|
46
|
+
and nearest points, intersections of geodesic, great circle and rhumb lines, circle intersections and
|
|
47
|
+
secants, `3-point resections`_, triangulation, trilateration (by intersection, by overlap and in
|
|
48
|
+
3d), conversions and unrolling, among other things. For more information and further details see the
|
|
49
|
+
documentation_, the descriptions of `Latitude/Longitude`_, Vincenty_ and `Vector-based`_ geodesy, the
|
|
50
|
+
original `JavaScript source`_ or docs_ and *Karney*\'s Python geographiclib_ and `C++ GeographicLib`_.
|
|
51
51
|
|
|
52
52
|
Also included are modules for conversions to and from `Cassini-Soldner`_, ECEF_ (Earth-Centered,
|
|
53
53
|
Earth-Fixed cartesian), UTM_ (Universal Transverse Mercator and Exact_), UPS_ (Universal Polar
|
|
@@ -115,30 +115,30 @@ line: ``epydoc --html --no-private --no-source --name=PyGeodesy --url=... -v pyg
|
|
|
115
115
|
Tests
|
|
116
116
|
=====
|
|
117
117
|
|
|
118
|
-
The tests ran with Python 3.12.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
1.50, numpy_ 1.16.6, scipy_ 1.2.2, GeoConvert_ 2.
|
|
122
|
-
14.5 Sonoma
|
|
118
|
+
The tests ran with Python 3.13.0b4, 3.12.4 (with geographiclib_ 2.0, GeodSolve_ 2.3, IntersectTool_ 2.3
|
|
119
|
+
and RhumbSolve_ 2.3), 3.11.5 (with geographiclib_ 2.0, numpy_ 1.24.2 and scipy_ 1.10.1), Python 3.10.8
|
|
120
|
+
(with geographiclib_ 2.0, numpy_ 1.23.3, scipy_ 1.9.1, GeoConvert_ 2.3, GeodSolve_ 2.3), Python 3.9.6
|
|
121
|
+
and Python 2.7.18 (with geographiclib_ 1.50, numpy_ 1.16.6, scipy_ 1.2.2, GeoConvert_ 2.3, GeodSolve_
|
|
122
|
+
2.3, IntersectTool_ 2.3 and RhumbSolve_ 2.3), all on macOS 14.5 Sonoma in 64-bit.
|
|
123
123
|
|
|
124
124
|
All tests ran with and without ``lazy import`` for Python 3 and with command line option ``-W default``
|
|
125
125
|
and env variable ``PYGEODESY_WARNINGS=on`` for all Python versions. The results of those tests are
|
|
126
126
|
included in the distribution files.
|
|
127
127
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
see function `pygeodesy.machine`_).
|
|
128
|
+
Python 3.13.0b4, 3.12.4, 3.11.5 and 3.10.8 run on Apple M1 Silicon (``arm64``), *natively*. Python 2.7.18
|
|
129
|
+
runs on Intel (``x86_64``) or Intel *emulation* (\"``arm64_x86_64``\", see function `pygeodesy.machine`_).
|
|
131
130
|
|
|
132
|
-
Test coverage has been measured with coverage_ 7.
|
|
131
|
+
Test coverage has been measured with coverage_ 7.6.0 using Python 3.12.4, 3.11.5 and 3.10.8. The complete
|
|
133
132
|
coverage report in HTML and a PDF summary are included in the distribution files.
|
|
134
133
|
|
|
135
|
-
The tests also ran with Python 3.
|
|
136
|
-
Python 3.
|
|
134
|
+
The tests also ran with Python 3.12.4 (and geographiclib_ 2.0) on `Debian 12`_ in 64-bit only and with
|
|
135
|
+
Python 3.12.3 (and geographiclib_ 2.0) on `Windows 2019Server`_ in 64-bit only and with Python 2.7.18
|
|
136
|
+
(and with geographiclib_ 1.52) on `Windows 10`_ in 64- and 32-bit.
|
|
137
137
|
|
|
138
138
|
A single-File and single-Directory application with ``pygeodesy`` has been bundled using PyInstaller_
|
|
139
139
|
3.4 and 64-bit Python 3.7.4 and 3.7.3 on macOS 10.13.6 High Sierra.
|
|
140
140
|
|
|
141
|
-
Previously, the tests were run with Python 3.12.0-
|
|
141
|
+
Previously, the tests were run with Python 3.12.0-3, 3.11.2-4, 3.10.1-7, 3.9.1, 3.8.7, 3.7.1, 2.7.15, PyPy_
|
|
142
142
|
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,
|
|
143
143
|
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)
|
|
144
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,
|
|
@@ -159,7 +159,7 @@ and McCabe_ using Python 2.7.18 and with Flake8_ using Python 3.11.5, both in 64
|
|
|
159
159
|
|
|
160
160
|
For a summary of all *Karney*-based functionality in ``pygeodesy``, see module karney_.
|
|
161
161
|
|
|
162
|
-
*Last updated: July
|
|
162
|
+
*Last updated: July 24, 2024.*
|
|
163
163
|
|
|
164
164
|
License
|
|
165
165
|
=======
|
|
@@ -205,7 +205,7 @@ DEALINGS IN THE SOFTWARE.
|
|
|
205
205
|
.. _checked: https://GitHub.com/ActiveState/code/tree/master/recipes/Python/546532_PyChecker_postprocessor
|
|
206
206
|
.. _Cohen-Sutherland: https://WikiPedia.org/wiki/Cohen-Sutherland_algorithm
|
|
207
207
|
.. _coverage: https://PyPI.org/project/coverage
|
|
208
|
-
.. _Debian
|
|
208
|
+
.. _Debian 12: https://Cirrus-CI.com/github/mrJean1/PyGeodesy/master
|
|
209
209
|
.. _distribution files: https://GitHub.com/mrJean1/PyGeodesy/tree/master/dist
|
|
210
210
|
.. _docs: https://www.Movable-Type.co.UK/scripts/geodesy/docs
|
|
211
211
|
.. _documentation: https://mrJean1.GitHub.io/PyGeodesy
|
|
@@ -231,6 +231,7 @@ DEALINGS IN THE SOFTWARE.
|
|
|
231
231
|
.. _Height: https://mrJean1.GitHub.io/PyGeodesy/docs/pygeodesy.heights-module.html
|
|
232
232
|
.. _Intel-Python: https://software.Intel.com/en-us/distribution-for-python
|
|
233
233
|
.. _interpolate: https://docs.SciPy.org/doc/scipy/reference/interpolate.html
|
|
234
|
+
.. _IntersectTool: https://GeographicLib.SourceForge.io/C++/doc/utilities.html
|
|
234
235
|
.. _JavaScript originals: https://GitHub.com/ChrisVeness/geodesy
|
|
235
236
|
.. _JavaScript source: https://GitHub.com/ChrisVeness/geodesy
|
|
236
237
|
.. _John P. Snyder: https://pubs.er.USGS.gov/djvu/PP/PP_1395.pdf
|
|
@@ -271,3 +272,4 @@ DEALINGS IN THE SOFTWARE.
|
|
|
271
272
|
.. _Visvalingam-Whyatt: https://hydra.Hull.ac.UK/resources/hull:8338
|
|
272
273
|
.. _Web Mercator: https://WikiPedia.org/wiki/Web_Mercator
|
|
273
274
|
.. _Windows 10: https://CI.AppVeyor.com/project/mrJean1/pygeodesy
|
|
275
|
+
.. _Windows 2019Server: https://CI.AppVeyor.com/project/mrJean1/pygeodesy
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
|
|
2
|
-
pygeodesy/__init__.py,sha256=
|
|
2
|
+
pygeodesy/__init__.py,sha256=uYrhqWUaNgzSKAETWoDZc9AqmYmIDtug9wVvfyEH_Aw,42191
|
|
3
3
|
pygeodesy/__main__.py,sha256=VWxepzxGqR5wsHYyIHFSsRMlZ27keX3xyEhBuGDRXxk,4727
|
|
4
4
|
pygeodesy/albers.py,sha256=JXqeWAteV2N601e5R-D7bCsa8qAYv3oWm7M3R4uszXM,31078
|
|
5
5
|
pygeodesy/azimuthal.py,sha256=5tMMKlzKyfGnreOHChrquBi241ZvIOBTUn_pbZCIJWc,50231
|
|
6
6
|
pygeodesy/basics.py,sha256=mSim8pSrRLMFYTnTrJDvkthfrw2MWBmMya3hOHWX4co,29785
|
|
7
7
|
pygeodesy/booleans.py,sha256=5IeA6QWihiPWSv2JnCbMT53ey1WYIU7od5VQ1YUFqX8,73529
|
|
8
|
-
pygeodesy/cartesianBase.py,sha256=
|
|
8
|
+
pygeodesy/cartesianBase.py,sha256=nn2JNYbPJhL0lzkUvDEQDR_omNgmMIYuS1nCwYtlXnQ,46927
|
|
9
9
|
pygeodesy/clipy.py,sha256=3ysIEWQ89HjvLnSlZm0nZAt9EN5AQxIs1sLLM8yF9zM,27675
|
|
10
10
|
pygeodesy/constants.py,sha256=-weWOuHwE-qI6pYRLcTucI0KNcNJm6vPNzxwrJzACKs,19192
|
|
11
11
|
pygeodesy/css.py,sha256=B_EKq757XdQSUy83HAxEf3H5Iyd7mw3DbJB5Wi3obAc,25651
|
|
12
12
|
pygeodesy/datums.py,sha256=-m9-cvUVOaJ92eeFgc3O54lel3WqnVYcS7o6WCXkNyw,34043
|
|
13
13
|
pygeodesy/dms.py,sha256=QxiRtyc8QSiW-egm6Mrcrgmi_deWz3YnYwIm82JS4TU,44443
|
|
14
|
-
pygeodesy/ecef.py,sha256=
|
|
14
|
+
pygeodesy/ecef.py,sha256=_yy_TIUGsXmEZ7aRcmchbJwTp7x__edx6EPiS3Xznes,59587
|
|
15
15
|
pygeodesy/elevations.py,sha256=4FuVcVNb_D09gmcvUlck344N4f7Jms76SIRrdutvKjk,10801
|
|
16
16
|
pygeodesy/ellipsoidalBase.py,sha256=olFcHvMeoW8Z_0T-Bn3XOpGGatoluaOZ50Fzm-ByAVg,55126
|
|
17
17
|
pygeodesy/ellipsoidalBaseDI.py,sha256=OxbSBntV9xiOgsb-0un0cUYIVoPiIiH-lt3baBkbaS8,38400
|
|
@@ -20,7 +20,7 @@ pygeodesy/ellipsoidalGeodSolve.py,sha256=CqdNNqdwuUNIwZvYVMsk3rnW0U3KMgEoSQj_VIc
|
|
|
20
20
|
pygeodesy/ellipsoidalKarney.py,sha256=XIvmSmMt0CGd0LtXxcDHX3KXXR2Mn8cRukefNQErJFU,18720
|
|
21
21
|
pygeodesy/ellipsoidalNvector.py,sha256=BbCWTZr9he3ayC8YEtLRXWVJ-g4HqHBuTVJsM33JKhw,30038
|
|
22
22
|
pygeodesy/ellipsoidalVincenty.py,sha256=gsUFMKgqMZKT02jDm7TEJ_jSHX8d-KJCz91iCfku5kg,25951
|
|
23
|
-
pygeodesy/ellipsoids.py,sha256=
|
|
23
|
+
pygeodesy/ellipsoids.py,sha256=GbLZPLkSYGAE7JlGFhhZ4inhH501yNJ60jpMM_cVoNA,108003
|
|
24
24
|
pygeodesy/elliptic.py,sha256=-80MbZvRPk-TeA_ggkfXhjuPv07MzsB4HxNF7gbdhB4,42501
|
|
25
25
|
pygeodesy/epsg.py,sha256=oWHX_QVChE5roktAyXUmPmX49XHiryYmXTHxQzrAprE,8222
|
|
26
26
|
pygeodesy/errors.py,sha256=-UnQ1GhkiTR6uBd0z0vd_pFEmjWXlOESRDwMdxY_JD0,30605
|
|
@@ -29,41 +29,41 @@ pygeodesy/fmath.py,sha256=EOHD0uZ8VULZtXAk8tVeuPaSTozPDCN8GJcemCo-jqg,33709
|
|
|
29
29
|
pygeodesy/formy.py,sha256=ZpPaQBQvaFiA-UcrgaiiV_iGxlfTqNdlR1Ngx-1oinY,75032
|
|
30
30
|
pygeodesy/frechet.py,sha256=F6TYbOEYSOFcll6nvp4GhqafUWXh1umAKb1QaMYQtuM,34372
|
|
31
31
|
pygeodesy/fstats.py,sha256=4eIhzSCMnn-2nVP3Q-5cCWCI-rvH0CE-zkk9hp3Pvn8,28642
|
|
32
|
-
pygeodesy/fsums.py,sha256=
|
|
32
|
+
pygeodesy/fsums.py,sha256=VbI_1i-0BCeRpPnG58EDPVKossR7JORZzFXEspoaiJU,80839
|
|
33
33
|
pygeodesy/gars.py,sha256=gJKZuGPKw8rlRLx1hywZrpGucpHXLvMe8fr8izgSW2s,11370
|
|
34
|
-
pygeodesy/geodesici.py,sha256=
|
|
35
|
-
pygeodesy/geodesicw.py,sha256=
|
|
36
|
-
pygeodesy/geodsolve.py,sha256=
|
|
34
|
+
pygeodesy/geodesici.py,sha256=U-hxztCvASJTnvDJxMI2jgeZOIwTalX-xFsfJWWG-Wg,75023
|
|
35
|
+
pygeodesy/geodesicw.py,sha256=oEs96Epw839BH3rVpxVdpXuQRBudbOftUsSBUid8fcc,28710
|
|
36
|
+
pygeodesy/geodsolve.py,sha256=M1kU9HOKnvf8agv_V4fN0QcNh40N6dExuCd0pPTKsoM,23540
|
|
37
37
|
pygeodesy/geohash.py,sha256=rOOGOHcTnxIPX2p5ieA1gQ_ZcRlUxjIcroPHa7a85ak,31876
|
|
38
|
-
pygeodesy/geoids.py,sha256=
|
|
38
|
+
pygeodesy/geoids.py,sha256=PVTYfSe67SRZtII9Qi1FXTDtRPoabwEtRbFXkgiKjdI,80639
|
|
39
39
|
pygeodesy/hausdorff.py,sha256=-aKtRbMefDSoIk4V3wCvNrXPZ7Bqk1P6-XuGuI7o8Zc,34770
|
|
40
40
|
pygeodesy/heights.py,sha256=9kvyJj0-D3syZMdHNDXIfZT3MyhHH2fcqW_y-u7Tn2M,43197
|
|
41
41
|
pygeodesy/internals.py,sha256=YUcf9wWXT7XztviEBN2uBww8Bt7gnqks2sAZt7k_j3w,20426
|
|
42
42
|
pygeodesy/interns.py,sha256=kReVkCWA_rw8GyaYFVRI9dfdXu7MF9nD1MgoXsdsK7I,23273
|
|
43
43
|
pygeodesy/iters.py,sha256=xPH0ytomvJeKHu717Fjzi3QbRrEikO6n7vqkY_IDz1k,20311
|
|
44
|
-
pygeodesy/karney.py,sha256=
|
|
45
|
-
pygeodesy/ktm.py,sha256=
|
|
46
|
-
pygeodesy/latlonBase.py,sha256=
|
|
47
|
-
pygeodesy/lazily.py,sha256=
|
|
44
|
+
pygeodesy/karney.py,sha256=nuuc49Crv3Rt2tKtn8rizyfvKhyQiMekfTFEcyfj-sk,38035
|
|
45
|
+
pygeodesy/ktm.py,sha256=EJ52Llx5DPFNNl2DEH8rL1-k955qOxYZLAg4-UpnlbA,27246
|
|
46
|
+
pygeodesy/latlonBase.py,sha256=8DxTwivt3SG6wCLJLXBesY6hlNFgLCksdH3AdQFz2G0,78949
|
|
47
|
+
pygeodesy/lazily.py,sha256=GZuV0nXH2-jrBxKqKuD839fJFtUFDHsPh4mA7p5uJZI,46932
|
|
48
48
|
pygeodesy/lcc.py,sha256=oDooTzFHnqsMtSKmmmfEbypHpdlPltfo7Mt0pAO4-_A,25669
|
|
49
|
-
pygeodesy/ltp.py,sha256=
|
|
49
|
+
pygeodesy/ltp.py,sha256=4ElW1AsN_k_jppvp9Mv2RFs5Q97yhJSnCStcmg9Rl-k,50765
|
|
50
50
|
pygeodesy/ltpTuples.py,sha256=r3uHMBCxr31IsCMp_OtpevQPmULJhucn8JZ2bGjuiVI,58338
|
|
51
51
|
pygeodesy/mgrs.py,sha256=w50bvM3qDtHDBDBRQ_EgZnPn7vxVXgoFnleeZgefkVk,29679
|
|
52
|
-
pygeodesy/named.py,sha256=
|
|
52
|
+
pygeodesy/named.py,sha256=T0LPPhCKJFu2S5IaQmUUbwTS21JbXmkHsvKRgTpT2Nk,52267
|
|
53
53
|
pygeodesy/namedTuples.py,sha256=UDmL4kCihvf8tIUVXzGzRLzL_1BLuyqm04pite6YUuk,28495
|
|
54
|
-
pygeodesy/nvectorBase.py,sha256=
|
|
54
|
+
pygeodesy/nvectorBase.py,sha256=rClYu26Bof9DsM1F60i0eccktNo8xYA_vkThwoY7N4o,28644
|
|
55
55
|
pygeodesy/osgr.py,sha256=O8mLlmnQkcyXU4xczLGD1zhSyt8RQ3EsXctUnCIjO8U,30819
|
|
56
56
|
pygeodesy/points.py,sha256=GirmbiqjD7Q0Z4SDySQO__Jgun-i8vMdJ81U2Kz8V0w,64408
|
|
57
|
-
pygeodesy/props.py,sha256=
|
|
57
|
+
pygeodesy/props.py,sha256=2vQD2PoHy1f7osxEf9H0hNvg7gDPd0t8rCy-EuezcI4,23725
|
|
58
58
|
pygeodesy/resections.py,sha256=nkfBxYrsEdyq2JqAbPrRWKplJBzFkIXLvEZGB4gPu_A,43550
|
|
59
59
|
pygeodesy/simplify.py,sha256=NybC-pfze0ObEm4ZCz6ZQrjJlQ-QyA83E6mSJqCuKq4,25223
|
|
60
|
-
pygeodesy/solveBase.py,sha256=
|
|
60
|
+
pygeodesy/solveBase.py,sha256=oI_-FFjSPI1_yQ598hF6HFKUa4tLsAfbnWtKoQ-TJgE,19206
|
|
61
61
|
pygeodesy/sphericalBase.py,sha256=YvjMZmmfy9pZeKHbY-ca0oi-Jy-OxsG9dhefy5LTjRA,32237
|
|
62
62
|
pygeodesy/sphericalNvector.py,sha256=MiWcCy5CdvXsCa3963GeUMEnSYGhBiXzkoAEX_tGX4Q,56952
|
|
63
63
|
pygeodesy/sphericalTrigonometry.py,sha256=Jf3FUUYEWXbNkiagr0HyMJ6E-cNghnTjcdgntTm28RE,64076
|
|
64
64
|
pygeodesy/streprs.py,sha256=xudQ6zi5jFT_CmstSPysjxpZKyLBQNkUk1ETh0uvQ04,23030
|
|
65
65
|
pygeodesy/trf.py,sha256=CRFHmu0lFNtc41fddXavEkHmgnTFWEqR4RTFodcFKsw,119022
|
|
66
|
-
pygeodesy/triaxials.py,sha256=
|
|
66
|
+
pygeodesy/triaxials.py,sha256=ixDpZ3RdZmHV8RcmPnXxiPCoinno4Qj4JcYuS1EKD04,62722
|
|
67
67
|
pygeodesy/units.py,sha256=mTn0APS0SW9fKn3IYf5usV63Xaw2B9DzkwefPNVu-Es,34607
|
|
68
68
|
pygeodesy/unitsBase.py,sha256=yT7dgfwxtd1hHEn02NwPAdStsVWDfPH-Qdfrhvje7Yw,14057
|
|
69
69
|
pygeodesy/ups.py,sha256=zapIvzoVuj_FDGC6sr8O8ynPhfqXwUg-EFCVnJdM9Eo,23329
|
|
@@ -81,11 +81,11 @@ pygeodesy/auxilats/_CX_6.py,sha256=x4hrHxunjqqkEsZbVW1dyn3R5mR8EWYOuX77RzDEyh4,1
|
|
|
81
81
|
pygeodesy/auxilats/_CX_8.py,sha256=t-OO48t4cCOsOgMi1FoyPw2DQqybVZFsgQMqAYP-jKY,25304
|
|
82
82
|
pygeodesy/auxilats/__init__.py,sha256=YNp41rRC5DmAhBx4RPqoqh4yxD9Vjf9Wk_USwqeZYcE,2881
|
|
83
83
|
pygeodesy/auxilats/__main__.py,sha256=Vuj1YSp1LV0zejVzi6EYauka1Dv8kwOHI_aeHxQEVYk,2899
|
|
84
|
-
pygeodesy/auxilats/auxAngle.py,sha256=
|
|
84
|
+
pygeodesy/auxilats/auxAngle.py,sha256=eRkUhML8_a6NKlC3SZvPE7gjMden_TR9_KkhBfLszj8,16744
|
|
85
85
|
pygeodesy/auxilats/auxDLat.py,sha256=3sq7Wc-ykpVbldNh10IZ3tIlJ7DcQFDlmZ4nOhJEgo0,10969
|
|
86
|
-
pygeodesy/auxilats/auxDST.py,sha256=
|
|
86
|
+
pygeodesy/auxilats/auxDST.py,sha256=lKEgUlnJ3JNHLu_ZPBn7eKgwxK9yAHa77r9OCUiLdds,10466
|
|
87
87
|
pygeodesy/auxilats/auxLat.py,sha256=QeTx8dqov1NwNSEam9VC_wq36nRCUpbJpY4hH1NvyNg,32493
|
|
88
|
-
pygeodesy/auxilats/auxily.py,sha256=
|
|
88
|
+
pygeodesy/auxilats/auxily.py,sha256=evkD4NGJPGdy3QtP7zI76IY2uDTGc1YjsVG4-BwzZIg,8235
|
|
89
89
|
pygeodesy/deprecated/__init__.py,sha256=cBYqbh5Njkd5SnaJDaMUP6PL66HfLWii_JoLjnKfnP4,2815
|
|
90
90
|
pygeodesy/deprecated/bases.py,sha256=nxUtxscAg5cb7HEzTSmPJFafLc9Ad2SL5ovwkYaU5z8,1655
|
|
91
91
|
pygeodesy/deprecated/classes.py,sha256=gktUr5qYXCm8ztH6lfzFgaHKqMiw1tHc1Vw6i6DEvNA,12377
|
|
@@ -102,16 +102,16 @@ pygeodesy/geodesicx/_C4_27.py,sha256=bPbj2Ckrn9WJglm3SNTXyMkULNwANM0tCQ-LKxP1L58
|
|
|
102
102
|
pygeodesy/geodesicx/_C4_30.py,sha256=QZO8p971ztJwDGLOaJYgIhklztz9GlqbtS-xRP_E7o4,201964
|
|
103
103
|
pygeodesy/geodesicx/__init__.py,sha256=4qAIrE-cnOvi1B38iK-52PB2BpB1zxsVYEryHm4QTJk,2478
|
|
104
104
|
pygeodesy/geodesicx/__main__.py,sha256=JnKrYmg1q9J5wRRqUy-dQ9abj2-2jpWtrolMMaFfWiY,3176
|
|
105
|
-
pygeodesy/geodesicx/gx.py,sha256=
|
|
105
|
+
pygeodesy/geodesicx/gx.py,sha256=ovPbV2kIR7rtoAVUxm4PXNUKUTbkzulNyqSi8bQpGQU,60595
|
|
106
106
|
pygeodesy/geodesicx/gxarea.py,sha256=-Kwe6spe2MSQbeLFDd6UN2NOi4JOjYhHAEzonOU3u4A,19409
|
|
107
107
|
pygeodesy/geodesicx/gxbases.py,sha256=Awt9zc1lyPS0vp4df2u4H_rhMeFu1pJaZPhb1iMoc-Q,5693
|
|
108
|
-
pygeodesy/geodesicx/gxline.py,sha256=
|
|
108
|
+
pygeodesy/geodesicx/gxline.py,sha256=zNQF8lz9caHZlsUcL8NfjG02KIza39Q6Qd6XizDp_UI,27537
|
|
109
109
|
pygeodesy/rhumb/__init__.py,sha256=kTuNSKiiQyXvQdYc5KUd5admuKJ2QmDCWQwkIobnM-w,2207
|
|
110
110
|
pygeodesy/rhumb/aux_.py,sha256=lOjpEU3Pe2I5DwC933UCf-SW73l5NMuDACeZhbVs3lE,16657
|
|
111
111
|
pygeodesy/rhumb/bases.py,sha256=awpP60K6EOzS753oXM-h9S6paS6FwoCnco8Zt8n81jY,54162
|
|
112
112
|
pygeodesy/rhumb/ekx.py,sha256=JsmdCatWKqsffF8jCh4HDu5IKt_kHq1qUdmP1LMuofY,24044
|
|
113
|
-
pygeodesy/rhumb/solve.py,sha256=
|
|
114
|
-
PyGeodesy-24.7.
|
|
115
|
-
PyGeodesy-24.7.
|
|
116
|
-
PyGeodesy-24.7.
|
|
117
|
-
PyGeodesy-24.7.
|
|
113
|
+
pygeodesy/rhumb/solve.py,sha256=3bzvHfvHtgq_rc7iiTL6h7yjtdGNutvJUYn9K9MpFKM,24046
|
|
114
|
+
PyGeodesy-24.7.24.dist-info/METADATA,sha256=eAD31ElQO-EdA8Ko3O5OLhFI59h7qky1Fjnke2urSLg,19717
|
|
115
|
+
PyGeodesy-24.7.24.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
|
|
116
|
+
PyGeodesy-24.7.24.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
|
|
117
|
+
PyGeodesy-24.7.24.dist-info/RECORD,,
|
pygeodesy/__init__.py
CHANGED
|
@@ -7,24 +7,22 @@ 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
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
and
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
and
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
U{
|
|
26
|
-
<https://www.Movable-Type.co.UK/scripts/latlong-vectors.html>} geodesy, the original U{JavaScript
|
|
27
|
-
source<https://GitHub.com/ChrisVeness/geodesy>} or U{docs<https://www.Movable-Type.co.UK/scripts/geodesy/docs>}
|
|
10
|
+
Transcoded from U{JavaScript originals<https://GitHub.com/ChrisVeness/geodesy>} by I{Chris Veness (C) 2005-2022}
|
|
11
|
+
and from several U{C++ classes<https://GeographicLib.SourceForge.io/C++/doc/annotated.html>} by I{Charles F. F.
|
|
12
|
+
Karney (C) 2008-2023} and published under the same U{MIT License<https://OpenSource.org/licenses/MIT>}**.
|
|
13
|
+
|
|
14
|
+
There are four modules for ellipsoidal earth models, C{ellipsoidalExact}, C{-Karney}, C{-Vincenty} and C{-Nvector}
|
|
15
|
+
and two for spherical ones, C{sphericalTrigonometry} and C{-Nvector}. Each module provides a geodetic B{C{LatLon}}
|
|
16
|
+
and a geocentric B{C{Cartesian}} class with methods and functions to compute distance, surface area, perimeter,
|
|
17
|
+
forward and reverse azimuth, initial and final bearing, intermediate and nearest points, intersections of geodesic,
|
|
18
|
+
great circle and rhumb lines, circle intersections and secants, U{3-point resections
|
|
19
|
+
<https://WikiPedia.org/wiki/Position_resection_and_intersection>}, triangulation, trilateration (by intersection,
|
|
20
|
+
by overlap and in 3d), conversions and unrolling, among other things. For more information and further details see
|
|
21
|
+
the U{documentation<https://mrJean1.GitHub.io/PyGeodesy>}, the descriptions of U{Latitude/Longitude
|
|
22
|
+
<https://www.Movable-Type.co.UK/scripts/latlong.html>}, U{Vincenty
|
|
23
|
+
<https://www.Movable-Type.co.UK/scripts/latlong-vincenty.html>} and U{Vector-based
|
|
24
|
+
<https://www.Movable-Type.co.UK/scripts/latlong-vectors.html>} geodesy, the original U{JavaScript source
|
|
25
|
+
<https://GitHub.com/ChrisVeness/geodesy>} or U{docs<https://www.Movable-Type.co.UK/scripts/geodesy/docs>}
|
|
28
26
|
and I{Karney}'s Python U{geographiclib<https://PyPI.org/project/geographiclib>} and U{C++ GeographicLib
|
|
29
27
|
<https://GeographicLib.SourceForge.io/C++/doc/index.html>}.
|
|
30
28
|
|
|
@@ -126,41 +124,44 @@ C{epydoc --html --no-private --no-source --name=PyGeodesy --url=... -v pygeodesy
|
|
|
126
124
|
Tests
|
|
127
125
|
=====
|
|
128
126
|
|
|
129
|
-
The tests ran with Python 3.12.
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
<https://
|
|
135
|
-
<https://
|
|
136
|
-
<https://
|
|
137
|
-
U{
|
|
138
|
-
|
|
139
|
-
<https://
|
|
140
|
-
<https://
|
|
141
|
-
<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.
|
|
142
|
-
|
|
127
|
+
The tests ran with Python 3.13.0b4, Python 3.12.4 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0,
|
|
128
|
+
U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3,
|
|
129
|
+
U{IntersectTool<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3 and
|
|
130
|
+
U{RhumbSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3),
|
|
131
|
+
Python 3.11.5 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0,
|
|
132
|
+
U{numpy<https://PyPI.org/project/numpy>} 1.24.2 and U{scipy<https://PyPI.org/project/scipy>} 1.10.1),
|
|
133
|
+
Python 3.10.8 (with U{geographiclib <https://PyPI.org/project/geographiclib>} 2.0,
|
|
134
|
+
U{numpy<https://PyPI.org/project/numpy>} 1.23.3, U{scipy<https://PyPI.org/project/scipy>} 1.9.1,
|
|
135
|
+
U{GeoConvert<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3,
|
|
136
|
+
U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3) and
|
|
137
|
+
Python 2.7.18 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 1.50,
|
|
138
|
+
U{numpy<https://PyPI.org/project/numpy>} 1.16.6, U{scipy<https://PyPI.org/project/scipy>} 1.2.2,
|
|
139
|
+
U{GeoConvert<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3,
|
|
140
|
+
U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3,
|
|
141
|
+
U{IntersectTool<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3 and
|
|
142
|
+
U{RhumbSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3), all in 64-bit on macOS 14.5 Sonoma.
|
|
143
143
|
|
|
144
144
|
All tests ran with and without C{lazy import} for Python 3 and with command line option C{-W default} and
|
|
145
145
|
env variable C{PYGEODESY_WARNINGS=on} for all Python versions. The results of those tests are included in
|
|
146
146
|
the distribution files.
|
|
147
147
|
|
|
148
|
-
Test coverage has been measured with U{coverage<https://PyPI.org/project/coverage>} 7.
|
|
148
|
+
Test coverage has been measured with U{coverage<https://PyPI.org/project/coverage>} 7.6.0 using Python 3.12.4,
|
|
149
149
|
3.11.5 and 3.10.8. The complete coverage report in HTML and a PDF summary are included in the distribution files.
|
|
150
150
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
L{machine<pygeodesy.machine>}).
|
|
151
|
+
Python 3.13.0b4, 3.12.4, 3.11.5 and 3.10.8 run on Apple M1 Silicon (C{arm64}), I{natively}. Python 2.7.18 runs on
|
|
152
|
+
Intel (C{x86_64}) or Intel I{emulation} ("C{arm64_x86_64}", see function L{machine<pygeodesy.machine>}).
|
|
154
153
|
|
|
155
|
-
The tests also ran with Python 3.
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
<https://CI.AppVeyor.com/project/mrJean1/pygeodesy>} in 64- and
|
|
154
|
+
The tests also ran with Python 3.12.4 (and U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on U{Debian
|
|
155
|
+
12<https://Cirrus-CI.com/github/mrJean1/PyGeodesy/master>} in 64-bit only, with Python 3.12.3 (and
|
|
156
|
+
U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on U{Windows
|
|
157
|
+
2019Server<https://CI.AppVeyor.com/project/mrJean1/pygeodesy>} in 64-bit only and with Python 2.7.18 (and
|
|
158
|
+
U{geographiclib<https://PyPI.org/project/geographiclib>} 1.52) on U{Windows
|
|
159
|
+
10<https://CI.AppVeyor.com/project/mrJean1/pygeodesy>} in 64- and 32-bit.
|
|
159
160
|
|
|
160
161
|
A single-File and single-Directory application with C{pygeodesy} has been bundled using U{PyInstaller
|
|
161
162
|
<https://PyPI.org/project/pyinstaller>} 3.4 and 64-bit Python 3.7.3 on macOS 10.13.6 High Sierra.
|
|
162
163
|
|
|
163
|
-
Previously, the tests were run with Python 3.12.0-
|
|
164
|
+
Previously, the tests were run with Python 3.12.0-3, 3.11.2-4, 3.10.1-7, 3.9.6, 3.9.1, 3.8.7, 3.7.1, 2.7.15, U{PyPy
|
|
164
165
|
<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
166
|
2.7.13) (and U{geographiclib <https://PyPI.org/project/geographiclib>} 1.52, U{numpy<https://PyPI.org/project/numpy>}
|
|
166
167
|
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,
|
|
@@ -202,7 +203,7 @@ The following environment variables are observed by C{PyGeodesy}:
|
|
|
202
203
|
- C{PYGEODESY_FSUM_RESIDUAL} - see module L{fsums<pygeodesy.fsums>} and class L{Fsum<pygeodesy.Fsum>}.
|
|
203
204
|
- C{PYGEODESY_GEOCONVERT} - see module L{mgrs<pygeodesy.mgrs>}.
|
|
204
205
|
- C{PYGEODESY_GEODSOLVE} - see module L{geodsolve<pygeodesy.geodsolve>}.
|
|
205
|
-
- C{PYGEODESY_INTERSECTTOOL} - see
|
|
206
|
+
- C{PYGEODESY_INTERSECTTOOL} - see module L{geodesici<pygeodesy.geodesici>}.
|
|
206
207
|
- C{PYGEODESY_LAZY_IMPORT} - see module L{lazily<pygeodesy.lazily>} and variable L{isLazy<pygeodesy.isLazy>}.
|
|
207
208
|
- C{PYGEODESY_NOTIMPLEMENTED} - C{__special__} methods return C{NotImplemented} if set to "std".
|
|
208
209
|
- C{PYGEODESY_RHUMBSOLVE} - see module L{rhumb.solve<pygeodesy.rhumb.solve>}.
|
|
@@ -370,10 +371,9 @@ else:
|
|
|
370
371
|
__path__ = [pygeodesy_abspath]
|
|
371
372
|
try: # ... make this import work, ...
|
|
372
373
|
import pygeodesy.lazily as _
|
|
373
|
-
except ImportError: # ... if it doesn't, extend
|
|
374
|
-
#
|
|
375
|
-
#
|
|
376
|
-
# be imported (and checked by PyChecker, etc.)
|
|
374
|
+
except ImportError: # ... if it doesn't, extend _sys.path to include
|
|
375
|
+
# this very directory such that all public and private sub-modules
|
|
376
|
+
# can be imported (by epydoc, checked by PyChecker, etc.)
|
|
377
377
|
_sys.path.insert(0, pygeodesy_abspath) # XXX __path__[0]
|
|
378
378
|
|
|
379
379
|
try: # lazily requires Python 3.7+, see lazily.__doc__
|
|
@@ -596,7 +596,7 @@ else:
|
|
|
596
596
|
|
|
597
597
|
from pygeodesy.internals import _version2, _DOT_ # PYCHOK import
|
|
598
598
|
# from pygeodesy.interns import _DOT_ # from .internals
|
|
599
|
-
__version__ = '24.07.
|
|
599
|
+
__version__ = '24.07.24'
|
|
600
600
|
# see setup.py for similar logic
|
|
601
601
|
version = _DOT_(*_version2(__version__, n=3))
|
|
602
602
|
|
pygeodesy/auxilats/auxAngle.py
CHANGED
|
@@ -23,7 +23,8 @@ from pygeodesy.fmath import hypot, unstr
|
|
|
23
23
|
from pygeodesy.fsums import _add_op_, _iadd_op_, _isub_op_, _sub_op_
|
|
24
24
|
from pygeodesy.named import _Named, _ALL_DOCS, _MODS
|
|
25
25
|
# from pygeodesy.lazily import _ALL_DOCS, _ALL_MODS as _MODS # from .named
|
|
26
|
-
from pygeodesy.props import Property, Property_RO, property_RO,
|
|
26
|
+
from pygeodesy.props import Property, Property_RO, property_RO, property_ROver, \
|
|
27
|
+
_update_all
|
|
27
28
|
# from pygeodesy.streprs import unstr # from .fmath
|
|
28
29
|
from pygeodesy.units import Degrees, Radians
|
|
29
30
|
from pygeodesy.utily import atan2d, sincos2, sincos2d
|
|
@@ -31,7 +32,7 @@ from pygeodesy.utily import atan2d, sincos2, sincos2d
|
|
|
31
32
|
from math import asinh, atan2, copysign, degrees, fabs, radians, sinh
|
|
32
33
|
|
|
33
34
|
__all__ = ()
|
|
34
|
-
__version__ = '24.
|
|
35
|
+
__version__ = '24.07.12'
|
|
35
36
|
|
|
36
37
|
_0_INF_NAN_NINF = (0, _0_0) + _INF_NAN_NINF
|
|
37
38
|
_MAX_2 = MAX * _0_5 # PYCHOK used!
|
|
@@ -273,12 +274,11 @@ class AuxAngle(_Named):
|
|
|
273
274
|
y, x = self._yx_normalized
|
|
274
275
|
return self.classof(y, x, name=self.name, aux=self._AUX)
|
|
275
276
|
|
|
276
|
-
@
|
|
277
|
+
@property_ROver
|
|
277
278
|
def _RhumbAux(self):
|
|
278
279
|
'''(INTERNAL) Import the L{RhumbAux} class, I{once}.
|
|
279
280
|
'''
|
|
280
|
-
|
|
281
|
-
return R
|
|
281
|
+
return _MODS.rhumb.aux_.RhumbAux # overwrite propertyROver
|
|
282
282
|
|
|
283
283
|
@Property_RO
|
|
284
284
|
def tan(self):
|
pygeodesy/auxilats/auxDST.py
CHANGED
|
@@ -18,13 +18,13 @@ from __future__ import division as _; del _ # PYCHOK semicolon
|
|
|
18
18
|
from pygeodesy.auxilats.auxily import _Dm
|
|
19
19
|
from pygeodesy.basics import isodd, neg, _reverange, _xnumpy
|
|
20
20
|
from pygeodesy.constants import PI_2, PI_4, isfinite, _0_0, _0_5, _naninf
|
|
21
|
-
from pygeodesy.fsums import Fsum
|
|
21
|
+
from pygeodesy.fsums import Fsum as _Fsum
|
|
22
22
|
from pygeodesy.karney import _2cos2x, _ALL_DOCS
|
|
23
23
|
# from pygeodesy.lazily import _ALL_DOCS # from .karney
|
|
24
|
-
|
|
24
|
+
from pygeodesy.props import property_RO, property_ROver
|
|
25
25
|
|
|
26
26
|
__all__ = ()
|
|
27
|
-
__version__ = '
|
|
27
|
+
__version__ = '24.07.12'
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class AuxDST(object):
|
|
@@ -60,7 +60,7 @@ class AuxDST(object):
|
|
|
60
60
|
'''
|
|
61
61
|
a = -_2cos2x(cosx, sinx)
|
|
62
62
|
if isfinite(a):
|
|
63
|
-
Y0, Y1 =
|
|
63
|
+
Y0, Y1 = _Fsum(), _Fsum()
|
|
64
64
|
n = _len_N(F, *N)
|
|
65
65
|
Fn = list(F[:n])
|
|
66
66
|
_F = Fn.pop
|
|
@@ -74,12 +74,11 @@ class AuxDST(object):
|
|
|
74
74
|
r = _naninf(-a)
|
|
75
75
|
return r
|
|
76
76
|
|
|
77
|
-
@
|
|
77
|
+
@property_ROver
|
|
78
78
|
def _fft_numpy(self):
|
|
79
79
|
'''(INTERNAL) Get the C{numpy.fft} module, I{once}.
|
|
80
80
|
'''
|
|
81
|
-
|
|
82
|
-
return fft
|
|
81
|
+
return _xnumpy(AuxDST, 1, 16).fft # overwrite propertyROver
|
|
83
82
|
|
|
84
83
|
def _fft_real(self, data):
|
|
85
84
|
'''(INTERNAL) NumPy's I{kissfft}-like C{transform_real} function,
|
|
@@ -160,7 +159,7 @@ class AuxDST(object):
|
|
|
160
159
|
'''
|
|
161
160
|
a = _2cos2x(cosx - sinx, cosx + sinx)
|
|
162
161
|
if isfinite(a):
|
|
163
|
-
Y0, Y1 =
|
|
162
|
+
Y0, Y1 = _Fsum(), _Fsum()
|
|
164
163
|
for r in _reverscaled(F, *N):
|
|
165
164
|
Y1 -= Y0 * a + r
|
|
166
165
|
Y1, Y0 = Y0, -Y1
|
|
@@ -192,8 +191,8 @@ class AuxDST(object):
|
|
|
192
191
|
# -2 * sin(y - x) * sin(y + x) -> 0
|
|
193
192
|
s = -_2cos2x(siny * cosx, cosy * sinx)
|
|
194
193
|
if isfinite(c) and isfinite(s):
|
|
195
|
-
Y0, Y1 =
|
|
196
|
-
Z0, Z1 =
|
|
194
|
+
Y0, Y1 = _Fsum(), _Fsum()
|
|
195
|
+
Z0, Z1 = _Fsum(), _Fsum()
|
|
197
196
|
for r in _reverscaled(F, *N):
|
|
198
197
|
Y1 -= Y0 * c + Z0 * s + r
|
|
199
198
|
Z1 -= Y0 * s + Z0 * c
|
pygeodesy/auxilats/auxily.py
CHANGED
|
@@ -19,7 +19,7 @@ from pygeodesy.constants import INF, NAN, isinf, isnan, _0_0, _0_5, \
|
|
|
19
19
|
from pygeodesy.errors import AuxError, NN
|
|
20
20
|
from pygeodesy.fmath import hypot1 as _sc, hypot2_
|
|
21
21
|
# from pygeodesy.interns import NN # from .errors
|
|
22
|
-
from pygeodesy.karney import ADict,
|
|
22
|
+
from pygeodesy.karney import ADict, _ALL_DOCS, _MODS # PYCHOK used!
|
|
23
23
|
# from pygeodesy.lazily import _ALL_DOCS, _ALL_MODS as _MODS # from .karney
|
|
24
24
|
# from pygeodesy.named import ADict # from .karney
|
|
25
25
|
from pygeodesy.utily import atan1
|
|
@@ -27,7 +27,7 @@ from pygeodesy.utily import atan1
|
|
|
27
27
|
from math import asinh, copysign
|
|
28
28
|
|
|
29
29
|
__all__ = ()
|
|
30
|
-
__version__ = '24.
|
|
30
|
+
__version__ = '24.07.12'
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
class Aux(object):
|
pygeodesy/cartesianBase.py
CHANGED
|
@@ -28,8 +28,8 @@ from pygeodesy.named import _name2__, _Pass
|
|
|
28
28
|
from pygeodesy.namedTuples import LatLon4Tuple, _NamedTupleTo , Vector3Tuple, \
|
|
29
29
|
Vector4Tuple, Bearing2Tuple # PYCHOK .sphericalBase
|
|
30
30
|
# from pygeodesy.nvectorBase import _N_vector # _MODS
|
|
31
|
-
from pygeodesy.props import deprecated_method, Property, Property_RO, \
|
|
32
|
-
|
|
31
|
+
from pygeodesy.props import deprecated_method, Property, Property_RO, property_doc_, \
|
|
32
|
+
property_RO, property_ROnce, _update_all
|
|
33
33
|
# from pygeodesy,resections import cassini, collins5, pierlot, pierlotx, \
|
|
34
34
|
# tienstra7 # _MODS
|
|
35
35
|
# from pygeodesy.streprs import Fmt # from .fsums
|
|
@@ -43,7 +43,7 @@ from pygeodesy.vector3d import Vector3d, _xyzhdlln4
|
|
|
43
43
|
# from math import atan2, degrees, fabs, radians, sqrt # from .fmath, .utily
|
|
44
44
|
|
|
45
45
|
__all__ = _ALL_LAZY.cartesianBase
|
|
46
|
-
__version__ = '24.
|
|
46
|
+
__version__ = '24.07.12'
|
|
47
47
|
|
|
48
48
|
_r_ = 'r'
|
|
49
49
|
_theta_ = 'theta'
|
|
@@ -211,12 +211,11 @@ class CartesianBase(Vector3d):
|
|
|
211
211
|
r = Cartesian(*c, **kwds)
|
|
212
212
|
return r.renamed(n) if n else r
|
|
213
213
|
|
|
214
|
-
@
|
|
214
|
+
@property_ROnce
|
|
215
215
|
def Ecef(self):
|
|
216
216
|
'''Get the ECEF I{class} (L{EcefKarney}), I{once}.
|
|
217
217
|
'''
|
|
218
|
-
|
|
219
|
-
return E
|
|
218
|
+
return _MODS.ecef.EcefKarney
|
|
220
219
|
|
|
221
220
|
@Property_RO
|
|
222
221
|
def _ecef9(self):
|
pygeodesy/ecef.py
CHANGED
|
@@ -76,7 +76,7 @@ from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS
|
|
|
76
76
|
from pygeodesy.named import _name__, _name1__, _NamedBase, _NamedTuple, _Pass, _xnamed
|
|
77
77
|
from pygeodesy.namedTuples import LatLon2Tuple, LatLon3Tuple, \
|
|
78
78
|
PhiLam2Tuple, Vector3Tuple, Vector4Tuple
|
|
79
|
-
from pygeodesy.props import deprecated_method, Property_RO,
|
|
79
|
+
from pygeodesy.props import deprecated_method, Property_RO, property_ROver, property_doc_
|
|
80
80
|
# from pygeodesy.streprs import Fmt, unstr # from .fsums
|
|
81
81
|
from pygeodesy.units import _isRadius, Degrees, Height, Int, Lam, Lat, Lon, Meter, \
|
|
82
82
|
Phi, Scalar, Scalar_
|
|
@@ -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.06.
|
|
89
|
+
__version__ = '24.06.12'
|
|
90
90
|
|
|
91
91
|
_Ecef_ = 'Ecef'
|
|
92
92
|
_prolate_ = 'prolate'
|
|
@@ -261,13 +261,12 @@ class _EcefBase(_NamedBase):
|
|
|
261
261
|
raise EcefError(phi=phi, lam=lam, height=height, cause=x)
|
|
262
262
|
return self._forward(*plhn, M=M, _philam=True)
|
|
263
263
|
|
|
264
|
-
@
|
|
264
|
+
@property_ROver
|
|
265
265
|
def _Geocentrics(self):
|
|
266
266
|
'''(INTERNAL) Get the valid geocentric classes. I{once}.
|
|
267
267
|
'''
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
return t
|
|
268
|
+
return (Ecef9Tuple, # overwrite property_ROver
|
|
269
|
+
_MODS.cartesianBase.CartesianBase)
|
|
271
270
|
|
|
272
271
|
@Property_RO
|
|
273
272
|
def _isYou(self):
|
|
@@ -1028,12 +1027,11 @@ class Ecef9Tuple(_NamedTuple):
|
|
|
1028
1027
|
_Names_ = (_x_, _y_, _z_, _lat_, _lon_, _height_, _C_, _M_, _datum_)
|
|
1029
1028
|
_Units_ = ( Meter, Meter, Meter, Lat, Lon, Height, Int, _Pass, _Pass)
|
|
1030
1029
|
|
|
1031
|
-
@
|
|
1030
|
+
@property_ROver
|
|
1032
1031
|
def _CartesianBase(self):
|
|
1033
1032
|
'''(INTERNAL) Get class C{CartesianBase}, I{once}.
|
|
1034
1033
|
'''
|
|
1035
|
-
|
|
1036
|
-
return C
|
|
1034
|
+
return _MODS.cartesianBase.CartesianBase # overwrite property_ROver
|
|
1037
1035
|
|
|
1038
1036
|
@deprecated_method
|
|
1039
1037
|
def convertDatum(self, datum2): # for backward compatibility
|