pygeodesy 24.7.24__py2.py3-none-any.whl → 24.8.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.24.dist-info → PyGeodesy-24.8.24.dist-info}/METADATA +20 -19
- {PyGeodesy-24.7.24.dist-info → PyGeodesy-24.8.24.dist-info}/RECORD +57 -57
- {PyGeodesy-24.7.24.dist-info → PyGeodesy-24.8.24.dist-info}/WHEEL +1 -1
- pygeodesy/__init__.py +26 -27
- pygeodesy/auxilats/auxAngle.py +2 -2
- pygeodesy/auxilats/auxDST.py +3 -3
- pygeodesy/azimuthal.py +4 -4
- pygeodesy/basics.py +3 -3
- pygeodesy/cartesianBase.py +6 -6
- pygeodesy/constants.py +11 -11
- pygeodesy/css.py +5 -5
- pygeodesy/ellipsoidalBase.py +18 -15
- pygeodesy/ellipsoidalExact.py +2 -2
- pygeodesy/ellipsoidalGeodSolve.py +2 -2
- pygeodesy/ellipsoidalKarney.py +2 -2
- pygeodesy/ellipsoidalNvector.py +2 -2
- pygeodesy/ellipsoidalVincenty.py +7 -6
- pygeodesy/ellipsoids.py +3 -3
- pygeodesy/epsg.py +3 -3
- pygeodesy/fmath.py +2 -1
- pygeodesy/formy.py +2 -2
- pygeodesy/fsums.py +4 -4
- pygeodesy/gars.py +66 -58
- pygeodesy/geodesici.py +4 -10
- pygeodesy/geodesicx/gx.py +3 -3
- pygeodesy/geodesicx/gxarea.py +3 -3
- pygeodesy/geodsolve.py +3 -3
- pygeodesy/geohash.py +491 -267
- pygeodesy/geoids.py +298 -316
- pygeodesy/heights.py +176 -194
- pygeodesy/internals.py +39 -6
- pygeodesy/interns.py +2 -3
- pygeodesy/karney.py +2 -2
- pygeodesy/latlonBase.py +14 -8
- pygeodesy/lazily.py +22 -21
- pygeodesy/ltp.py +6 -7
- pygeodesy/ltpTuples.py +12 -6
- pygeodesy/named.py +5 -4
- pygeodesy/namedTuples.py +14 -1
- pygeodesy/osgr.py +7 -7
- pygeodesy/points.py +2 -2
- pygeodesy/resections.py +7 -7
- pygeodesy/rhumb/solve.py +3 -3
- pygeodesy/simplify.py +10 -10
- pygeodesy/sphericalBase.py +3 -3
- pygeodesy/sphericalTrigonometry.py +2 -2
- pygeodesy/streprs.py +3 -3
- pygeodesy/triaxials.py +210 -204
- pygeodesy/units.py +36 -19
- pygeodesy/unitsBase.py +4 -4
- pygeodesy/utmupsBase.py +3 -3
- pygeodesy/vector2d.py +158 -51
- pygeodesy/vector3d.py +13 -52
- pygeodesy/vector3dBase.py +81 -63
- pygeodesy/webmercator.py +3 -3
- pygeodesy/wgrs.py +109 -101
- {PyGeodesy-24.7.24.dist-info → PyGeodesy-24.8.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.
|
|
3
|
+
Version: 24.8.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
|
|
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
|
|
@@ -36,8 +33,8 @@ earth models using precision trigonometric, vector-based, exact, elliptic, itera
|
|
|
36
33
|
approximate methods for geodetic (lat-/longitude), geocentric (ECEF_ cartesian) and certain
|
|
37
34
|
`triaxial ellipsoidal`_ coordinates.
|
|
38
35
|
|
|
39
|
-
Transcoded from `JavaScript originals`_ by *Chris Veness (C) 2005-
|
|
40
|
-
classes`_ by *Charles F.F. Karney (C) 2008-
|
|
36
|
+
Transcoded from `JavaScript originals`_ by *Chris Veness (C) 2005-2024* and from several `C++
|
|
37
|
+
classes`_ by *Charles F.F. Karney (C) 2008-2024* and published under the same `MIT License`_.
|
|
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
|
|
@@ -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,36 +115,37 @@ 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.13.
|
|
119
|
-
and RhumbSolve_ 2.3), 3.11.5 (with geographiclib_ 2.0, numpy_
|
|
120
|
-
(with geographiclib_ 2.0, numpy_ 1.23.3, scipy_ 1.9.1,
|
|
121
|
-
and Python 2.7.18 (with geographiclib_ 1.50, numpy_
|
|
122
|
-
2.
|
|
118
|
+
The tests ran with Python 3.13.0rc1, 3.12.5 (with geographiclib_ 2.0, numpy_ 2.1.0, scipy_ 1.14.1,
|
|
119
|
+
GeodSolve_ 2.3, IntersectTool_ 2.3 and RhumbSolve_ 2.3), 3.11.5 (with geographiclib_ 2.0, numpy_
|
|
120
|
+
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_
|
|
122
|
+
1.16.6, scipy_ 1.2.2, GeoConvert_ 2.3, GeodSolve_ 2.3, IntersectTool_ 2.3 and RhumbSolve_ 2.3),
|
|
123
|
+
all on macOS 14.6.1 Sonoma in 64-bit.
|
|
123
124
|
|
|
124
125
|
All tests ran with and without ``lazy import`` for Python 3 and with command line option ``-W default``
|
|
125
126
|
and env variable ``PYGEODESY_WARNINGS=on`` for all Python versions. The results of those tests are
|
|
126
127
|
included in the distribution files.
|
|
127
128
|
|
|
128
|
-
Python 3.13.
|
|
129
|
+
Python 3.13.0rc1, 3.12.5, 3.11.5 and 3.10.8 run on Apple M1 Silicon (``arm64``), *natively*. Python 2.7.18
|
|
129
130
|
runs on Intel (``x86_64``) or Intel *emulation* (\"``arm64_x86_64``\", see function `pygeodesy.machine`_).
|
|
130
131
|
|
|
131
|
-
Test coverage has been measured with coverage_ 7.6.0 using Python 3.12.
|
|
132
|
+
Test coverage has been measured with coverage_ 7.6.0 using Python 3.12.5, 3.11.5 and 3.10.8. The complete
|
|
132
133
|
coverage report in HTML and a PDF summary are included in the distribution files.
|
|
133
134
|
|
|
134
|
-
The tests also ran with Python 3.12.
|
|
135
|
+
The tests also ran with Python 3.12.5 (and geographiclib_ 2.0) on `Debian 12`_ in 64-bit only and with
|
|
135
136
|
Python 3.12.3 (and geographiclib_ 2.0) on `Windows 2019Server`_ in 64-bit only and with Python 2.7.18
|
|
136
137
|
(and with geographiclib_ 1.52) on `Windows 10`_ in 64- and 32-bit.
|
|
137
138
|
|
|
138
139
|
A single-File and single-Directory application with ``pygeodesy`` has been bundled using PyInstaller_
|
|
139
140
|
3.4 and 64-bit Python 3.7.4 and 3.7.3 on macOS 10.13.6 High Sierra.
|
|
140
141
|
|
|
141
|
-
Previously, the tests were run with Python 3.12.0-
|
|
142
|
+
Previously, the tests were run with Python 3.12.0-4, 3.11.2-4, 3.10.1-7, 3.9.1, 3.8.7, 3.7.1, 2.7.15, PyPy_
|
|
142
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,
|
|
143
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)
|
|
144
145
|
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,
|
|
145
146
|
2.7.10 and 2.6.9 (and numpy_ 1.19.0, 1.16.5, 1.16.2, 1.15.2, 1.14.0, 1.13.1, 1.8.0rc1 or 1.6.2 and scipy_
|
|
146
147
|
1.5.0), PyPy_ 7.3.0 (Python 2.7.13 and 3.6.9), PyPy_ 6.0.0 (Python 2.7.13 and 3.5.3) and `Intel-Python`_
|
|
147
|
-
3.5.3 (and numpy_ 1.11.3) on macOS 14.0-
|
|
148
|
+
3.5.3 (and 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
|
|
148
149
|
Sur (aka 10.16), 10.15.3, 10.15.5-7 Catalina, 10.14 Mojave, 10.13.6 High Sierra and 10.12 Sierra, MacOS X
|
|
149
150
|
10.11 El Capitan and/or MacOS X 10.10 Yosemite, with Pythonista_ 3.2 (with geographiclib 1.50 or 1.49 and
|
|
150
151
|
numpy 1.8.0) on iOS 14.4.2, 11.4.1, 12.0-3 on iPad4, iPhone6, iPhone10 and/or iPhone12, with Pythonista_
|
|
@@ -155,11 +156,11 @@ Notes
|
|
|
155
156
|
=====
|
|
156
157
|
|
|
157
158
|
All Python source code has been statically checked_ with PyChecker_, PyFlakes_, PyCodeStyle_ (formerly Pep8)
|
|
158
|
-
and McCabe_ using Python 2.7.18 and with Flake8_ using Python 3.11.5, both in 64-bit on macOS 14.
|
|
159
|
+
and McCabe_ using Python 2.7.18 and with Flake8_ using Python 3.11.5, both in 64-bit on macOS 14.6.1 Sonoma.
|
|
159
160
|
|
|
160
161
|
For a summary of all *Karney*-based functionality in ``pygeodesy``, see module karney_.
|
|
161
162
|
|
|
162
|
-
*Last updated:
|
|
163
|
+
*Last updated: Aug 24, 2024.*
|
|
163
164
|
|
|
164
165
|
License
|
|
165
166
|
=======
|
|
@@ -1,89 +1,89 @@
|
|
|
1
1
|
pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
|
|
2
|
-
pygeodesy/__init__.py,sha256=
|
|
2
|
+
pygeodesy/__init__.py,sha256=Qjs1tGLEQgsV6UELl1zfonI_jkCSJztZcVFbS62yboU,42225
|
|
3
3
|
pygeodesy/__main__.py,sha256=VWxepzxGqR5wsHYyIHFSsRMlZ27keX3xyEhBuGDRXxk,4727
|
|
4
4
|
pygeodesy/albers.py,sha256=JXqeWAteV2N601e5R-D7bCsa8qAYv3oWm7M3R4uszXM,31078
|
|
5
|
-
pygeodesy/azimuthal.py,sha256=
|
|
6
|
-
pygeodesy/basics.py,sha256=
|
|
5
|
+
pygeodesy/azimuthal.py,sha256=erI5DTM0-Nr5YC2LnBTVNbUKlrnnXJUwKe0SCQ7-Soc,50223
|
|
6
|
+
pygeodesy/basics.py,sha256=89s7SLLxPFJqTzeHv2C_FwW77pAU4Sa7uHq9d9k9eJA,29797
|
|
7
7
|
pygeodesy/booleans.py,sha256=5IeA6QWihiPWSv2JnCbMT53ey1WYIU7od5VQ1YUFqX8,73529
|
|
8
|
-
pygeodesy/cartesianBase.py,sha256=
|
|
8
|
+
pygeodesy/cartesianBase.py,sha256=jzPJR4_3Yp5jmK7A5inGOXskDebs7YMdjQzINHjzkP8,46935
|
|
9
9
|
pygeodesy/clipy.py,sha256=3ysIEWQ89HjvLnSlZm0nZAt9EN5AQxIs1sLLM8yF9zM,27675
|
|
10
|
-
pygeodesy/constants.py,sha256
|
|
11
|
-
pygeodesy/css.py,sha256=
|
|
10
|
+
pygeodesy/constants.py,sha256=T9t9hSwJfvPu5zhOPCp5-Z3xLFPo10UBo459TSlO-Xs,19192
|
|
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
14
|
pygeodesy/ecef.py,sha256=_yy_TIUGsXmEZ7aRcmchbJwTp7x__edx6EPiS3Xznes,59587
|
|
15
15
|
pygeodesy/elevations.py,sha256=4FuVcVNb_D09gmcvUlck344N4f7Jms76SIRrdutvKjk,10801
|
|
16
|
-
pygeodesy/ellipsoidalBase.py,sha256=
|
|
16
|
+
pygeodesy/ellipsoidalBase.py,sha256=IDu0-cKGhkCk3Aj16DJXt2gxjGYsFcjSTrvwG5GbATs,55385
|
|
17
17
|
pygeodesy/ellipsoidalBaseDI.py,sha256=OxbSBntV9xiOgsb-0un0cUYIVoPiIiH-lt3baBkbaS8,38400
|
|
18
|
-
pygeodesy/ellipsoidalExact.py,sha256=
|
|
19
|
-
pygeodesy/ellipsoidalGeodSolve.py,sha256=
|
|
20
|
-
pygeodesy/ellipsoidalKarney.py,sha256=
|
|
21
|
-
pygeodesy/ellipsoidalNvector.py,sha256=
|
|
22
|
-
pygeodesy/ellipsoidalVincenty.py,sha256=
|
|
23
|
-
pygeodesy/ellipsoids.py,sha256=
|
|
18
|
+
pygeodesy/ellipsoidalExact.py,sha256=wmIGgZyd0cvjswP4KOeDuEcuagjwQQRRq1cmseRoD-Q,16946
|
|
19
|
+
pygeodesy/ellipsoidalGeodSolve.py,sha256=fAT4b3HXkM6i1W_C0rb4vbSxZqr4c6rS7PIvGF2ad7s,16666
|
|
20
|
+
pygeodesy/ellipsoidalKarney.py,sha256=qvJa8kZ4SgaRR2UbjtkcRxw_CRbwhXoUT4Dn_6DJ6Ag,18721
|
|
21
|
+
pygeodesy/ellipsoidalNvector.py,sha256=rzjFx-y1Z2apUK4yYelcZMYelYFTU-diFGI6o-nxkUk,30039
|
|
22
|
+
pygeodesy/ellipsoidalVincenty.py,sha256=hSQ7s6QGDJSsrZvP7KwM1Q4wJz0YjyFjODF6XPGZ5WQ,25946
|
|
23
|
+
pygeodesy/ellipsoids.py,sha256=i7piclEb17hYt5wqL7Q0p5qLuRVvz3yonUSUcvmiozc,108005
|
|
24
24
|
pygeodesy/elliptic.py,sha256=-80MbZvRPk-TeA_ggkfXhjuPv07MzsB4HxNF7gbdhB4,42501
|
|
25
|
-
pygeodesy/epsg.py,sha256=
|
|
25
|
+
pygeodesy/epsg.py,sha256=Vq_M1g7Z0x5Noqsmt6OCQkPdYJj4jpWObtixL5pAjDA,8220
|
|
26
26
|
pygeodesy/errors.py,sha256=-UnQ1GhkiTR6uBd0z0vd_pFEmjWXlOESRDwMdxY_JD0,30605
|
|
27
27
|
pygeodesy/etm.py,sha256=y3dAqS-iWnbWzmsu4zB7kryAp_I17XEdzNRRk0klTww,44696
|
|
28
|
-
pygeodesy/fmath.py,sha256=
|
|
29
|
-
pygeodesy/formy.py,sha256=
|
|
28
|
+
pygeodesy/fmath.py,sha256=REWFTf7IxoW3OhVcKg5M0Lpdx7cj3bDkaGDOb9VvNPE,33726
|
|
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=
|
|
32
|
+
pygeodesy/fsums.py,sha256=YEPE4vT24Y-6gTuvm2tsFD0W1EtXqTUHn3BtfCm3Mm4,80841
|
|
33
|
+
pygeodesy/gars.py,sha256=KRlyZUv1euEl7ZkDYSZG913GAfFMRG2m2hp37ObYY_Y,11829
|
|
34
|
+
pygeodesy/geodesici.py,sha256=rbHsTKnne7atLGGumPOm7HPogM_ugKnohFmY6uSft6g,74966
|
|
35
35
|
pygeodesy/geodesicw.py,sha256=oEs96Epw839BH3rVpxVdpXuQRBudbOftUsSBUid8fcc,28710
|
|
36
|
-
pygeodesy/geodsolve.py,sha256=
|
|
37
|
-
pygeodesy/geohash.py,sha256=
|
|
38
|
-
pygeodesy/geoids.py,sha256=
|
|
36
|
+
pygeodesy/geodsolve.py,sha256=_Vlb1c3j8n7dW99AinJ2HA_DiV4YnlRjbBY7Ha8AvEk,23553
|
|
37
|
+
pygeodesy/geohash.py,sha256=CHJUhvV26PLpjkaTwF4fS42ZRSSsnpH2zyGvadPxqG4,40201
|
|
38
|
+
pygeodesy/geoids.py,sha256=EWKfkmdl2GSL0eQCr79ndDwSGXYOPChGokxocCy7YuM,82371
|
|
39
39
|
pygeodesy/hausdorff.py,sha256=-aKtRbMefDSoIk4V3wCvNrXPZ7Bqk1P6-XuGuI7o8Zc,34770
|
|
40
|
-
pygeodesy/heights.py,sha256=
|
|
41
|
-
pygeodesy/internals.py,sha256=
|
|
42
|
-
pygeodesy/interns.py,sha256=
|
|
40
|
+
pygeodesy/heights.py,sha256=Gv3b1xC7I0tBvTO-DdmWVW8A3ZV3RKxY3jveUUZso38,42909
|
|
41
|
+
pygeodesy/internals.py,sha256=za7RSqQ9Vbgx-cpjrtVE-GKsZpS8zym-YYomhGk8tSk,21345
|
|
42
|
+
pygeodesy/interns.py,sha256=USTdoOChgxRk9nITMBRMC9pgtrui84aISS3KYwSIYMk,23221
|
|
43
43
|
pygeodesy/iters.py,sha256=xPH0ytomvJeKHu717Fjzi3QbRrEikO6n7vqkY_IDz1k,20311
|
|
44
|
-
pygeodesy/karney.py,sha256=
|
|
44
|
+
pygeodesy/karney.py,sha256=y9xMgJX0W0tLrQQnO6c9-It7QgDSOcd4Irvs2D68vBI,38035
|
|
45
45
|
pygeodesy/ktm.py,sha256=EJ52Llx5DPFNNl2DEH8rL1-k955qOxYZLAg4-UpnlbA,27246
|
|
46
|
-
pygeodesy/latlonBase.py,sha256=
|
|
47
|
-
pygeodesy/lazily.py,sha256=
|
|
46
|
+
pygeodesy/latlonBase.py,sha256=kCK6IcVg4oeGPYkIU0rgKbZLCRo36wC9NtY5OKBlpeQ,79106
|
|
47
|
+
pygeodesy/lazily.py,sha256=LwXhg41ElZ0Qpx7y0nYatcsP_1APTfpsOPaeEnjXjA8,47195
|
|
48
48
|
pygeodesy/lcc.py,sha256=oDooTzFHnqsMtSKmmmfEbypHpdlPltfo7Mt0pAO4-_A,25669
|
|
49
|
-
pygeodesy/ltp.py,sha256=
|
|
50
|
-
pygeodesy/ltpTuples.py,sha256=
|
|
49
|
+
pygeodesy/ltp.py,sha256=ZMdfJHLKeDHSoymmjWfoAZTtrdoADf0O6WccRf53L2w,50745
|
|
50
|
+
pygeodesy/ltpTuples.py,sha256=oNTxtjxmHveMDQvPdQCHl-JzSJJGb1jFRrF8SEG_Ojw,58480
|
|
51
51
|
pygeodesy/mgrs.py,sha256=w50bvM3qDtHDBDBRQ_EgZnPn7vxVXgoFnleeZgefkVk,29679
|
|
52
|
-
pygeodesy/named.py,sha256=
|
|
53
|
-
pygeodesy/namedTuples.py,sha256=
|
|
52
|
+
pygeodesy/named.py,sha256=CLaiCzPKiua3E4xMD8jkZna2pIHWPXUrmRSzFgU1YRo,52303
|
|
53
|
+
pygeodesy/namedTuples.py,sha256=e0rV1Zb2tbx8fztXcSkUFsRTmZtye8B5i_Hi4vBUndU,28758
|
|
54
54
|
pygeodesy/nvectorBase.py,sha256=rClYu26Bof9DsM1F60i0eccktNo8xYA_vkThwoY7N4o,28644
|
|
55
|
-
pygeodesy/osgr.py,sha256=
|
|
56
|
-
pygeodesy/points.py,sha256=
|
|
55
|
+
pygeodesy/osgr.py,sha256=3Qon_oWuVrIb1vYnd3ae3L5MDkjp_tngyVdiYHuL4to,30821
|
|
56
|
+
pygeodesy/points.py,sha256=e8ri5Pu5snpN4P6pPbGxmW_yx4-ApD9mOBuR0REoflA,64409
|
|
57
57
|
pygeodesy/props.py,sha256=2vQD2PoHy1f7osxEf9H0hNvg7gDPd0t8rCy-EuezcI4,23725
|
|
58
|
-
pygeodesy/resections.py,sha256=
|
|
59
|
-
pygeodesy/simplify.py,sha256=
|
|
58
|
+
pygeodesy/resections.py,sha256=fFthuI9EoO4WdY25Y_rCDN56gz2mPFsUypR3oGlh8Ks,43556
|
|
59
|
+
pygeodesy/simplify.py,sha256=vkOtO478sOjZHZBuSFvCaRh72qSDQuzXLQpMK1LKyYI,25232
|
|
60
60
|
pygeodesy/solveBase.py,sha256=oI_-FFjSPI1_yQ598hF6HFKUa4tLsAfbnWtKoQ-TJgE,19206
|
|
61
|
-
pygeodesy/sphericalBase.py,sha256=
|
|
61
|
+
pygeodesy/sphericalBase.py,sha256=bDVuArfePzqcothiTTkyisUGrMDTallXKROjihotcn8,32239
|
|
62
62
|
pygeodesy/sphericalNvector.py,sha256=MiWcCy5CdvXsCa3963GeUMEnSYGhBiXzkoAEX_tGX4Q,56952
|
|
63
|
-
pygeodesy/sphericalTrigonometry.py,sha256=
|
|
64
|
-
pygeodesy/streprs.py,sha256=
|
|
63
|
+
pygeodesy/sphericalTrigonometry.py,sha256=F84lPOSLj4Z2-f8xMjpqvTISuBpsjFwdF8fkuaEi5Hs,64077
|
|
64
|
+
pygeodesy/streprs.py,sha256=1szfCzFlVgsyJ0H_QFGtzyMfOJpyIZNfj34qvWNACM4,23041
|
|
65
65
|
pygeodesy/trf.py,sha256=CRFHmu0lFNtc41fddXavEkHmgnTFWEqR4RTFodcFKsw,119022
|
|
66
|
-
pygeodesy/triaxials.py,sha256=
|
|
67
|
-
pygeodesy/units.py,sha256=
|
|
68
|
-
pygeodesy/unitsBase.py,sha256=
|
|
66
|
+
pygeodesy/triaxials.py,sha256=ZFcGukYKd5z-N18MWVTiu2iuVl3NmYmkzaz63DcOxAQ,62555
|
|
67
|
+
pygeodesy/units.py,sha256=gHN-uzsOwIYjyhtWs0th0VHNY-fOiUiZo9G1cZi0oXg,35272
|
|
68
|
+
pygeodesy/unitsBase.py,sha256=ZZ-VDntCOTjSerQJf9aaLE_J0lozrpmUhynRBaCtg24,14060
|
|
69
69
|
pygeodesy/ups.py,sha256=zapIvzoVuj_FDGC6sr8O8ynPhfqXwUg-EFCVnJdM9Eo,23329
|
|
70
70
|
pygeodesy/utily.py,sha256=Zb6L9unzHHhp67znmQLLdizvyX6p4eczR1PDtcyWH-s,36189
|
|
71
71
|
pygeodesy/utm.py,sha256=lCp7mNEaJNrAYnbdPaNUKkhbsX_GdssTEkp68uYdMLI,31091
|
|
72
72
|
pygeodesy/utmups.py,sha256=g2Z_aEOt6fhV9f4fASlW4_K_O_P4zBsBbWfQV11mIKo,13196
|
|
73
|
-
pygeodesy/utmupsBase.py,sha256=
|
|
74
|
-
pygeodesy/vector2d.py,sha256=
|
|
75
|
-
pygeodesy/vector3d.py,sha256=
|
|
76
|
-
pygeodesy/vector3dBase.py,sha256=
|
|
77
|
-
pygeodesy/webmercator.py,sha256=
|
|
78
|
-
pygeodesy/wgrs.py,sha256=
|
|
73
|
+
pygeodesy/utmupsBase.py,sha256=S4s1Sehj9jSMy-XRxwtwVstG3QhyVt924V0FHu0cPIk,18730
|
|
74
|
+
pygeodesy/vector2d.py,sha256=O9a3uRIREL2k7G-pnpuacjBcAlKg75MnokjtfJB-nBs,39659
|
|
75
|
+
pygeodesy/vector3d.py,sha256=5oqlXXsm_YNGEMkVyKfmyp3qdMRxm-gzlK9V0_EK9hE,42687
|
|
76
|
+
pygeodesy/vector3dBase.py,sha256=UOy6W-r8nTZTOMvxUgFQN6cFQo9H4zw0efqtcSpyy8s,36154
|
|
77
|
+
pygeodesy/webmercator.py,sha256=fFQtTxIsjOE35_nX_mAgFv1Eov7AdcsCBjT2ONm3qmI,14934
|
|
78
|
+
pygeodesy/wgrs.py,sha256=6dO31uMKF-t-uQz58hdutilE2A5msOs5Bybq5Uq3qgk,15453
|
|
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=BSHR0M3hQBR1KjF_BUJHrNzGXr2PblYXUQsMD5L1Kcc,10468
|
|
87
87
|
pygeodesy/auxilats/auxLat.py,sha256=QeTx8dqov1NwNSEam9VC_wq36nRCUpbJpY4hH1NvyNg,32493
|
|
88
88
|
pygeodesy/auxilats/auxily.py,sha256=evkD4NGJPGdy3QtP7zI76IY2uDTGc1YjsVG4-BwzZIg,8235
|
|
89
89
|
pygeodesy/deprecated/__init__.py,sha256=cBYqbh5Njkd5SnaJDaMUP6PL66HfLWii_JoLjnKfnP4,2815
|
|
@@ -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=
|
|
106
|
-
pygeodesy/geodesicx/gxarea.py,sha256
|
|
105
|
+
pygeodesy/geodesicx/gx.py,sha256=yeNpMQbw_uWfs4KOQX8RMAQt6WNsG3zsGgmZRVgbQIk,60612
|
|
106
|
+
pygeodesy/geodesicx/gxarea.py,sha256=Yo2kj6IhrFWHHe3D52_5AASNaGBoujclG8NBBmPGCZA,19422
|
|
107
107
|
pygeodesy/geodesicx/gxbases.py,sha256=Awt9zc1lyPS0vp4df2u4H_rhMeFu1pJaZPhb1iMoc-Q,5693
|
|
108
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=d4RujlW8B7BFAHlrwfj2Bup-uXZZTpgKWgI2JJBqUGc,24059
|
|
114
|
+
PyGeodesy-24.8.24.dist-info/METADATA,sha256=UTCfv5UAppB-IyUdVou09q_x3lSpIdeVE-_djSIMk6I,19773
|
|
115
|
+
PyGeodesy-24.8.24.dist-info/WHEEL,sha256=fS9sRbCBHs7VFcwJLnLXN1MZRR0_TVTxvXKzOnaSFs8,110
|
|
116
|
+
PyGeodesy-24.8.24.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
|
|
117
|
+
PyGeodesy-24.8.24.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) 2005-
|
|
10
|
+
Transcoded from U{JavaScript originals<https://GitHub.com/ChrisVeness/geodesy>} by I{Chris Veness (C) 2005-2024}
|
|
11
11
|
and from several U{C++ classes<https://GeographicLib.SourceForge.io/C++/doc/annotated.html>} by I{Charles F. F.
|
|
12
|
-
Karney (C) 2008-
|
|
12
|
+
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}}
|
|
@@ -17,7 +17,7 @@ and a geocentric B{C{Cartesian}} class with methods and functions to compute dis
|
|
|
17
17
|
forward and reverse azimuth, initial and final bearing, intermediate and nearest points, intersections of geodesic,
|
|
18
18
|
great circle and rhumb lines, circle intersections and secants, U{3-point resections
|
|
19
19
|
<https://WikiPedia.org/wiki/Position_resection_and_intersection>}, triangulation, trilateration (by intersection,
|
|
20
|
-
by overlap and in
|
|
20
|
+
by overlap and in 3-D), conversions and unrolling, among other things. For more information and further details see
|
|
21
21
|
the U{documentation<https://mrJean1.GitHub.io/PyGeodesy>}, the descriptions of U{Latitude/Longitude
|
|
22
22
|
<https://www.Movable-Type.co.UK/scripts/latlong.html>}, U{Vincenty
|
|
23
23
|
<https://www.Movable-Type.co.UK/scripts/latlong-vincenty.html>} and U{Vector-based
|
|
@@ -41,12 +41,11 @@ Frames) and modules to encode and decode U{EPSG<https://EPSG.org>}, U{Geohashes
|
|
|
41
41
|
<https://WikiPedia.org/wiki/World_Geographic_Reference_System>} and U{Garefs (GARS)
|
|
42
42
|
<https://WikiPedia.org/wiki/Global_Area_Reference_System>}.
|
|
43
43
|
|
|
44
|
-
Other modules provide U{Albers equal-area
|
|
45
|
-
C++/doc/classGeographicLib_1_1AlbersEqualArea.html>} projections, U{equidistant
|
|
46
|
-
<https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1AzimuthalEquidistant.html>}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
U{Cohen-Sutherland<https://WikiPedia.org/wiki/Cohen-Sutherland_algorithm>},
|
|
44
|
+
Other modules provide U{Albers equal-area
|
|
45
|
+
<https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1AlbersEqualArea.html>} projections, U{equidistant
|
|
46
|
+
<https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1AzimuthalEquidistant.html>} and other I{azimuthal}
|
|
47
|
+
projections, Lambert I{conformal conic} projections and positions, functions to clip paths or polygons of C{LatLon}
|
|
48
|
+
points using the U{Cohen-Sutherland<https://WikiPedia.org/wiki/Cohen-Sutherland_algorithm>},
|
|
50
49
|
U{Forster-Hormann-Popa<https://www.ScienceDirect.com/science/article/pii/S259014861930007X>},
|
|
51
50
|
U{Greiner-Hormann<http://www.inf.USI.CH/hormann/papers/Greiner.1998.ECO.pdf>},
|
|
52
51
|
U{Liang-Barsky<https://www.CS.Helsinki.FI/group/goa/viewing/leikkaus/intro.html>} and
|
|
@@ -99,11 +98,10 @@ and L{GnomonicGeodSolve} depend on I{Karney}'s C++ utility U{GeodSolve
|
|
|
99
98
|
<https://GeographicLib.SourceForge.io/C++/doc/GeodSolve.1.html>} to be executable and set with
|
|
100
99
|
env variable C{PYGEODESY_GEODSOLVE} or with property L{Ellipsoid.geodsolve}.
|
|
101
100
|
|
|
102
|
-
Class L{Intersectool}
|
|
101
|
+
Class L{Intersectool} in module L{geodesici} needs I{Karney}'s C++ utility U{IntersectTool
|
|
103
102
|
<https://GeographicLib.SourceForge.io/C++/doc/IntersectTool.1.html>} to be executable and set with
|
|
104
103
|
env variable C{PYGEODESY_INTERSECTTOOL}.
|
|
105
104
|
|
|
106
|
-
|
|
107
105
|
To compare C{MGRS} results from modules L{mgrs} and C{testMgrs} with I{Karney}'s C++ utility
|
|
108
106
|
U{GeoConvert<https://GeographicLib.SourceForge.io/C++/doc/GeoConvert.1.html>}, the latter must
|
|
109
107
|
be executable and set with env variable C{PYGEODESY_GEOCONVERT}.
|
|
@@ -124,7 +122,8 @@ C{epydoc --html --no-private --no-source --name=PyGeodesy --url=... -v pygeodesy
|
|
|
124
122
|
Tests
|
|
125
123
|
=====
|
|
126
124
|
|
|
127
|
-
The tests ran with Python 3.13.
|
|
125
|
+
The tests ran with Python 3.13.0rc1, Python 3.12.5 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0,
|
|
126
|
+
U{numpy<https://PyPI.org/project/numpy>} 2.1.0, U{scipy<https://PyPI.org/project/scipy>} 1.14.1,
|
|
128
127
|
U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3,
|
|
129
128
|
U{IntersectTool<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3 and
|
|
130
129
|
U{RhumbSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3),
|
|
@@ -139,19 +138,19 @@ U{numpy<https://PyPI.org/project/numpy>} 1.16.6, U{scipy<https://PyPI.org/projec
|
|
|
139
138
|
U{GeoConvert<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3,
|
|
140
139
|
U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3,
|
|
141
140
|
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.
|
|
141
|
+
U{RhumbSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3), all in 64-bit on macOS 14.6.1 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.6.0 using Python 3.12.
|
|
147
|
+
Test coverage has been measured with U{coverage<https://PyPI.org/project/coverage>} 7.6.0 using Python 3.12.5,
|
|
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
|
-
Python 3.13.
|
|
150
|
+
Python 3.13.0rc1, 3.12.5, 3.11.5 and 3.10.8 run on Apple M1 Silicon (C{arm64}), I{natively}. Python 2.7.18 runs on
|
|
152
151
|
Intel (C{x86_64}) or Intel I{emulation} ("C{arm64_x86_64}", see function L{machine<pygeodesy.machine>}).
|
|
153
152
|
|
|
154
|
-
The tests also ran with Python 3.12.
|
|
153
|
+
The tests also ran with Python 3.12.5 (and U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on U{Debian
|
|
155
154
|
12<https://Cirrus-CI.com/github/mrJean1/PyGeodesy/master>} in 64-bit only, with Python 3.12.3 (and
|
|
156
155
|
U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on U{Windows
|
|
157
156
|
2019Server<https://CI.AppVeyor.com/project/mrJean1/pygeodesy>} in 64-bit only and with Python 2.7.18 (and
|
|
@@ -161,7 +160,7 @@ U{geographiclib<https://PyPI.org/project/geographiclib>} 1.52) on U{Windows
|
|
|
161
160
|
A single-File and single-Directory application with C{pygeodesy} has been bundled using U{PyInstaller
|
|
162
161
|
<https://PyPI.org/project/pyinstaller>} 3.4 and 64-bit Python 3.7.3 on macOS 10.13.6 High Sierra.
|
|
163
162
|
|
|
164
|
-
Previously, the tests were run with Python 3.12.0-
|
|
163
|
+
Previously, the tests were run with Python 3.12.0-4, 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
|
|
165
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
|
|
166
165
|
2.7.13) (and U{geographiclib <https://PyPI.org/project/geographiclib>} 1.52, U{numpy<https://PyPI.org/project/numpy>}
|
|
167
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,
|
|
@@ -170,7 +169,7 @@ Previously, the tests were run with Python 3.12.0-3, 3.11.2-4, 3.10.1-7, 3.9.6,
|
|
|
170
169
|
1.16.5, 1.16.2, 1.15.2, 1.14.0, 1.13.1, 1.8.0rc1 or 1.6.2 and U{scipy<https://PyPI.org/project/scipy>} 1.5.0), U{PyPy
|
|
171
170
|
<https://PyPy.org>} 7.3.0 (Python 2.7.13 and 3.6.9), U{PyPy<https://PyPy.org>} 6.0.0 (Python 2.7.13 and 3.5.3)
|
|
172
171
|
and U{Intel-Python<https://software.Intel.com/en-us/distribution-for-python>} 3.5.3 (and U{numpy
|
|
173
|
-
<https://PyPI.org/project/numpy>} 1.11.3) on macOS 14.0-
|
|
172
|
+
<https://PyPI.org/project/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
|
|
174
173
|
Big Sur (aka 10.16), 10.15.3, 10.15.5-7 Catalina, 10.14 Mojave, 10.13.6 High Sierra and 10.12 Sierra, MacOS X
|
|
175
174
|
10.11 El Capitan and/or MacOS X 10.10 Yosemite, with U{Pythonista<https://OMZ-Software.com/pythonista>}3.2 (with
|
|
176
175
|
geographiclib 1.50 or 1.49 and numpy 1.8.0) on iOS 14.4.2, 11.4.1, 12.0-3 on iPad4, iPhone6, iPhone10 and/or
|
|
@@ -185,7 +184,7 @@ All Python source code has been statically U{checked<https://GitHub.com/ActiveSt
|
|
|
185
184
|
Python/546532_PyChecker_postprocessor>} with U{PyChecker<https://PyPI.org/project/pychecker>}, U{PyFlakes
|
|
186
185
|
<https://PyPI.org/project/pyflakes>}, U{PyCodeStyle<https://PyPI.org/project/pycodestyle>} (formerly Pep8) and
|
|
187
186
|
U{McCabe<https://PyPI.org/project/mccabe>} using Python 2.7.18 and with U{Flake8<https://PyPI.org/project/flake8>}
|
|
188
|
-
using Python 3.11.5, both in 64-bit on macOS 14.
|
|
187
|
+
using Python 3.11.5, both in 64-bit on macOS 14.6.1 Sonoma.
|
|
189
188
|
|
|
190
189
|
For a summary of all I{Karney}-based functionality in C{pygeodesy}, see module U{karney
|
|
191
190
|
<https://mrJean1.GitHub.io/PyGeodesy/docs/pygeodesy.karney-module.html>}.
|
|
@@ -211,6 +210,7 @@ The following environment variables are observed by C{PyGeodesy}:
|
|
|
211
210
|
|
|
212
211
|
and these to control standard or I{named} C{repr}esentations:
|
|
213
212
|
|
|
213
|
+
- C{PYGEODESY_AZIMUTH_STD_REPR} - see method L{Azimuth<pygeodesy.Azimuth>}C{.__repr__}.
|
|
214
214
|
- C{PYGEODESY_BEARING_STD_REPR} - see method L{Bearing<pygeodesy.Bearing>}C{.__repr__}.
|
|
215
215
|
- C{PYGEODESY_BOOL_STD_REPR} - see method L{Bool<pygeodesy.Bool>}C{.__repr__}.
|
|
216
216
|
- C{PYGEODESY_DEGREES_STD_REPR} - see method L{Degrees<pygeodesy.Degrees>}C{.__repr__}.
|
|
@@ -338,7 +338,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.}
|
|
|
338
338
|
@var S_MIN: Minutes symbol, default C{"′"} aka I{PRIME}
|
|
339
339
|
@var S_SEC: Seconds symbol, default C{"″"} aka I{DOUBLE_PRIME}
|
|
340
340
|
@var S_RAD: Radians symbol, default C{""} aka L{NN<pygeodesy.NN>}
|
|
341
|
-
@var S_DMS: If C{True} include, otherwise cancel all DMS symbols, default C{True}.
|
|
341
|
+
@var S_DMS: If C{True}, include, otherwise cancel all DMS symbols, default C{True}.
|
|
342
342
|
@var S_SEP: Separator between C{deg°|min′|sec″|suffix}, default C{""} aka L{NN<pygeodesy.NN>}
|
|
343
343
|
|
|
344
344
|
@var Conics: Registered, predefined conics (C{enum-like}).
|
|
@@ -491,10 +491,10 @@ if _init__all__ and not _lazy_import2: # import and set __all__
|
|
|
491
491
|
# from pygeodesy.ellipsoidalGeodSolve import * # PYCHOK __(_)__
|
|
492
492
|
# from pygeodesy.ellipsoidalKarney import * # PYCHOK __(_)__
|
|
493
493
|
# from pygeodesy.ellipsoidalNvector import * # PYCHOK __(_)__
|
|
494
|
-
from pygeodesy.ellipsoidalVincenty import
|
|
494
|
+
from pygeodesy.ellipsoidalVincenty import * # PYCHOK __(_)__
|
|
495
495
|
from pygeodesy.ellipsoids import * # PYCHOK __all__
|
|
496
496
|
from pygeodesy.elliptic import * # PYCHOK __all__
|
|
497
|
-
from pygeodesy.epsg import
|
|
497
|
+
from pygeodesy.epsg import * # PYCHOK __all__
|
|
498
498
|
from pygeodesy.etm import * # PYCHOK __all__
|
|
499
499
|
from pygeodesy.errors import * # PYCHOK __all__
|
|
500
500
|
from pygeodesy.fmath import * # PYCHOK __all__
|
|
@@ -502,13 +502,12 @@ if _init__all__ and not _lazy_import2: # import and set __all__
|
|
|
502
502
|
from pygeodesy.frechet import * # PYCHOK __all__
|
|
503
503
|
from pygeodesy.fstats import * # PYCHOK __all__
|
|
504
504
|
from pygeodesy.fsums import * # PYCHOK __all__
|
|
505
|
-
from pygeodesy.gars import
|
|
505
|
+
from pygeodesy.gars import * # PYCHOK __all__
|
|
506
506
|
from pygeodesy.geodesici import * # PYCHOK __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__
|
|
@@ -550,7 +549,7 @@ if _init__all__ and not _lazy_import2: # import and set __all__
|
|
|
550
549
|
from pygeodesy.vector3d import * # PYCHOK __all__
|
|
551
550
|
from pygeodesy.vector3dBase import * # PYCHOK __(_)__ INTERNAL
|
|
552
551
|
from pygeodesy.webmercator import * # PYCHOK __all__
|
|
553
|
-
from pygeodesy.wgrs import
|
|
552
|
+
from pygeodesy.wgrs import * # PYCHOK __all__
|
|
554
553
|
|
|
555
554
|
def _all(globalocals):
|
|
556
555
|
from pygeodesy.internals import _headof, _DOT_ # PYCHOK expected
|
|
@@ -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.24'
|
|
600
599
|
# see setup.py for similar logic
|
|
601
600
|
version = _DOT_(*_version2(__version__, n=3))
|
|
602
601
|
|
pygeodesy/auxilats/auxAngle.py
CHANGED
|
@@ -32,7 +32,7 @@ from pygeodesy.utily import atan2d, sincos2, sincos2d
|
|
|
32
32
|
from math import asinh, atan2, copysign, degrees, fabs, radians, sinh
|
|
33
33
|
|
|
34
34
|
__all__ = ()
|
|
35
|
-
__version__ = '24.07.
|
|
35
|
+
__version__ = '24.07.25'
|
|
36
36
|
|
|
37
37
|
_0_INF_NAN_NINF = (0, _0_0) + _INF_NAN_NINF
|
|
38
38
|
_MAX_2 = MAX * _0_5 # PYCHOK used!
|
|
@@ -278,7 +278,7 @@ class AuxAngle(_Named):
|
|
|
278
278
|
def _RhumbAux(self):
|
|
279
279
|
'''(INTERNAL) Import the L{RhumbAux} class, I{once}.
|
|
280
280
|
'''
|
|
281
|
-
return _MODS.rhumb.aux_.RhumbAux # overwrite
|
|
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
|
@@ -24,7 +24,7 @@ from pygeodesy.karney import _2cos2x, _ALL_DOCS
|
|
|
24
24
|
from pygeodesy.props import property_RO, property_ROver
|
|
25
25
|
|
|
26
26
|
__all__ = ()
|
|
27
|
-
__version__ = '24.
|
|
27
|
+
__version__ = '24.08.13'
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class AuxDST(object):
|
|
@@ -78,7 +78,7 @@ class AuxDST(object):
|
|
|
78
78
|
def _fft_numpy(self):
|
|
79
79
|
'''(INTERNAL) Get the C{numpy.fft} module, I{once}.
|
|
80
80
|
'''
|
|
81
|
-
return _xnumpy(AuxDST, 1, 16).fft # overwrite
|
|
81
|
+
return _xnumpy(AuxDST, 1, 16).fft # overwrite property_ROver
|
|
82
82
|
|
|
83
83
|
def _fft_real(self, data):
|
|
84
84
|
'''(INTERNAL) NumPy's I{kissfft}-like C{transform_real} function,
|
|
@@ -92,7 +92,7 @@ class AuxDST(object):
|
|
|
92
92
|
|
|
93
93
|
@arg data: Elements DST-III[0:N+1] or DST-IV[0:N] (C{float}[])
|
|
94
94
|
with DST_III[0] = 0.
|
|
95
|
-
@arg cIV: If C{True} DST-IV, otherwise DST-III.
|
|
95
|
+
@arg cIV: If C{True}, DST-IV, otherwise DST-III.
|
|
96
96
|
|
|
97
97
|
@return: FFTransforms (C{float}[0:N]).
|
|
98
98
|
'''
|
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
|
|
pygeodesy/basics.py
CHANGED
|
@@ -37,7 +37,7 @@ from math import copysign as _copysign
|
|
|
37
37
|
import inspect as _inspect
|
|
38
38
|
|
|
39
39
|
__all__ = _ALL_LAZY.basics
|
|
40
|
-
__version__ = '24.
|
|
40
|
+
__version__ = '24.08.13'
|
|
41
41
|
|
|
42
42
|
_below_ = 'below'
|
|
43
43
|
_list_tuple_types = (list, tuple)
|
|
@@ -733,7 +733,7 @@ def _xcopy(obj, deep=False):
|
|
|
733
733
|
'''(INTERNAL) Copy an object, shallow or deep.
|
|
734
734
|
|
|
735
735
|
@arg obj: The object to copy (any C{type}).
|
|
736
|
-
@kwarg deep: If C{True} make a deep, otherwise
|
|
736
|
+
@kwarg deep: If C{True}, make a deep, otherwise
|
|
737
737
|
a shallow copy (C{bool}).
|
|
738
738
|
|
|
739
739
|
@return: The copy of B{C{obj}}.
|
|
@@ -745,7 +745,7 @@ def _xdup(obj, deep=False, **items):
|
|
|
745
745
|
'''(INTERNAL) Duplicate an object, replacing some attributes.
|
|
746
746
|
|
|
747
747
|
@arg obj: The object to copy (any C{type}).
|
|
748
|
-
@kwarg deep: If C{True} copy deep, otherwise shallow.
|
|
748
|
+
@kwarg deep: If C{True}, copy deep, otherwise shallow (C{bool}).
|
|
749
749
|
@kwarg items: Attributes to be changed (C{any}).
|
|
750
750
|
|
|
751
751
|
@return: A duplicate of B{C{obj}} with modified
|