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.
Files changed (57) hide show
  1. {PyGeodesy-24.7.24.dist-info → PyGeodesy-24.8.24.dist-info}/METADATA +20 -19
  2. {PyGeodesy-24.7.24.dist-info → PyGeodesy-24.8.24.dist-info}/RECORD +57 -57
  3. {PyGeodesy-24.7.24.dist-info → PyGeodesy-24.8.24.dist-info}/WHEEL +1 -1
  4. pygeodesy/__init__.py +26 -27
  5. pygeodesy/auxilats/auxAngle.py +2 -2
  6. pygeodesy/auxilats/auxDST.py +3 -3
  7. pygeodesy/azimuthal.py +4 -4
  8. pygeodesy/basics.py +3 -3
  9. pygeodesy/cartesianBase.py +6 -6
  10. pygeodesy/constants.py +11 -11
  11. pygeodesy/css.py +5 -5
  12. pygeodesy/ellipsoidalBase.py +18 -15
  13. pygeodesy/ellipsoidalExact.py +2 -2
  14. pygeodesy/ellipsoidalGeodSolve.py +2 -2
  15. pygeodesy/ellipsoidalKarney.py +2 -2
  16. pygeodesy/ellipsoidalNvector.py +2 -2
  17. pygeodesy/ellipsoidalVincenty.py +7 -6
  18. pygeodesy/ellipsoids.py +3 -3
  19. pygeodesy/epsg.py +3 -3
  20. pygeodesy/fmath.py +2 -1
  21. pygeodesy/formy.py +2 -2
  22. pygeodesy/fsums.py +4 -4
  23. pygeodesy/gars.py +66 -58
  24. pygeodesy/geodesici.py +4 -10
  25. pygeodesy/geodesicx/gx.py +3 -3
  26. pygeodesy/geodesicx/gxarea.py +3 -3
  27. pygeodesy/geodsolve.py +3 -3
  28. pygeodesy/geohash.py +491 -267
  29. pygeodesy/geoids.py +298 -316
  30. pygeodesy/heights.py +176 -194
  31. pygeodesy/internals.py +39 -6
  32. pygeodesy/interns.py +2 -3
  33. pygeodesy/karney.py +2 -2
  34. pygeodesy/latlonBase.py +14 -8
  35. pygeodesy/lazily.py +22 -21
  36. pygeodesy/ltp.py +6 -7
  37. pygeodesy/ltpTuples.py +12 -6
  38. pygeodesy/named.py +5 -4
  39. pygeodesy/namedTuples.py +14 -1
  40. pygeodesy/osgr.py +7 -7
  41. pygeodesy/points.py +2 -2
  42. pygeodesy/resections.py +7 -7
  43. pygeodesy/rhumb/solve.py +3 -3
  44. pygeodesy/simplify.py +10 -10
  45. pygeodesy/sphericalBase.py +3 -3
  46. pygeodesy/sphericalTrigonometry.py +2 -2
  47. pygeodesy/streprs.py +3 -3
  48. pygeodesy/triaxials.py +210 -204
  49. pygeodesy/units.py +36 -19
  50. pygeodesy/unitsBase.py +4 -4
  51. pygeodesy/utmupsBase.py +3 -3
  52. pygeodesy/vector2d.py +158 -51
  53. pygeodesy/vector3d.py +13 -52
  54. pygeodesy/vector3dBase.py +81 -63
  55. pygeodesy/webmercator.py +3 -3
  56. pygeodesy/wgrs.py +109 -101
  57. {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.7.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 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
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-2022* and from several `C++
40
- classes`_ by *Charles F.F. Karney (C) 2008-2023* and published under the same `MIT License`_.
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.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.
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.0b4, 3.12.4, 3.11.5 and 3.10.8 run on Apple M1 Silicon (``arm64``), *natively*. Python 2.7.18
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.4, 3.11.5 and 3.10.8. The complete
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.4 (and geographiclib_ 2.0) on `Debian 12`_ in 64-bit only and with
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-3, 3.11.2-4, 3.10.1-7, 3.9.1, 3.8.7, 3.7.1, 2.7.15, PyPy_
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-4.1 Sonoma, 13.0-5.2 Ventura, 12.1-6 Monterey, 11.0-5.2-6.1 Big
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.5 Sonoma.
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: July 24, 2024.*
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=uYrhqWUaNgzSKAETWoDZc9AqmYmIDtug9wVvfyEH_Aw,42191
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=5tMMKlzKyfGnreOHChrquBi241ZvIOBTUn_pbZCIJWc,50231
6
- pygeodesy/basics.py,sha256=mSim8pSrRLMFYTnTrJDvkthfrw2MWBmMya3hOHWX4co,29785
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=nn2JNYbPJhL0lzkUvDEQDR_omNgmMIYuS1nCwYtlXnQ,46927
8
+ pygeodesy/cartesianBase.py,sha256=jzPJR4_3Yp5jmK7A5inGOXskDebs7YMdjQzINHjzkP8,46935
9
9
  pygeodesy/clipy.py,sha256=3ysIEWQ89HjvLnSlZm0nZAt9EN5AQxIs1sLLM8yF9zM,27675
10
- pygeodesy/constants.py,sha256=-weWOuHwE-qI6pYRLcTucI0KNcNJm6vPNzxwrJzACKs,19192
11
- pygeodesy/css.py,sha256=B_EKq757XdQSUy83HAxEf3H5Iyd7mw3DbJB5Wi3obAc,25651
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=olFcHvMeoW8Z_0T-Bn3XOpGGatoluaOZ50Fzm-ByAVg,55126
16
+ pygeodesy/ellipsoidalBase.py,sha256=IDu0-cKGhkCk3Aj16DJXt2gxjGYsFcjSTrvwG5GbATs,55385
17
17
  pygeodesy/ellipsoidalBaseDI.py,sha256=OxbSBntV9xiOgsb-0un0cUYIVoPiIiH-lt3baBkbaS8,38400
18
- pygeodesy/ellipsoidalExact.py,sha256=GnSMNVnSG4VyORMcQZKxpA-R6HA0gWbTBkEIg1qrVaE,16945
19
- pygeodesy/ellipsoidalGeodSolve.py,sha256=CqdNNqdwuUNIwZvYVMsk3rnW0U3KMgEoSQj_VIcFBEI,16665
20
- pygeodesy/ellipsoidalKarney.py,sha256=XIvmSmMt0CGd0LtXxcDHX3KXXR2Mn8cRukefNQErJFU,18720
21
- pygeodesy/ellipsoidalNvector.py,sha256=BbCWTZr9he3ayC8YEtLRXWVJ-g4HqHBuTVJsM33JKhw,30038
22
- pygeodesy/ellipsoidalVincenty.py,sha256=gsUFMKgqMZKT02jDm7TEJ_jSHX8d-KJCz91iCfku5kg,25951
23
- pygeodesy/ellipsoids.py,sha256=GbLZPLkSYGAE7JlGFhhZ4inhH501yNJ60jpMM_cVoNA,108003
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=oWHX_QVChE5roktAyXUmPmX49XHiryYmXTHxQzrAprE,8222
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=EOHD0uZ8VULZtXAk8tVeuPaSTozPDCN8GJcemCo-jqg,33709
29
- pygeodesy/formy.py,sha256=ZpPaQBQvaFiA-UcrgaiiV_iGxlfTqNdlR1Ngx-1oinY,75032
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=VbI_1i-0BCeRpPnG58EDPVKossR7JORZzFXEspoaiJU,80839
33
- pygeodesy/gars.py,sha256=gJKZuGPKw8rlRLx1hywZrpGucpHXLvMe8fr8izgSW2s,11370
34
- pygeodesy/geodesici.py,sha256=U-hxztCvASJTnvDJxMI2jgeZOIwTalX-xFsfJWWG-Wg,75023
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=M1kU9HOKnvf8agv_V4fN0QcNh40N6dExuCd0pPTKsoM,23540
37
- pygeodesy/geohash.py,sha256=rOOGOHcTnxIPX2p5ieA1gQ_ZcRlUxjIcroPHa7a85ak,31876
38
- pygeodesy/geoids.py,sha256=PVTYfSe67SRZtII9Qi1FXTDtRPoabwEtRbFXkgiKjdI,80639
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=9kvyJj0-D3syZMdHNDXIfZT3MyhHH2fcqW_y-u7Tn2M,43197
41
- pygeodesy/internals.py,sha256=YUcf9wWXT7XztviEBN2uBww8Bt7gnqks2sAZt7k_j3w,20426
42
- pygeodesy/interns.py,sha256=kReVkCWA_rw8GyaYFVRI9dfdXu7MF9nD1MgoXsdsK7I,23273
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=nuuc49Crv3Rt2tKtn8rizyfvKhyQiMekfTFEcyfj-sk,38035
44
+ pygeodesy/karney.py,sha256=y9xMgJX0W0tLrQQnO6c9-It7QgDSOcd4Irvs2D68vBI,38035
45
45
  pygeodesy/ktm.py,sha256=EJ52Llx5DPFNNl2DEH8rL1-k955qOxYZLAg4-UpnlbA,27246
46
- pygeodesy/latlonBase.py,sha256=8DxTwivt3SG6wCLJLXBesY6hlNFgLCksdH3AdQFz2G0,78949
47
- pygeodesy/lazily.py,sha256=GZuV0nXH2-jrBxKqKuD839fJFtUFDHsPh4mA7p5uJZI,46932
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=4ElW1AsN_k_jppvp9Mv2RFs5Q97yhJSnCStcmg9Rl-k,50765
50
- pygeodesy/ltpTuples.py,sha256=r3uHMBCxr31IsCMp_OtpevQPmULJhucn8JZ2bGjuiVI,58338
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=T0LPPhCKJFu2S5IaQmUUbwTS21JbXmkHsvKRgTpT2Nk,52267
53
- pygeodesy/namedTuples.py,sha256=UDmL4kCihvf8tIUVXzGzRLzL_1BLuyqm04pite6YUuk,28495
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=O8mLlmnQkcyXU4xczLGD1zhSyt8RQ3EsXctUnCIjO8U,30819
56
- pygeodesy/points.py,sha256=GirmbiqjD7Q0Z4SDySQO__Jgun-i8vMdJ81U2Kz8V0w,64408
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=nkfBxYrsEdyq2JqAbPrRWKplJBzFkIXLvEZGB4gPu_A,43550
59
- pygeodesy/simplify.py,sha256=NybC-pfze0ObEm4ZCz6ZQrjJlQ-QyA83E6mSJqCuKq4,25223
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=YvjMZmmfy9pZeKHbY-ca0oi-Jy-OxsG9dhefy5LTjRA,32237
61
+ pygeodesy/sphericalBase.py,sha256=bDVuArfePzqcothiTTkyisUGrMDTallXKROjihotcn8,32239
62
62
  pygeodesy/sphericalNvector.py,sha256=MiWcCy5CdvXsCa3963GeUMEnSYGhBiXzkoAEX_tGX4Q,56952
63
- pygeodesy/sphericalTrigonometry.py,sha256=Jf3FUUYEWXbNkiagr0HyMJ6E-cNghnTjcdgntTm28RE,64076
64
- pygeodesy/streprs.py,sha256=xudQ6zi5jFT_CmstSPysjxpZKyLBQNkUk1ETh0uvQ04,23030
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=ixDpZ3RdZmHV8RcmPnXxiPCoinno4Qj4JcYuS1EKD04,62722
67
- pygeodesy/units.py,sha256=mTn0APS0SW9fKn3IYf5usV63Xaw2B9DzkwefPNVu-Es,34607
68
- pygeodesy/unitsBase.py,sha256=yT7dgfwxtd1hHEn02NwPAdStsVWDfPH-Qdfrhvje7Yw,14057
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=TJJeHSASjggUpzdpxwrOTH1tfHvDBxly47GJL27D8zY,18729
74
- pygeodesy/vector2d.py,sha256=zJq5PB777_mFJpKD-rt_T0Vm4SNbVwF7pc3KxX8uCT8,34994
75
- pygeodesy/vector3d.py,sha256=uDNnYSj4BL_Nec6SkyxXDbYaNjvI15HQX0xh25dRLI8,44883
76
- pygeodesy/vector3dBase.py,sha256=Om0Uq1zgjuJ6slj12KiFus_tobjYTPxgVZejNd0YzFI,35729
77
- pygeodesy/webmercator.py,sha256=stO_thswe_D4uxXWH43YWSN6-WWWpv_uIuOwvBIp8Ug,14932
78
- pygeodesy/wgrs.py,sha256=k2OhMue84yH_xaezo0sdxL1-X7fZRqZZ4-Rl1reDYSM,14792
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=eRkUhML8_a6NKlC3SZvPE7gjMden_TR9_KkhBfLszj8,16744
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=lKEgUlnJ3JNHLu_ZPBn7eKgwxK9yAHa77r9OCUiLdds,10466
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=ovPbV2kIR7rtoAVUxm4PXNUKUTbkzulNyqSi8bQpGQU,60595
106
- pygeodesy/geodesicx/gxarea.py,sha256=-Kwe6spe2MSQbeLFDd6UN2NOi4JOjYhHAEzonOU3u4A,19409
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=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,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: bdist_wheel (0.44.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any
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-2022}
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-2023} and published under the same U{MIT License<https://OpenSource.org/licenses/MIT>}**.
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 3d), conversions and unrolling, among other things. For more information and further details see
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<https://GeographicLib.SourceForge.io/
45
- C++/doc/classGeographicLib_1_1AlbersEqualArea.html>} projections, U{equidistant
46
- <https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1AzimuthalEquidistant.html>}
47
- and other I{azimuthal} projections, Lambert I{conformal conic} projections and
48
- positions, functions to clip paths or polygons of C{LatLon} points using the
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} and module L{geodesici} need I{Karney}'s C++ utility U{IntersectTool
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.0b4, Python 3.12.4 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0,
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.5 Sonoma.
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.4,
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.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
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.4 (and U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on U{Debian
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-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
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-4.1 Sonoma, 13.0-5.2 Ventura, 12.1-6 Monterey, 11.0-5.2-6.1
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.5 Sonoma.
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 VincentyError # PYCHOK lazily
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 Epsg, EPSGError # PYCHOK lazily
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 Garef, GARSError # PYCHOK lazily
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 Geohash, GeohashError, \
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 Georef, WGRSError # PYCHOK lazily
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.07.24'
598
+ __version__ = '24.08.24'
600
599
  # see setup.py for similar logic
601
600
  version = _DOT_(*_version2(__version__, n=3))
602
601
 
@@ -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.12'
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 propertyROver
281
+ return _MODS.rhumb.aux_.RhumbAux # overwrite property_ROver
282
282
 
283
283
  @Property_RO
284
284
  def tan(self):
@@ -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.07.12'
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 propertyROver
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 Bearing, Easting, Lat_, Lon_, Northing, \
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.06.11'
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_, Bearing, Scalar, _Pass)
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 Bearing(azimuth=azimuth) # PYCHOK named
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.07.06'
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