pygeodesy 24.7.7__py2.py3-none-any.whl → 24.8.4__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.8.4.dist-info}/METADATA +28 -26
- {PyGeodesy-24.7.7.dist-info → PyGeodesy-24.8.4.dist-info}/RECORD +39 -39
- pygeodesy/__init__.py +50 -51
- pygeodesy/auxilats/auxAngle.py +5 -5
- pygeodesy/auxilats/auxDST.py +9 -10
- pygeodesy/auxilats/auxily.py +2 -2
- pygeodesy/azimuthal.py +4 -4
- pygeodesy/cartesianBase.py +6 -7
- pygeodesy/css.py +5 -5
- pygeodesy/ecef.py +7 -9
- pygeodesy/ellipsoids.py +12 -12
- pygeodesy/formy.py +2 -2
- pygeodesy/fsums.py +12 -6
- pygeodesy/gars.py +59 -52
- pygeodesy/geodesici.py +232 -137
- pygeodesy/geodesicw.py +70 -45
- pygeodesy/geodesicx/gx.py +8 -8
- pygeodesy/geodesicx/gxline.py +5 -5
- pygeodesy/geodsolve.py +12 -3
- pygeodesy/geohash.py +484 -267
- pygeodesy/geoids.py +13 -11
- pygeodesy/heights.py +30 -40
- pygeodesy/internals.py +19 -6
- pygeodesy/karney.py +85 -79
- pygeodesy/ktm.py +2 -5
- pygeodesy/latlonBase.py +5 -6
- pygeodesy/lazily.py +21 -19
- pygeodesy/ltp.py +6 -6
- pygeodesy/ltpTuples.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 +6 -7
- pygeodesy/units.py +34 -17
- pygeodesy/wgrs.py +93 -83
- {PyGeodesy-24.7.7.dist-info → PyGeodesy-24.8.4.dist-info}/WHEEL +0 -0
- {PyGeodesy-24.7.7.dist-info → PyGeodesy-24.8.4.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.8.4
|
|
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
|
|
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 Niemeyer 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
|
|
@@ -16,9 +16,6 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
16
16
|
Classifier: Operating System :: OS Independent
|
|
17
17
|
Classifier: Programming Language :: Python
|
|
18
18
|
Classifier: Programming Language :: Python :: 2.7
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
22
19
|
Classifier: Programming Language :: Python :: 3.10
|
|
23
20
|
Classifier: Programming Language :: Python :: 3.11
|
|
24
21
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -41,13 +38,13 @@ classes`_ by *Charles F.F. Karney (C) 2008-2023* and published under the same `M
|
|
|
41
38
|
|
|
42
39
|
There are four modules for ellipsoidal earth models, *ellipsoidalExact*, *-Karney*, *-Vincenty*
|
|
43
40
|
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`_.
|
|
41
|
+
provides a geodetic LatLon_ and a geocentric Cartesian_ class with methods and functions to compute
|
|
42
|
+
distance, surface area, perimeter, forward and reverse azimuth, initial and final bearing, intermediate
|
|
43
|
+
and nearest points, intersections of geodesic, great circle and rhumb lines, circle intersections and
|
|
44
|
+
secants, `3-point resections`_, triangulation, trilateration (by intersection, by overlap and in
|
|
45
|
+
3d), conversions and unrolling, among other things. For more information and further details see the
|
|
46
|
+
documentation_, the descriptions of `Latitude/Longitude`_, Vincenty_ and `Vector-based`_ geodesy, the
|
|
47
|
+
original `JavaScript source`_ or docs_ and *Karney*\'s Python geographiclib_ and `C++ GeographicLib`_.
|
|
51
48
|
|
|
52
49
|
Also included are modules for conversions to and from `Cassini-Soldner`_, ECEF_ (Earth-Centered,
|
|
53
50
|
Earth-Fixed cartesian), UTM_ (Universal Transverse Mercator and Exact_), UPS_ (Universal Polar
|
|
@@ -99,6 +96,9 @@ Modules ``ellipsoidalGeodSolve`` and ``geodsolve`` and ``azimuthal`` classes ``E
|
|
|
99
96
|
and ``GnomonicGeodSolve`` depend on *Karney*\'s C++ utility GeodSolve_ to be executable and set with
|
|
100
97
|
env variable ``PYGEODESY_GEODSOLVE`` or with property ``Ellipsoid.geodsolve``.
|
|
101
98
|
|
|
99
|
+
Class ``Intersectool`` in module ``geodesici`` needs *Karney*\'s C++ utility IntersectTool_ to be
|
|
100
|
+
executable and set with env variable ``PYGEODESY_INTERSECTTOOL``.
|
|
101
|
+
|
|
102
102
|
To compare ``MGRS`` results from modules ``mgrs`` and ``testMgrs`` with *Karney*\'s C++ utility
|
|
103
103
|
GeoConvert_, the latter must be executable and set with env variable ``PYGEODESY_GEOCONVERT``.
|
|
104
104
|
|
|
@@ -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:
|
|
162
|
+
*Last updated: Aug 04, 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=pjLvi1mnybZenPXxPN_4a_OUOSAa8vIwar_gXiTJfI4,42175
|
|
3
3
|
pygeodesy/__main__.py,sha256=VWxepzxGqR5wsHYyIHFSsRMlZ27keX3xyEhBuGDRXxk,4727
|
|
4
4
|
pygeodesy/albers.py,sha256=JXqeWAteV2N601e5R-D7bCsa8qAYv3oWm7M3R4uszXM,31078
|
|
5
|
-
pygeodesy/azimuthal.py,sha256=
|
|
5
|
+
pygeodesy/azimuthal.py,sha256=erI5DTM0-Nr5YC2LnBTVNbUKlrnnXJUwKe0SCQ7-Soc,50223
|
|
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=FHXBzIsvU817CQuhgsk4JSRuZQ2rm1ll-gqKUx47x6I,46927
|
|
9
9
|
pygeodesy/clipy.py,sha256=3ysIEWQ89HjvLnSlZm0nZAt9EN5AQxIs1sLLM8yF9zM,27675
|
|
10
10
|
pygeodesy/constants.py,sha256=-weWOuHwE-qI6pYRLcTucI0KNcNJm6vPNzxwrJzACKs,19192
|
|
11
|
-
pygeodesy/css.py,sha256=
|
|
11
|
+
pygeodesy/css.py,sha256=rPr5EcGm_blVt72h-851ytpVxdPhx1MEqqGs3Ppx3eI,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,51 +20,51 @@ 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=i7piclEb17hYt5wqL7Q0p5qLuRVvz3yonUSUcvmiozc,108005
|
|
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
|
|
27
27
|
pygeodesy/etm.py,sha256=y3dAqS-iWnbWzmsu4zB7kryAp_I17XEdzNRRk0klTww,44696
|
|
28
28
|
pygeodesy/fmath.py,sha256=EOHD0uZ8VULZtXAk8tVeuPaSTozPDCN8GJcemCo-jqg,33709
|
|
29
|
-
pygeodesy/formy.py,sha256=
|
|
29
|
+
pygeodesy/formy.py,sha256=PrAlrSASKIXeFvawueyo7kRC-UJJSEQR3APhirHqhtE,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=
|
|
33
|
-
pygeodesy/gars.py,sha256=
|
|
34
|
-
pygeodesy/geodesici.py,sha256=
|
|
35
|
-
pygeodesy/geodesicw.py,sha256=
|
|
36
|
-
pygeodesy/geodsolve.py,sha256=
|
|
37
|
-
pygeodesy/geohash.py,sha256=
|
|
38
|
-
pygeodesy/geoids.py,sha256=
|
|
32
|
+
pygeodesy/fsums.py,sha256=VbI_1i-0BCeRpPnG58EDPVKossR7JORZzFXEspoaiJU,80839
|
|
33
|
+
pygeodesy/gars.py,sha256=OLsBs8rkOeehVhO1Rqqip0wxxfaxrKpF8QyuMK3V1_Y,11776
|
|
34
|
+
pygeodesy/geodesici.py,sha256=rbHsTKnne7atLGGumPOm7HPogM_ugKnohFmY6uSft6g,74966
|
|
35
|
+
pygeodesy/geodesicw.py,sha256=oEs96Epw839BH3rVpxVdpXuQRBudbOftUsSBUid8fcc,28710
|
|
36
|
+
pygeodesy/geodsolve.py,sha256=M1kU9HOKnvf8agv_V4fN0QcNh40N6dExuCd0pPTKsoM,23540
|
|
37
|
+
pygeodesy/geohash.py,sha256=EyssZKlyxoySV4wbp8Zy2rDETuq-J7bwcQndv0iUMcY,39848
|
|
38
|
+
pygeodesy/geoids.py,sha256=UstNCTde42mSxlu6JHyxIX8V425QP2pnPb__ZkjB7cc,80761
|
|
39
39
|
pygeodesy/hausdorff.py,sha256=-aKtRbMefDSoIk4V3wCvNrXPZ7Bqk1P6-XuGuI7o8Zc,34770
|
|
40
|
-
pygeodesy/heights.py,sha256=
|
|
41
|
-
pygeodesy/internals.py,sha256=
|
|
40
|
+
pygeodesy/heights.py,sha256=5k5p73UNsAk6uFRDBUkh2lIc1EZTqiG9ViUCcoQnlxI,43244
|
|
41
|
+
pygeodesy/internals.py,sha256=NiubVptqyoPuWiyB9ma8ApXbMbzrzCiw9IqToPg5AlM,20751
|
|
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=y9xMgJX0W0tLrQQnO6c9-It7QgDSOcd4Irvs2D68vBI,38035
|
|
45
|
+
pygeodesy/ktm.py,sha256=EJ52Llx5DPFNNl2DEH8rL1-k955qOxYZLAg4-UpnlbA,27246
|
|
46
|
+
pygeodesy/latlonBase.py,sha256=jyL5Eqg1BWYmOrHG4GAFjL3U5iADJdv_QEI-AHK-hz0,78949
|
|
47
|
+
pygeodesy/lazily.py,sha256=Fbb3XltvdbSTqhM1mTHrK9qTFt8a3JUQitvuPYxpCr4,47153
|
|
48
48
|
pygeodesy/lcc.py,sha256=oDooTzFHnqsMtSKmmmfEbypHpdlPltfo7Mt0pAO4-_A,25669
|
|
49
|
-
pygeodesy/ltp.py,sha256=
|
|
50
|
-
pygeodesy/ltpTuples.py,sha256=
|
|
49
|
+
pygeodesy/ltp.py,sha256=JhEhn5uM0OW9xeEFdVbfBhI7LQkPglvFqMlbBzgqOUg,50766
|
|
50
|
+
pygeodesy/ltpTuples.py,sha256=S03fH1aAzQbFEB-ig-nGRi2NXHkiSMuL_ugR3ytd_5A,58331
|
|
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=
|
|
67
|
-
pygeodesy/units.py,sha256=
|
|
66
|
+
pygeodesy/triaxials.py,sha256=BirxUH-heFmFslT9E7bgOYrKyGFPW5BMnYkiFlhD7j0,62723
|
|
67
|
+
pygeodesy/units.py,sha256=KHtejDr2I8EcWNBdupdyCkrjnjZIY3NIM1P5ghMaBBA,35270
|
|
68
68
|
pygeodesy/unitsBase.py,sha256=yT7dgfwxtd1hHEn02NwPAdStsVWDfPH-Qdfrhvje7Yw,14057
|
|
69
69
|
pygeodesy/ups.py,sha256=zapIvzoVuj_FDGC6sr8O8ynPhfqXwUg-EFCVnJdM9Eo,23329
|
|
70
70
|
pygeodesy/utily.py,sha256=Zb6L9unzHHhp67znmQLLdizvyX6p4eczR1PDtcyWH-s,36189
|
|
@@ -75,17 +75,17 @@ pygeodesy/vector2d.py,sha256=zJq5PB777_mFJpKD-rt_T0Vm4SNbVwF7pc3KxX8uCT8,34994
|
|
|
75
75
|
pygeodesy/vector3d.py,sha256=uDNnYSj4BL_Nec6SkyxXDbYaNjvI15HQX0xh25dRLI8,44883
|
|
76
76
|
pygeodesy/vector3dBase.py,sha256=Om0Uq1zgjuJ6slj12KiFus_tobjYTPxgVZejNd0YzFI,35729
|
|
77
77
|
pygeodesy/webmercator.py,sha256=stO_thswe_D4uxXWH43YWSN6-WWWpv_uIuOwvBIp8Ug,14932
|
|
78
|
-
pygeodesy/wgrs.py,sha256=
|
|
78
|
+
pygeodesy/wgrs.py,sha256=SN5L1t-T-GsIFwhI99pbB5EPjOsKq_uP8YXshEqvcrA,15456
|
|
79
79
|
pygeodesy/auxilats/_CX_4.py,sha256=U41njj8Pu8cHMGuoUUVA20QIvRJAq-VGCnyoKJl0Ylo,8662
|
|
80
80
|
pygeodesy/auxilats/_CX_6.py,sha256=x4hrHxunjqqkEsZbVW1dyn3R5mR8EWYOuX77RzDEyh4,14856
|
|
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=nr-su1loEbv1uVxg7_cEjH0M1DLyodsulPfq4NVT5kY,16745
|
|
85
85
|
pygeodesy/auxilats/auxDLat.py,sha256=3sq7Wc-ykpVbldNh10IZ3tIlJ7DcQFDlmZ4nOhJEgo0,10969
|
|
86
|
-
pygeodesy/auxilats/auxDST.py,sha256=
|
|
86
|
+
pygeodesy/auxilats/auxDST.py,sha256=6rFoF2TmFnJZ2KR8sbYERqruovWkS1LMMGwiU6TgAtw,10467
|
|
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.
|
|
115
|
-
PyGeodesy-24.
|
|
116
|
-
PyGeodesy-24.
|
|
117
|
-
PyGeodesy-24.
|
|
113
|
+
pygeodesy/rhumb/solve.py,sha256=3bzvHfvHtgq_rc7iiTL6h7yjtdGNutvJUYn9K9MpFKM,24046
|
|
114
|
+
PyGeodesy-24.8.4.dist-info/METADATA,sha256=3DSSgW62gsowGJvtr9xL2w1tC5u_oy-VgPxAhOdwq1g,19739
|
|
115
|
+
PyGeodesy-24.8.4.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
|
|
116
|
+
PyGeodesy-24.8.4.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
|
|
117
|
+
PyGeodesy-24.8.4.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
|
|
|
@@ -101,11 +99,10 @@ and L{GnomonicGeodSolve} depend on I{Karney}'s C++ utility U{GeodSolve
|
|
|
101
99
|
<https://GeographicLib.SourceForge.io/C++/doc/GeodSolve.1.html>} to be executable and set with
|
|
102
100
|
env variable C{PYGEODESY_GEODSOLVE} or with property L{Ellipsoid.geodsolve}.
|
|
103
101
|
|
|
104
|
-
Class L{Intersectool}
|
|
102
|
+
Class L{Intersectool} in module L{geodesici} needs I{Karney}'s C++ utility U{IntersectTool
|
|
105
103
|
<https://GeographicLib.SourceForge.io/C++/doc/IntersectTool.1.html>} to be executable and set with
|
|
106
104
|
env variable C{PYGEODESY_INTERSECTTOOL}.
|
|
107
105
|
|
|
108
|
-
|
|
109
106
|
To compare C{MGRS} results from modules L{mgrs} and C{testMgrs} with I{Karney}'s C++ utility
|
|
110
107
|
U{GeoConvert<https://GeographicLib.SourceForge.io/C++/doc/GeoConvert.1.html>}, the latter must
|
|
111
108
|
be executable and set with env variable C{PYGEODESY_GEOCONVERT}.
|
|
@@ -126,41 +123,44 @@ C{epydoc --html --no-private --no-source --name=PyGeodesy --url=... -v pygeodesy
|
|
|
126
123
|
Tests
|
|
127
124
|
=====
|
|
128
125
|
|
|
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
|
-
|
|
126
|
+
The tests ran with Python 3.13.0b4, Python 3.12.4 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0,
|
|
127
|
+
U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3,
|
|
128
|
+
U{IntersectTool<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3 and
|
|
129
|
+
U{RhumbSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3),
|
|
130
|
+
Python 3.11.5 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0,
|
|
131
|
+
U{numpy<https://PyPI.org/project/numpy>} 1.24.2 and U{scipy<https://PyPI.org/project/scipy>} 1.10.1),
|
|
132
|
+
Python 3.10.8 (with U{geographiclib <https://PyPI.org/project/geographiclib>} 2.0,
|
|
133
|
+
U{numpy<https://PyPI.org/project/numpy>} 1.23.3, U{scipy<https://PyPI.org/project/scipy>} 1.9.1,
|
|
134
|
+
U{GeoConvert<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3,
|
|
135
|
+
U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3) and
|
|
136
|
+
Python 2.7.18 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 1.50,
|
|
137
|
+
U{numpy<https://PyPI.org/project/numpy>} 1.16.6, U{scipy<https://PyPI.org/project/scipy>} 1.2.2,
|
|
138
|
+
U{GeoConvert<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3,
|
|
139
|
+
U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3,
|
|
140
|
+
U{IntersectTool<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3 and
|
|
141
|
+
U{RhumbSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3), all in 64-bit on macOS 14.5 Sonoma.
|
|
143
142
|
|
|
144
143
|
All tests ran with and without C{lazy import} for Python 3 and with command line option C{-W default} and
|
|
145
144
|
env variable C{PYGEODESY_WARNINGS=on} for all Python versions. The results of those tests are included in
|
|
146
145
|
the distribution files.
|
|
147
146
|
|
|
148
|
-
Test coverage has been measured with U{coverage<https://PyPI.org/project/coverage>} 7.
|
|
147
|
+
Test coverage has been measured with U{coverage<https://PyPI.org/project/coverage>} 7.6.0 using Python 3.12.4,
|
|
149
148
|
3.11.5 and 3.10.8. The complete coverage report in HTML and a PDF summary are included in the distribution files.
|
|
150
149
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
L{machine<pygeodesy.machine>}).
|
|
150
|
+
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
|
|
151
|
+
Intel (C{x86_64}) or Intel I{emulation} ("C{arm64_x86_64}", see function L{machine<pygeodesy.machine>}).
|
|
154
152
|
|
|
155
|
-
The tests also ran with Python 3.
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
<https://CI.AppVeyor.com/project/mrJean1/pygeodesy>} in 64- and
|
|
153
|
+
The tests also ran with Python 3.12.4 (and U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on U{Debian
|
|
154
|
+
12<https://Cirrus-CI.com/github/mrJean1/PyGeodesy/master>} in 64-bit only, with Python 3.12.3 (and
|
|
155
|
+
U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on U{Windows
|
|
156
|
+
2019Server<https://CI.AppVeyor.com/project/mrJean1/pygeodesy>} in 64-bit only and with Python 2.7.18 (and
|
|
157
|
+
U{geographiclib<https://PyPI.org/project/geographiclib>} 1.52) on U{Windows
|
|
158
|
+
10<https://CI.AppVeyor.com/project/mrJean1/pygeodesy>} in 64- and 32-bit.
|
|
159
159
|
|
|
160
160
|
A single-File and single-Directory application with C{pygeodesy} has been bundled using U{PyInstaller
|
|
161
161
|
<https://PyPI.org/project/pyinstaller>} 3.4 and 64-bit Python 3.7.3 on macOS 10.13.6 High Sierra.
|
|
162
162
|
|
|
163
|
-
Previously, the tests were run with Python 3.12.0-
|
|
163
|
+
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
164
|
<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
165
|
2.7.13) (and U{geographiclib <https://PyPI.org/project/geographiclib>} 1.52, U{numpy<https://PyPI.org/project/numpy>}
|
|
166
166
|
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 +202,7 @@ The following environment variables are observed by C{PyGeodesy}:
|
|
|
202
202
|
- C{PYGEODESY_FSUM_RESIDUAL} - see module L{fsums<pygeodesy.fsums>} and class L{Fsum<pygeodesy.Fsum>}.
|
|
203
203
|
- C{PYGEODESY_GEOCONVERT} - see module L{mgrs<pygeodesy.mgrs>}.
|
|
204
204
|
- C{PYGEODESY_GEODSOLVE} - see module L{geodsolve<pygeodesy.geodsolve>}.
|
|
205
|
-
- C{PYGEODESY_INTERSECTTOOL} - see
|
|
205
|
+
- C{PYGEODESY_INTERSECTTOOL} - see module L{geodesici<pygeodesy.geodesici>}.
|
|
206
206
|
- C{PYGEODESY_LAZY_IMPORT} - see module L{lazily<pygeodesy.lazily>} and variable L{isLazy<pygeodesy.isLazy>}.
|
|
207
207
|
- C{PYGEODESY_NOTIMPLEMENTED} - C{__special__} methods return C{NotImplemented} if set to "std".
|
|
208
208
|
- C{PYGEODESY_RHUMBSOLVE} - see module L{rhumb.solve<pygeodesy.rhumb.solve>}.
|
|
@@ -210,6 +210,7 @@ The following environment variables are observed by C{PyGeodesy}:
|
|
|
210
210
|
|
|
211
211
|
and these to control standard or I{named} C{repr}esentations:
|
|
212
212
|
|
|
213
|
+
- C{PYGEODESY_AZIMUTH_STD_REPR} - see method L{Azimuth<pygeodesy.Azimuth>}C{.__repr__}.
|
|
213
214
|
- C{PYGEODESY_BEARING_STD_REPR} - see method L{Bearing<pygeodesy.Bearing>}C{.__repr__}.
|
|
214
215
|
- C{PYGEODESY_BOOL_STD_REPR} - see method L{Bool<pygeodesy.Bool>}C{.__repr__}.
|
|
215
216
|
- C{PYGEODESY_DEGREES_STD_REPR} - see method L{Degrees<pygeodesy.Degrees>}C{.__repr__}.
|
|
@@ -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__
|
|
@@ -507,8 +507,7 @@ if _init__all__ and not _lazy_import2: # import and set __all__
|
|
|
507
507
|
from pygeodesy.geodesicw import * # PYCHOK __all__
|
|
508
508
|
from pygeodesy.geodesicx import * # PYCHOK __all__
|
|
509
509
|
from pygeodesy.geodsolve import * # PYCHOK __all__
|
|
510
|
-
from pygeodesy.geohash import
|
|
511
|
-
Neighbors8Dict, Resolutions2Tuple # PYCHOK lazily
|
|
510
|
+
from pygeodesy.geohash import * # PYCHOK __all__
|
|
512
511
|
from pygeodesy.geoids import * # PYCHOK __all__
|
|
513
512
|
from pygeodesy.hausdorff import * # PYCHOK __all__
|
|
514
513
|
from pygeodesy.heights import * # PYCHOK __all__
|
|
@@ -596,7 +595,7 @@ else:
|
|
|
596
595
|
|
|
597
596
|
from pygeodesy.internals import _version2, _DOT_ # PYCHOK import
|
|
598
597
|
# from pygeodesy.interns import _DOT_ # from .internals
|
|
599
|
-
__version__ = '24.
|
|
598
|
+
__version__ = '24.08.04'
|
|
600
599
|
# see setup.py for similar logic
|
|
601
600
|
version = _DOT_(*_version2(__version__, n=3))
|
|
602
601
|
|
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.25'
|
|
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 property_ROver
|
|
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.25'
|
|
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 property_ROver
|
|
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/azimuthal.py
CHANGED
|
@@ -62,7 +62,7 @@ from pygeodesy.namedTuples import LatLon2Tuple, LatLon4Tuple
|
|
|
62
62
|
from pygeodesy.props import deprecated_Property_RO, Property_RO, \
|
|
63
63
|
property_doc_, _update_all
|
|
64
64
|
from pygeodesy.streprs import Fmt, _fstrLL0, unstr
|
|
65
|
-
from pygeodesy.units import
|
|
65
|
+
from pygeodesy.units import Azimuth, Easting, Lat_, Lon_, Northing, \
|
|
66
66
|
Scalar, Scalar_
|
|
67
67
|
from pygeodesy.utily import asin1, atan1, atan2b, atan2d, sincos2, \
|
|
68
68
|
sincos2d, sincos2d_
|
|
@@ -70,7 +70,7 @@ from pygeodesy.utily import asin1, atan1, atan2b, atan2d, sincos2, \
|
|
|
70
70
|
from math import acos, atan2, degrees, fabs, sin, sqrt
|
|
71
71
|
|
|
72
72
|
__all__ = _ALL_LAZY.azimuthal
|
|
73
|
-
__version__ = '24.
|
|
73
|
+
__version__ = '24.07.25'
|
|
74
74
|
|
|
75
75
|
_EPS_K = _EPStol * _0_1 # Karney's eps_ or _EPSmin * _0_1?
|
|
76
76
|
_over_horizon_ = 'over horizon'
|
|
@@ -323,7 +323,7 @@ class Azimuthal7Tuple(_NamedTuple):
|
|
|
323
323
|
C{1} or C{-1} in the L{Equidistant} case.
|
|
324
324
|
'''
|
|
325
325
|
_Names_ = (_x_, _y_, _lat_, _lon_, _azimuth_, _scale_, _datum_)
|
|
326
|
-
_Units_ = ( Easting, Northing, Lat_, Lon_,
|
|
326
|
+
_Units_ = ( Easting, Northing, Lat_, Lon_, Azimuth, Scalar, _Pass)
|
|
327
327
|
|
|
328
328
|
def antipodal(self, azimuth=None):
|
|
329
329
|
'''Return this tuple with the antipodal C{lat} and C{lon}.
|
|
@@ -332,7 +332,7 @@ class Azimuthal7Tuple(_NamedTuple):
|
|
|
332
332
|
(C{compass degrees360}).
|
|
333
333
|
'''
|
|
334
334
|
a = _MODS.formy.antipode(self.lat, self.lon) # PYCHOK named
|
|
335
|
-
z = self.azimuth if azimuth is None else
|
|
335
|
+
z = self.azimuth if azimuth is None else Azimuth(azimuth) # PYCHOK named
|
|
336
336
|
return _NamedTuple.dup(self, lat=a.lat, lon=a.lon, azimuth=z)
|
|
337
337
|
|
|
338
338
|
|