pygeodesy 24.10.10__py2.py3-none-any.whl → 24.11.11__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.10.10.dist-info → PyGeodesy-24.11.11.dist-info}/METADATA +12 -12
- PyGeodesy-24.11.11.dist-info/RECORD +118 -0
- {PyGeodesy-24.10.10.dist-info → PyGeodesy-24.11.11.dist-info}/WHEEL +1 -1
- pygeodesy/__init__.py +14 -14
- pygeodesy/__main__.py +5 -5
- pygeodesy/albers.py +12 -17
- pygeodesy/azimuthal.py +51 -61
- pygeodesy/basics.py +60 -62
- pygeodesy/booleans.py +87 -79
- pygeodesy/cartesianBase.py +6 -6
- pygeodesy/constants.py +23 -19
- pygeodesy/css.py +7 -8
- pygeodesy/datums.py +3 -3
- pygeodesy/deprecated/__init__.py +1 -1
- pygeodesy/deprecated/classes.py +9 -9
- pygeodesy/deprecated/functions.py +6 -6
- pygeodesy/dms.py +250 -270
- pygeodesy/ecef.py +11 -14
- pygeodesy/ellipsoidalBase.py +106 -121
- pygeodesy/ellipsoidalBaseDI.py +114 -118
- pygeodesy/ellipsoidalExact.py +35 -37
- pygeodesy/ellipsoidalNvector.py +4 -4
- pygeodesy/ellipsoidalVincenty.py +2 -2
- pygeodesy/ellipsoids.py +10 -51
- pygeodesy/elliptic.py +14 -14
- pygeodesy/errors.py +28 -28
- pygeodesy/etm.py +92 -68
- pygeodesy/fmath.py +42 -40
- pygeodesy/formy.py +7 -6
- pygeodesy/fsums.py +72 -51
- pygeodesy/geodesici.py +43 -40
- pygeodesy/geodesicw.py +17 -16
- pygeodesy/geodesicx/__init__.py +2 -2
- pygeodesy/geodesicx/gxarea.py +3 -2
- pygeodesy/geodsolve.py +79 -39
- pygeodesy/geohash.py +2 -2
- pygeodesy/geoids.py +32 -31
- pygeodesy/heights.py +2 -2
- pygeodesy/internals.py +201 -147
- pygeodesy/interns.py +23 -20
- pygeodesy/karney.py +62 -13
- pygeodesy/ktm.py +11 -13
- pygeodesy/latlonBase.py +18 -20
- pygeodesy/lazily.py +210 -218
- pygeodesy/lcc.py +4 -4
- pygeodesy/ltp.py +10 -10
- pygeodesy/ltpTuples.py +74 -75
- pygeodesy/mgrs.py +20 -21
- pygeodesy/named.py +15 -10
- pygeodesy/nvectorBase.py +1 -1
- pygeodesy/osgr.py +9 -12
- pygeodesy/points.py +2 -2
- pygeodesy/props.py +35 -14
- pygeodesy/resections.py +9 -10
- pygeodesy/rhumb/__init__.py +1 -1
- pygeodesy/rhumb/bases.py +5 -5
- pygeodesy/rhumb/solve.py +9 -10
- pygeodesy/simplify.py +5 -5
- pygeodesy/solveBase.py +7 -25
- pygeodesy/sphericalBase.py +20 -23
- pygeodesy/sphericalNvector.py +103 -145
- pygeodesy/sphericalTrigonometry.py +68 -73
- pygeodesy/streprs.py +5 -5
- pygeodesy/trf.py +6 -4
- pygeodesy/triaxials.py +46 -9
- pygeodesy/units.py +5 -4
- pygeodesy/ups.py +6 -6
- pygeodesy/utily.py +2 -2
- pygeodesy/utm.py +7 -7
- pygeodesy/vector2d.py +13 -13
- pygeodesy/vector3d.py +19 -21
- pygeodesy/vector3dBase.py +21 -19
- pygeodesy/webmercator.py +4 -4
- pygeodesy/wgrs.py +4 -4
- PyGeodesy-24.10.10.dist-info/RECORD +0 -118
- {PyGeodesy-24.10.10.dist-info → PyGeodesy-24.11.11.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.11.11
|
|
4
4
|
Summary: Pure Python geodesy tools
|
|
5
5
|
Home-page: https://GitHub.com/mrJean1/PyGeodesy
|
|
6
6
|
Author: Jean M. Brouwers
|
|
@@ -44,7 +44,7 @@ and nearest points, intersections of geodesic, great circle and rhumb lines, cir
|
|
|
44
44
|
secants, `3-point resections`_, triangulation, trilateration (by intersection, by overlap and in
|
|
45
45
|
3d), conversions and unrolling, among other things. For more information and further details see the
|
|
46
46
|
documentation_, the descriptions of `Latitude/Longitude`_, Vincenty_ and `Vector-based`_ geodesy, the
|
|
47
|
-
original `JavaScript source`_ or docs_ and *Karney*\'s Python geographiclib_ and
|
|
47
|
+
original `JavaScript source`_ or docs_ and *Karney*\'s Python geographiclib_ and C++ `GeographicLib.`_
|
|
48
48
|
|
|
49
49
|
Also included are modules for conversions to and from `Cassini-Soldner`_, ECEF_ (Earth-Centered,
|
|
50
50
|
Earth-Fixed cartesian), UTM_ (Universal Transverse Mercator and Exact_), UPS_ (Universal Polar
|
|
@@ -115,12 +115,12 @@ 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.0, 3.12.7 (with geographiclib_ 2.0, numpy_
|
|
119
|
-
GeodSolve_ 2.3, IntersectTool_ 2.3 and RhumbSolve_ 2.3), 3.11.5 (with
|
|
120
|
-
1.24.2 and scipy_ 1.10.1), Python 3.10.8 (with geographiclib_ 2.0, numpy_
|
|
121
|
-
GeoConvert_ 2.3, GeodSolve_ 2.3), Python 3.9.6 and Python 2.7.18 (with
|
|
122
|
-
1.16.6, scipy_ 1.2.2, GeoConvert_ 2.3, GeodSolve_ 2.3, IntersectTool_
|
|
123
|
-
all on macOS 14.6.1 Sonoma in 64-bit.
|
|
118
|
+
The tests ran with Python 3.13.0 (with geographiclib_ 2.0), 3.12.7 (with geographiclib_ 2.0, numpy_
|
|
119
|
+
2.1.0, scipy_ 1.14.1, GeodSolve_ 2.3, IntersectTool_ 2.3 and RhumbSolve_ 2.3), 3.11.5 (with
|
|
120
|
+
geographiclib_ 2.0, numpy_ 1.24.2 and scipy_ 1.10.1), Python 3.10.8 (with geographiclib_ 2.0, numpy_
|
|
121
|
+
1.23.3, scipy_ 1.9.1, GeoConvert_ 2.3, GeodSolve_ 2.3), Python 3.9.6 and Python 2.7.18 (with
|
|
122
|
+
geographiclib_ 1.50, numpy_ 1.16.6, scipy_ 1.2.2, GeoConvert_ 2.3, GeodSolve_ 2.3, IntersectTool_
|
|
123
|
+
2.3 and RhumbSolve_ 2.3), all on macOS 14.6.1 Sonoma in 64-bit.
|
|
124
124
|
|
|
125
125
|
All tests ran with and without ``lazy import`` for Python 3 and with command line option ``-W default``
|
|
126
126
|
and env variable ``PYGEODESY_WARNINGS=on`` for all Python versions. The results of those tests are
|
|
@@ -132,7 +132,7 @@ runs on Intel (``x86_64``) or Intel *emulation* (\"``arm64_x86_64``\", see funct
|
|
|
132
132
|
Test coverage has been measured with coverage_ 7.6.1 using Python 3.13.0, 3.12.7, 3.11.5 and 3.10.8. The
|
|
133
133
|
complete coverage report in HTML and a PDF summary are included in the distribution files.
|
|
134
134
|
|
|
135
|
-
The tests also ran with Python 3.
|
|
135
|
+
The tests also ran with Python 3.13.0 (and geographiclib_ 2.0) on `Debian 12`_ in 64-bit only and with
|
|
136
136
|
Python 3.12.5 (and geographiclib_ 2.0) on `Windows 2019Server`_ in 64-bit only and with Python 2.7.18
|
|
137
137
|
(and with geographiclib_ 1.52) on `Windows 10`_ in 64- and 32-bit.
|
|
138
138
|
|
|
@@ -160,7 +160,7 @@ and McCabe_ using Python 2.7.18 and with Flake8_ using Python 3.11.5, both in 64
|
|
|
160
160
|
|
|
161
161
|
For a summary of all *Karney*-based functionality in ``pygeodesy``, see module karney_.
|
|
162
162
|
|
|
163
|
-
*Last updated:
|
|
163
|
+
*Last updated: Nov 11, 2024.*
|
|
164
164
|
|
|
165
165
|
License
|
|
166
166
|
=======
|
|
@@ -200,7 +200,6 @@ DEALINGS IN THE SOFTWARE.
|
|
|
200
200
|
|
|
201
201
|
.. _Albers equal-area: https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1AlbersEqualArea.html
|
|
202
202
|
.. _C++ classes: https://GeographicLib.SourceForge.io/C++/doc/annotated.html
|
|
203
|
-
.. _C++ GeographicLib: https://GeographicLib.SourceForge.io/C++/doc/index.html
|
|
204
203
|
.. _Cartesian: https://mrJean1.GitHub.io/PyGeodesy/docs/pygeodesy-Cartesian-attributes-table.html
|
|
205
204
|
.. _Cassini-Soldner: https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1CassiniSoldner.html
|
|
206
205
|
.. _checked: https://GitHub.com/ActiveState/code/tree/master/recipes/Python/546532_PyChecker_postprocessor
|
|
@@ -222,6 +221,7 @@ DEALINGS IN THE SOFTWARE.
|
|
|
222
221
|
.. _GeoConvert: https://GeographicLib.SourceForge.io/C++/doc/utilities.html
|
|
223
222
|
.. _GeodSolve: https://GeographicLib.SourceForge.io/C++/doc/utilities.html
|
|
224
223
|
.. _geographiclib: https://PyPI.org/project/geographiclib
|
|
224
|
+
.. _GeographicLib.: https://GeographicLib.SourceForge.io/C++/doc/index.html
|
|
225
225
|
.. _Geohashes: https://www.Movable-Type.co.UK/scripts/geohash.html
|
|
226
226
|
.. _Geoid: https://mrJean1.GitHub.io/PyGeodesy/docs/pygeodesy.geoids-module.html
|
|
227
227
|
.. _Georefs (WGRS): https://WikiPedia.org/wiki/World_Geographic_Reference_System
|
|
@@ -251,7 +251,7 @@ DEALINGS IN THE SOFTWARE.
|
|
|
251
251
|
.. _PyCodeStyle: https://PyPI.org/project/pycodestyle
|
|
252
252
|
.. _PyFlakes: https://PyPI.org/project/pyflakes
|
|
253
253
|
.. _PyGeodesy: https://PyPI.org/project/PyGeodesy
|
|
254
|
-
.. _pygeodesy.machine: https://mrJean1.GitHub.io/PyGeodesy/docs/pygeodesy.
|
|
254
|
+
.. _pygeodesy.machine: https://mrJean1.GitHub.io/PyGeodesy/docs/pygeodesy.internals-module.html#machine
|
|
255
255
|
.. _PyInstaller: https://PyPI.org/project/pyinstaller
|
|
256
256
|
.. _PyPI: https://PyPI.org/project/PyGeodesy
|
|
257
257
|
.. _PyPI Download files: https://PyPI.org/project/PyGeodesy/#files
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
|
|
2
|
+
pygeodesy/__init__.py,sha256=qZJcMz6VeaGXNy3i3cKvEG1gGfPcrUSxk8kHkFW3o9g,42631
|
|
3
|
+
pygeodesy/__main__.py,sha256=1lE1jMp57iXpvu3TEh2unyT2qvtSa5nJPQn_K7Wmj3E,5442
|
|
4
|
+
pygeodesy/albers.py,sha256=BTeUqKPgygExYBLhRJh8b8FYdwuCIpCuo8ggCw6-Auw,30955
|
|
5
|
+
pygeodesy/azimuthal.py,sha256=WqyA4IWGYBL3wj4oYKCNgm7IcqCtuUhE9TY5hVm7uhU,49763
|
|
6
|
+
pygeodesy/basics.py,sha256=a74YOBmZLWj-CEFadl-ERD9J4qVECRYSL8HBR1gsxTk,30158
|
|
7
|
+
pygeodesy/booleans.py,sha256=IRD4gbzZVcpMg7jh24jtotDORA2jI5-adQkzVaLMnUY,73544
|
|
8
|
+
pygeodesy/cartesianBase.py,sha256=7YiW3i6_HNIgEwqw4NHoFJG5FQsv6dc8opE5w2M7JsY,46939
|
|
9
|
+
pygeodesy/clipy.py,sha256=hzI6IutTRkbssjPPgAjXv9OcgCIIZchjnMWaHin4YAU,27728
|
|
10
|
+
pygeodesy/constants.py,sha256=450oXrMtOT_5A8DvQ_Sh_eu1Kg7CkYmaZpC45usCZDI,19825
|
|
11
|
+
pygeodesy/css.py,sha256=7y85FiUMarlZiiZ9Xn-UyRsnAaV3Met2bumARBGyr94,25642
|
|
12
|
+
pygeodesy/datums.py,sha256=trFx6KgEjlYY_VC6WViZhH1D-U3tDDDdbZXG6MD2H_U,34057
|
|
13
|
+
pygeodesy/dms.py,sha256=FiI-h3nXngSp624i0KlzHkBqYp5X5ucmvN6fLGi_Xgk,42174
|
|
14
|
+
pygeodesy/ecef.py,sha256=MdGNJHebXV4WxGYjUZlHZmZ1dKDv5LUG0xpyYFckuCo,59546
|
|
15
|
+
pygeodesy/elevations.py,sha256=4FuVcVNb_D09gmcvUlck344N4f7Jms76SIRrdutvKjk,10801
|
|
16
|
+
pygeodesy/ellipsoidalBase.py,sha256=GhJG4h8I7ySs6EfXdmVbXOZcvMDI7YYCc7yPj5vMHqo,55109
|
|
17
|
+
pygeodesy/ellipsoidalBaseDI.py,sha256=ZaIPVK187mD9CpORz9t9Vtz03TiVBZ_CRmVs-qMsKBY,38243
|
|
18
|
+
pygeodesy/ellipsoidalExact.py,sha256=vQuyv9jpHLnsWDAwC-GfysFrKC1NAz5hJamIZ7G3NSs,16972
|
|
19
|
+
pygeodesy/ellipsoidalGeodSolve.py,sha256=fAT4b3HXkM6i1W_C0rb4vbSxZqr4c6rS7PIvGF2ad7s,16666
|
|
20
|
+
pygeodesy/ellipsoidalKarney.py,sha256=qvJa8kZ4SgaRR2UbjtkcRxw_CRbwhXoUT4Dn_6DJ6Ag,18721
|
|
21
|
+
pygeodesy/ellipsoidalNvector.py,sha256=Ye6O6SIRiiwY6PJG4KD9kZ6GBpKkWWxZWsZC4k3eH-s,30039
|
|
22
|
+
pygeodesy/ellipsoidalVincenty.py,sha256=Eeh-lFB9y65kyYCZ5bc7uRIF9o6UT4lqdkk4EVRi0Pg,25946
|
|
23
|
+
pygeodesy/ellipsoids.py,sha256=wlYlii-sU2UQBdzFeHpDOamKRtqJavXQXjCr1gRDiFs,106918
|
|
24
|
+
pygeodesy/elliptic.py,sha256=g_IuxDoVf0npEicUCT3x39GJqo1cfpkalC7aV1Z1hFY,45004
|
|
25
|
+
pygeodesy/epsg.py,sha256=Vq_M1g7Z0x5Noqsmt6OCQkPdYJj4jpWObtixL5pAjDA,8220
|
|
26
|
+
pygeodesy/errors.py,sha256=AL-o8q1PqkTcCJTmY6g6iG9BoCpxUONhIFohgekryYw,32098
|
|
27
|
+
pygeodesy/etm.py,sha256=yUXxfdLKlr84a2gtv_ZGGxp1sLOqNvNr7XaOHNwqMb0,46722
|
|
28
|
+
pygeodesy/fmath.py,sha256=9F3381NhthGX92YoFKflAWOZlRwxFv4xJUPJnFy0Hdw,36848
|
|
29
|
+
pygeodesy/formy.py,sha256=s9s-aY3viaMMBnb4jhHE0ZowDUfIcuM-_r9gvilo5B4,75116
|
|
30
|
+
pygeodesy/frechet.py,sha256=F6TYbOEYSOFcll6nvp4GhqafUWXh1umAKb1QaMYQtuM,34372
|
|
31
|
+
pygeodesy/fstats.py,sha256=8Vn1cwlgCQD444WX8FfAEC-AXQcJDeI9_i14Mizp59U,28288
|
|
32
|
+
pygeodesy/fsums.py,sha256=ictqTC7QHDoXcvJxGN66Z_OHnnxSIwXQjlVAOffb8zM,103970
|
|
33
|
+
pygeodesy/gars.py,sha256=KRlyZUv1euEl7ZkDYSZG913GAfFMRG2m2hp37ObYY_Y,11829
|
|
34
|
+
pygeodesy/geodesici.py,sha256=4Elhe9Z8tcVFD46K0HKd_TSS24CQmgQGGlDk6DnBnmo,74775
|
|
35
|
+
pygeodesy/geodesicw.py,sha256=U4mLBOe3x2wGqMynBbO23drd1d9iUXOlBWuNMKdohQ0,28774
|
|
36
|
+
pygeodesy/geodsolve.py,sha256=qYDzQqpfrNcwts1z_yk1HjZ8IlmUXLpda46LHfu4fgs,28989
|
|
37
|
+
pygeodesy/geohash.py,sha256=gDmDI91GOJAdNiAcf9bHq8I581UfPnMmwjWyJlPHRlM,40201
|
|
38
|
+
pygeodesy/geoids.py,sha256=ZfKz2M8gSIGpzooq6or-GqiGQWsMFOLG7VQeiLwX6rA,82491
|
|
39
|
+
pygeodesy/hausdorff.py,sha256=-aKtRbMefDSoIk4V3wCvNrXPZ7Bqk1P6-XuGuI7o8Zc,34770
|
|
40
|
+
pygeodesy/heights.py,sha256=TaEDSLRD5Nsvo0SuU6u-ohATGOwMFxVd5j7DTA9izZc,42909
|
|
41
|
+
pygeodesy/internals.py,sha256=C3Iai8ViVYIC0UnY52fdYTZnfClELtQS4ccPij4Omyo,24299
|
|
42
|
+
pygeodesy/interns.py,sha256=t8hQ3Y1QHzVkoQxq8Z9f0YjkpRC0oB0G7hpV894aYjw,23403
|
|
43
|
+
pygeodesy/iters.py,sha256=xPH0ytomvJeKHu717Fjzi3QbRrEikO6n7vqkY_IDz1k,20311
|
|
44
|
+
pygeodesy/karney.py,sha256=GvyR_tHLRWQ5tsFjnp0R8OTZaBXkPnL8eprSMDJx1mM,40466
|
|
45
|
+
pygeodesy/ktm.py,sha256=pMKiQgtXqnjTNPrVt21N_3x0dFPLuHW0IlOYg3dNjaY,27208
|
|
46
|
+
pygeodesy/latlonBase.py,sha256=2aI0ryg-tRgBuemkJYQkfLkNVi3t2cX2NM7w7wdIebw,79074
|
|
47
|
+
pygeodesy/lazily.py,sha256=JMLMYtzJBxCHyAAJ1pNBiDUVuFimhJChKWXv2nDzA0M,46655
|
|
48
|
+
pygeodesy/lcc.py,sha256=Oa-u7bf_N9aF3D8Yr75In3kXQ2M4SRgGkyyt8aixo8c,25671
|
|
49
|
+
pygeodesy/ltp.py,sha256=tEBBq0U_wfB_8NQG5eEW13nQ2Z8rL6zq1McGcv2YBuI,50751
|
|
50
|
+
pygeodesy/ltpTuples.py,sha256=1AHablDH-A9KRVHMcNPcyu4y6P9kOi10BcqvIKFQrKk,58545
|
|
51
|
+
pygeodesy/mgrs.py,sha256=kVoKDYtm4FhX8BoEKSYbiJ-G_DrT4trb08xjlvpEl1o,29819
|
|
52
|
+
pygeodesy/named.py,sha256=VGY4txpgn7rALFq98zhfCQ0pOC_aPUFVa56TItzFCeM,52510
|
|
53
|
+
pygeodesy/namedTuples.py,sha256=e0rV1Zb2tbx8fztXcSkUFsRTmZtye8B5i_Hi4vBUndU,28758
|
|
54
|
+
pygeodesy/nvectorBase.py,sha256=Xy1TDcH5UuUelVZ7aSKX85hx3fLlpDkYDhuoZijQ1vI,28644
|
|
55
|
+
pygeodesy/osgr.py,sha256=-Ur966glrRhjxtV9DNo920j45PtsUPEQsiy8m1CMhOk,30777
|
|
56
|
+
pygeodesy/points.py,sha256=Vs9vShhBxebgo7UdHlt7Ov4D4Chfa723BZxV0_kpgGk,64389
|
|
57
|
+
pygeodesy/props.py,sha256=Qhs5TpcqoHPA64l-P1GQgG8zlboDsAqzVchDsKv2dn8,24565
|
|
58
|
+
pygeodesy/resections.py,sha256=pl3THJgLKnWEfQaQD1lklt6GfFjaX24ceNZb8PpK7zY,43584
|
|
59
|
+
pygeodesy/simplify.py,sha256=b7oSR2B3yYpwElBeJiyYyK_yFbxwz2Bzx51pymIluwE,25251
|
|
60
|
+
pygeodesy/solveBase.py,sha256=DpgFNHmWs1GUwCViAU-9iBsmKLVFNc8kW1zrDNi31FY,18485
|
|
61
|
+
pygeodesy/sphericalBase.py,sha256=lsjzDWm3VUxKTpKASqZJDYw7M_CJ4eCgzp3LiCJvMt8,32110
|
|
62
|
+
pygeodesy/sphericalNvector.py,sha256=Q3DUujU_xmNcPs0_vfAF8pQAtqOsBQLhq_Rz5WB-TdM,54778
|
|
63
|
+
pygeodesy/sphericalTrigonometry.py,sha256=lfhV2radLDKIK5NjkdtJSRb4alRAT-m0LS0Sb0EtOzk,63959
|
|
64
|
+
pygeodesy/streprs.py,sha256=ItNnTqkE_TMZtqgsRhDonrRDpi5gXtD44sQ_D3Qfsd0,23418
|
|
65
|
+
pygeodesy/trf.py,sha256=hxh6WA7IibL09dHoGMBKQeSXrRFPsYQV0F-LPAD40v4,119073
|
|
66
|
+
pygeodesy/triaxials.py,sha256=priBlyuraA1VhNbN0gv_UAXuulAwV14XjOBvu_oJA4U,63559
|
|
67
|
+
pygeodesy/units.py,sha256=Mr7kLZPSFSMp-xiKy6fqAXuop2LWSZIwWUElGMaWFJY,35316
|
|
68
|
+
pygeodesy/unitsBase.py,sha256=ZZ-VDntCOTjSerQJf9aaLE_J0lozrpmUhynRBaCtg24,14060
|
|
69
|
+
pygeodesy/ups.py,sha256=qRyk3tnQNRD7KgWGPANWOrg6Hxqd9eS7vN8or_tKk4E,23338
|
|
70
|
+
pygeodesy/utily.py,sha256=qLxVVE57PHEu1stJaULIYHZ6G-uNe7Fy_uoQfmNbXUg,36189
|
|
71
|
+
pygeodesy/utm.py,sha256=mJLJq5sEnYYtOpBs2KYiDB6bjKxfFRS1_36-Yn7HLEM,31108
|
|
72
|
+
pygeodesy/utmups.py,sha256=g2Z_aEOt6fhV9f4fASlW4_K_O_P4zBsBbWfQV11mIKo,13196
|
|
73
|
+
pygeodesy/utmupsBase.py,sha256=S4s1Sehj9jSMy-XRxwtwVstG3QhyVt924V0FHu0cPIk,18730
|
|
74
|
+
pygeodesy/vector2d.py,sha256=L-2g3EDZGZD6lYlTrDjInsIELul3UGVjR9eMRagVm6o,39649
|
|
75
|
+
pygeodesy/vector3d.py,sha256=8CA80VxV7XJvBrT3kVO13qMT3qsEoEIHvLYzFz7wIxE,42532
|
|
76
|
+
pygeodesy/vector3dBase.py,sha256=gLOFfUrSFFlmX3R-LmMfAvWwntAcgaF3YqBBtNbfbMw,36289
|
|
77
|
+
pygeodesy/webmercator.py,sha256=iMtKf_vNiM4wiH7rewVzpjMjI7C_qm_ZmSjQBTZ_y0s,14936
|
|
78
|
+
pygeodesy/wgrs.py,sha256=VWBkk_rf-DjpG9o_tqVMCR7FJyEh7holdTsJo1v9ads,15455
|
|
79
|
+
pygeodesy/auxilats/_CX_4.py,sha256=WsxGrwqEhdWBx-K5ocwwDuatIkDTZB-FwrqQITbcNU0,6829
|
|
80
|
+
pygeodesy/auxilats/_CX_6.py,sha256=PsaVhzOdCDyRuZ-SH6ZwbWrf_rAkidtwLuAQTlvv5XQ,11277
|
|
81
|
+
pygeodesy/auxilats/_CX_8.py,sha256=mxk12xvzOMNimyHM74fn9sFB0aUSBLojYqtenYhAekQ,18899
|
|
82
|
+
pygeodesy/auxilats/_CX_Rs.py,sha256=z7UXI7KUyURE44wGuLJE2on6SlgAZzfbay4jkbpON1U,7967
|
|
83
|
+
pygeodesy/auxilats/__init__.py,sha256=ywIs1e5wes3qq3dvCvX0VdxoGtFNQwBmY8Ar-07f9Kg,2881
|
|
84
|
+
pygeodesy/auxilats/__main__.py,sha256=pb0GWDrrg440xNvHvPAz-UTGrLu2uXp4g-RlbkW7P6c,3171
|
|
85
|
+
pygeodesy/auxilats/auxAngle.py,sha256=nr-su1loEbv1uVxg7_cEjH0M1DLyodsulPfq4NVT5kY,16745
|
|
86
|
+
pygeodesy/auxilats/auxDLat.py,sha256=3sq7Wc-ykpVbldNh10IZ3tIlJ7DcQFDlmZ4nOhJEgo0,10969
|
|
87
|
+
pygeodesy/auxilats/auxDST.py,sha256=BSHR0M3hQBR1KjF_BUJHrNzGXr2PblYXUQsMD5L1Kcc,10468
|
|
88
|
+
pygeodesy/auxilats/auxLat.py,sha256=7uxe7mtkY-9uSI3z2wmUNBqzCKyFujIpJU1v-8yDgds,31934
|
|
89
|
+
pygeodesy/auxilats/auxily.py,sha256=X1y4_qC40Th7CgmZILqoQCLAUQoyORcR5W-bN4X0W4I,7882
|
|
90
|
+
pygeodesy/deprecated/__init__.py,sha256=r_oHilCAEi6DmNefqMxLswOD8r7KK0qVaQbw_jq-A-E,2815
|
|
91
|
+
pygeodesy/deprecated/bases.py,sha256=nxUtxscAg5cb7HEzTSmPJFafLc9Ad2SL5ovwkYaU5z8,1655
|
|
92
|
+
pygeodesy/deprecated/classes.py,sha256=mt0qomTmDwhI1o06cqgHs-_KPe9uwVX5q4QeRkwTyp0,12469
|
|
93
|
+
pygeodesy/deprecated/consterns.py,sha256=W-rQiw443_zCFEUzjCGykGND-i5P_ghEIyJUSGg7-Nc,1908
|
|
94
|
+
pygeodesy/deprecated/datum.py,sha256=s8Hke053RucP5ACvg3gdX8weQfGM0x59pQyHpY11eOs,1875
|
|
95
|
+
pygeodesy/deprecated/functions.py,sha256=rf743PWGPP69Ay2TydjnF8YCBXm3p5y1jZvLCPu1wtc,14217
|
|
96
|
+
pygeodesy/deprecated/nvector.py,sha256=_dZf84RdmPr7e7i8Yi683R-8Mqn0ipTqIsDhNl29hGo,2117
|
|
97
|
+
pygeodesy/deprecated/rhumbBase.py,sha256=d7YKW--dnRpobB2CSvhFsntWF0B5-HYJqID2pv5lD5k,1375
|
|
98
|
+
pygeodesy/deprecated/rhumbaux.py,sha256=n29xazYMbVG4MJkLjAGu8B88bbcFF5xnvuj9xSxjfIk,1428
|
|
99
|
+
pygeodesy/deprecated/rhumbsolve.py,sha256=QprjRfo5T1_C4ovaa1cffAcmNczzkhGIfmybAup9a9w,1431
|
|
100
|
+
pygeodesy/deprecated/rhumbx.py,sha256=OS0p_meaoVrpZe5UhK6qZljjlrGpL0pCHWw8gofw7ks,1425
|
|
101
|
+
pygeodesy/geodesicx/_C4_24.py,sha256=r5-So2i4z-OFY6NFYERUvhtxYHaYphPRgUUC3PWC5K4,90707
|
|
102
|
+
pygeodesy/geodesicx/_C4_27.py,sha256=Pkpns4kBAHxBcvi0f9l_3GQeE6qcrl123DccEQ593To,134215
|
|
103
|
+
pygeodesy/geodesicx/_C4_30.py,sha256=cseNhROi7DHi77kgdrXXDXO6yiiq00DNcX0HOVf2Rpg,201921
|
|
104
|
+
pygeodesy/geodesicx/__init__.py,sha256=1ALfFc-DVxhdicPFtqrfLd2up5-VnBSWX0ZB7aHk-S0,2478
|
|
105
|
+
pygeodesy/geodesicx/__main__.py,sha256=wsJPK6lW_PsgVCR1ZJksgGhwxwrsMGSXhYkhpjbknTc,4188
|
|
106
|
+
pygeodesy/geodesicx/gx.py,sha256=yeNpMQbw_uWfs4KOQX8RMAQt6WNsG3zsGgmZRVgbQIk,60612
|
|
107
|
+
pygeodesy/geodesicx/gxarea.py,sha256=cJaXwMMxjQ21RiCGU7c2YLXNmrqkRawHxQxsg7o5gas,19454
|
|
108
|
+
pygeodesy/geodesicx/gxbases.py,sha256=AyvsjiSENqikJK6qpm55rDkUlBSmTDk_-FoqzzMFX1M,6130
|
|
109
|
+
pygeodesy/geodesicx/gxline.py,sha256=zNQF8lz9caHZlsUcL8NfjG02KIza39Q6Qd6XizDp_UI,27537
|
|
110
|
+
pygeodesy/rhumb/__init__.py,sha256=mejjuzcbm4zJJIWEcKCXObDIZoF1e_dtIaChg0mYbr4,2207
|
|
111
|
+
pygeodesy/rhumb/aux_.py,sha256=XN0zlNwhU525NdcHko-G_Igvc7-mzXbT7ypcVIt5ADw,16048
|
|
112
|
+
pygeodesy/rhumb/bases.py,sha256=e_ASUIK9ABtORVZaTMiFMGRc3w2wKGNDPdJEfVCp5CU,54162
|
|
113
|
+
pygeodesy/rhumb/ekx.py,sha256=JsmdCatWKqsffF8jCh4HDu5IKt_kHq1qUdmP1LMuofY,24044
|
|
114
|
+
pygeodesy/rhumb/solve.py,sha256=uP7TJyR529HNZsgmXeV6yAHhDJVBoUC-fEVBUx4-Sd0,23943
|
|
115
|
+
PyGeodesy-24.11.11.dist-info/METADATA,sha256=mv6od5GdIMWcu0qcRzP4L3B3jhe9pWXj56V8xRRefRk,19916
|
|
116
|
+
PyGeodesy-24.11.11.dist-info/WHEEL,sha256=QyeGbh-t8WT0nt0_LNSP02jN-g4ymd1egk1U3osCGMU,110
|
|
117
|
+
PyGeodesy-24.11.11.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
|
|
118
|
+
PyGeodesy-24.11.11.dist-info/RECORD,,
|
pygeodesy/__init__.py
CHANGED
|
@@ -23,7 +23,7 @@ the U{documentation<https://mrJean1.GitHub.io/PyGeodesy>}, the descriptions of U
|
|
|
23
23
|
<https://www.Movable-Type.co.UK/scripts/latlong-vincenty.html>} and U{Vector-based
|
|
24
24
|
<https://www.Movable-Type.co.UK/scripts/latlong-vectors.html>} geodesy, the original U{JavaScript source
|
|
25
25
|
<https://GitHub.com/ChrisVeness/geodesy>} or U{docs<https://www.Movable-Type.co.UK/scripts/geodesy/docs>}
|
|
26
|
-
and I{Karney}'s Python U{geographiclib<https://PyPI.org/project/geographiclib>} and
|
|
26
|
+
and I{Karney}'s Python U{geographiclib<https://PyPI.org/project/geographiclib>} and C++ U{GeographicLib
|
|
27
27
|
<https://GeographicLib.SourceForge.io/C++/doc/index.html>}.
|
|
28
28
|
|
|
29
29
|
Also included are modules for conversions to and from U{Cassini-Soldner
|
|
@@ -122,7 +122,8 @@ C{epydoc --html --no-private --no-source --name=PyGeodesy --url=... -v pygeodesy
|
|
|
122
122
|
Tests
|
|
123
123
|
=====
|
|
124
124
|
|
|
125
|
-
The tests ran with Python 3.13.0
|
|
125
|
+
The tests ran with Python 3.13.0 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0),
|
|
126
|
+
Python 3.12.7 (with U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0,
|
|
126
127
|
U{numpy<https://PyPI.org/project/numpy>} 2.1.0, U{scipy<https://PyPI.org/project/scipy>} 1.14.1,
|
|
127
128
|
U{GeodSolve<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3,
|
|
128
129
|
U{IntersectTool<https://GeographicLib.SourceForge.io/C++/doc/utilities.html>} 2.3 and
|
|
@@ -151,7 +152,7 @@ the distribution files.
|
|
|
151
152
|
Python 3.13.0, 3.12.7, 3.11.5 and 3.10.8 run on Apple M1 Silicon (C{arm64}), I{natively}. Python 2.7.18 runs
|
|
152
153
|
on Intel (C{x86_64}) or Intel I{emulation} ("C{arm64_x86_64}", see function L{machine<pygeodesy.machine>}).
|
|
153
154
|
|
|
154
|
-
The tests also ran with Python 3.
|
|
155
|
+
The tests also ran with Python 3.13.0 (and U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on
|
|
155
156
|
U{Debian 12<https://Cirrus-CI.com/github/mrJean1/PyGeodesy/master>} in 64-bit only, with Python 3.12.5 (and
|
|
156
157
|
U{geographiclib<https://PyPI.org/project/geographiclib>} 2.0) on U{Windows
|
|
157
158
|
2019Server<https://CI.AppVeyor.com/project/mrJean1/pygeodesy>} in 64-bit only and with Python 2.7.18 (and
|
|
@@ -201,8 +202,8 @@ The following environment variables are observed by C{PyGeodesy}:
|
|
|
201
202
|
- C{PYGEODESY_EXCEPTION_CHAINING} - see module L{errors<pygeodesy.errors>}.
|
|
202
203
|
- C{PYGEODESY_FMT_FORM} - see module L{dms<pygeodesy.dms>}.
|
|
203
204
|
- C{PYGEODESY_FSUM_F2PRODUCT} - see module L{fsums<pygeodesy.fsums>} and method L{f2product<pygeodesy.Fsum.f2product>}.
|
|
204
|
-
- C{PYGEODESY_FSUM_NONFINITES} - see module L{fsums<pygeodesy.fsums>} and
|
|
205
|
-
- C{PYGEODESY_FSUM_RESIDUAL} - see module L{fsums<pygeodesy.fsums>} and
|
|
205
|
+
- C{PYGEODESY_FSUM_NONFINITES} - see module L{fsums<pygeodesy.fsums>} and method L{nonfinites<pygeodesy.Fsum.nonfinites>}.
|
|
206
|
+
- C{PYGEODESY_FSUM_RESIDUAL} - see module L{fsums<pygeodesy.fsums>} and method L{RESIDUAL<pygeodesy.Fsum.RESIDUAL>}.
|
|
206
207
|
- C{PYGEODESY_GEOCONVERT} - see module L{mgrs<pygeodesy.mgrs>}.
|
|
207
208
|
- C{PYGEODESY_GEODSOLVE} - see module L{geodsolve<pygeodesy.geodsolve>}.
|
|
208
209
|
- C{PYGEODESY_INTERSECTTOOL} - see module L{geodesici<pygeodesy.geodesici>}.
|
|
@@ -211,12 +212,13 @@ The following environment variables are observed by C{PyGeodesy}:
|
|
|
211
212
|
- C{PYGEODESY_RHUMBSOLVE} - see module L{rhumb.solve<pygeodesy.rhumb.solve>}.
|
|
212
213
|
- C{PYGEODESY_UPS_POLES} - see modules L{ups<pygeodesy.ups>} and L{mgrs<pygeodesy.mgrs>}.
|
|
213
214
|
|
|
214
|
-
and these to
|
|
215
|
+
and these to specify standard or I{named} C{repr}esentations:
|
|
215
216
|
|
|
216
217
|
- C{PYGEODESY_AZIMUTH_STD_REPR} - see method L{Azimuth<pygeodesy.Azimuth>}C{.__repr__}.
|
|
217
218
|
- C{PYGEODESY_BEARING_STD_REPR} - see method L{Bearing<pygeodesy.Bearing>}C{.__repr__}.
|
|
218
219
|
- C{PYGEODESY_BOOL_STD_REPR} - see method L{Bool<pygeodesy.Bool>}C{.__repr__}.
|
|
219
220
|
- C{PYGEODESY_DEGREES_STD_REPR} - see method L{Degrees<pygeodesy.Degrees>}C{.__repr__}.
|
|
221
|
+
- C{PYGEODESY_EPOCH_STD_REPR} - see method L{Float<pygeodesy.Epoch>}C{.__repr__}.
|
|
220
222
|
- C{PYGEODESY_FLOAT_STD_REPR} - see method L{Float<pygeodesy.Float>}C{.__repr__}.
|
|
221
223
|
- C{PYGEODESY_INT_STD_REPR} - see method L{Int<pygeodesy.Int>}C{.__repr__}.
|
|
222
224
|
- C{PYGEODESY_METER_STD_REPR} - see method L{Meter<pygeodesy.Meter>}C{.__repr__}.
|
|
@@ -233,12 +235,10 @@ plus during development:
|
|
|
233
235
|
|
|
234
236
|
and:
|
|
235
237
|
|
|
236
|
-
- C{PYGEODESY_INIT__ALL__} - Set env variable C{PYGEODESY_INIT__ALL__} to anything
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
name, for example C{ from pygeodesy.ellipsoidalExact import LatLon } or C{ from
|
|
241
|
-
pygeodesy.deprecated import collins }
|
|
238
|
+
- C{PYGEODESY_INIT__ALL__} - Set env variable C{PYGEODESY_INIT__ALL__} to anything other than C{"__all__"} to avoid
|
|
239
|
+
importing all C{pygeodesy} modules unnecessarily (in Python 2 or with C{PYGEODESY_LAZY_IMPORT} turned off in Python
|
|
240
|
+
3). However, to import a C{pygeodesy} item, the item name must be qualified with the C{module} name, for example
|
|
241
|
+
C{ from pygeodesy.ellipsoidalExact import LatLon } or C{ from pygeodesy.deprecated import collins }
|
|
242
242
|
|
|
243
243
|
License
|
|
244
244
|
=======
|
|
@@ -582,7 +582,7 @@ if _init__all__ and not _lazy_import2: # import and set __all__
|
|
|
582
582
|
raise ImportError('missing %s%s: %s' % (_attribute_, s, t))
|
|
583
583
|
ns.extend(attrs)
|
|
584
584
|
# XXX if ps: # check that mod is a _pygeodesy_ module
|
|
585
|
-
# XXX m = globalocals[mod] # assert(
|
|
585
|
+
# XXX m = globalocals[mod] # assert(_DUNDER_nameof(m) == mod)
|
|
586
586
|
# XXX f = getattr(m, _dunder_file_, _NN)
|
|
587
587
|
# XXX d = _os_path.dirname(_os_path.abspath(f)) if f else pygeodesy_abspath
|
|
588
588
|
# XXX p = getattr(m, _dunder_package_, _NN) or _pygeodesy_
|
|
@@ -598,7 +598,7 @@ else:
|
|
|
598
598
|
|
|
599
599
|
from pygeodesy.internals import _version2, _DOT_ # PYCHOK import
|
|
600
600
|
# from pygeodesy.interns import _DOT_ # from .internals
|
|
601
|
-
__version__ = '24.
|
|
601
|
+
__version__ = '24.11.11'
|
|
602
602
|
# see setup.py for similar logic
|
|
603
603
|
version = _DOT_(*_version2(__version__, n=3))
|
|
604
604
|
|
pygeodesy/__main__.py
CHANGED
|
@@ -5,7 +5,7 @@ u'''Print L{pygeodesy} version, etc. using C{python -m pygeodesy}.
|
|
|
5
5
|
'''
|
|
6
6
|
|
|
7
7
|
__all__ = ()
|
|
8
|
-
__version__ = '24.
|
|
8
|
+
__version__ = '24.10.14'
|
|
9
9
|
|
|
10
10
|
from os.path import basename, dirname
|
|
11
11
|
|
|
@@ -16,9 +16,9 @@ def _main(): # PYCHOK no cover
|
|
|
16
16
|
from pygeodesy import constants, _isfrozen, pygeodesy_abspath, version
|
|
17
17
|
from pygeodesy.basics import _xcoverage,_xgeographiclib, _xnumpy, _xscipy
|
|
18
18
|
from pygeodesy.internals import _name_version, printf, _usage, _versions
|
|
19
|
-
from pygeodesy.interns import NN, _COMMASPACE_, _DEPRECATED_, _DOT_,
|
|
20
|
-
_pygeodesy_abspath_, _version_
|
|
21
|
-
from pygeodesy.lazily import
|
|
19
|
+
from pygeodesy.interns import NN, _COMMASPACE_, _DEPRECATED_, _DOT_, _DUNDER_all_, \
|
|
20
|
+
_EQUAL_, _pygeodesy_abspath_, _version_
|
|
21
|
+
from pygeodesy.lazily import _all_deprecates, _all_imports, isLazy
|
|
22
22
|
|
|
23
23
|
def _p(name_value):
|
|
24
24
|
return _DOT_(NN, _EQUAL_(*name_value))
|
|
@@ -28,7 +28,7 @@ def _main(): # PYCHOK no cover
|
|
|
28
28
|
('isLazy', isLazy),
|
|
29
29
|
('_isfrozen', _isfrozen),
|
|
30
30
|
('_floats', len(constants._floats)),
|
|
31
|
-
(
|
|
31
|
+
(_DUNDER_all_, len(_all_imports())),
|
|
32
32
|
(_DEPRECATED_, len(_all_deprecates()))))
|
|
33
33
|
|
|
34
34
|
def _nv(_xpkg, p):
|
pygeodesy/albers.py
CHANGED
|
@@ -38,12 +38,12 @@ from pygeodesy.utily import atan1, atan1d, degrees360, sincos2, sincos2d, \
|
|
|
38
38
|
from math import atan2, atanh, degrees, fabs, radians, sqrt
|
|
39
39
|
|
|
40
40
|
__all__ = _ALL_LAZY.albers
|
|
41
|
-
__version__ = '24.
|
|
41
|
+
__version__ = '24.10.15'
|
|
42
42
|
|
|
43
43
|
_k1_ = 'k1'
|
|
44
44
|
_NUMIT = 8 # XXX 4?
|
|
45
45
|
_NUMIT0 = 41 # XXX 21?
|
|
46
|
-
_TERMS =
|
|
46
|
+
_TERMS = 31 # XXX 16?
|
|
47
47
|
_TOL0 = sqrt3(_TOL)
|
|
48
48
|
|
|
49
49
|
|
|
@@ -425,15 +425,12 @@ class _AlbersBase(_NamedBase):
|
|
|
425
425
|
e22 = E.e22 # == e2 / e21
|
|
426
426
|
tol = _tol(_TOL0, ta0)
|
|
427
427
|
_Ta02 = Fsum(ta0).fsum2f_
|
|
428
|
-
_fabs = fabs
|
|
429
|
-
_fsum1 = fsum1f_
|
|
430
|
-
_sqrt = sqrt
|
|
431
428
|
_1, _2 = _1_0, _2_0
|
|
432
429
|
_4, _6 = _4_0, _6_0
|
|
433
430
|
for self._iteration in range(1, _NUMIT0): # 4 trips
|
|
434
431
|
ta02 = ta0**2
|
|
435
432
|
sca02 = ta02 + _1
|
|
436
|
-
sca0 =
|
|
433
|
+
sca0 = sqrt(sca02)
|
|
437
434
|
sa0 = ta0 / sca0
|
|
438
435
|
sa01 = sa0 + _1
|
|
439
436
|
sa02 = sa0**2
|
|
@@ -449,10 +446,10 @@ class _AlbersBase(_NamedBase):
|
|
|
449
446
|
BA = (_atanh1(e2 * sa0m1**2) * e21 - e2 * sa0m) * sa0m1 \
|
|
450
447
|
- (_2 + (_1 + e2) * sa0) * sa0m**2 * e22 / sa021 # B + A
|
|
451
448
|
d = (_4 - (_1 + sa02) * e2 * _2) * e22 / (sa021**2 * sca02) # dAB
|
|
452
|
-
u =
|
|
453
|
-
du =
|
|
449
|
+
u = fsum1f_(s1_qZ * g, -D, g * BA)
|
|
450
|
+
du = fsum1f_(s1_qZ * dg, dD, dg * BA, g * d)
|
|
454
451
|
ta0, d = _Ta02(-u / du * (sca0 * sca02))
|
|
455
|
-
if
|
|
452
|
+
if fabs(d) < tol:
|
|
456
453
|
return ta0
|
|
457
454
|
raise AlbersError(Fmt.no_convergence(d, tol), txt=repr(self))
|
|
458
455
|
|
|
@@ -496,22 +493,20 @@ class _AlbersBase(_NamedBase):
|
|
|
496
493
|
e2 = self.ellipsoid.e2
|
|
497
494
|
qx = self._qx
|
|
498
495
|
|
|
499
|
-
ta
|
|
500
|
-
_Ta2
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
_txif = self._txif
|
|
504
|
-
_1 = _1_0
|
|
496
|
+
ta = txi
|
|
497
|
+
_Ta2 = Fsum(ta).fsum2f_
|
|
498
|
+
_txif = self._txif
|
|
499
|
+
_1 = _1_0
|
|
505
500
|
for self._iteration in range(1, _NUMIT): # max 2, mean 1.99
|
|
506
501
|
# dtxi / dta = (scxi / sca)^3 * 2 * (1 - e^2)
|
|
507
502
|
# / (qZ * (1 - e^2 * sa^2)^2)
|
|
508
503
|
ta2 = ta**2
|
|
509
504
|
sca2 = _1 + ta2
|
|
510
505
|
txia = _txif(ta)
|
|
511
|
-
s3qx =
|
|
506
|
+
s3qx = sqrt3(sca2 / (txia**2 + _1)) * qx # * _1_x21(txia)
|
|
512
507
|
eta2 = (_1 - e2 * ta2 / sca2)**2
|
|
513
508
|
ta, d = _Ta2((txi - txia) * s3qx * eta2)
|
|
514
|
-
if
|
|
509
|
+
if fabs(d) < tol:
|
|
515
510
|
return ta
|
|
516
511
|
raise AlbersError(Fmt.no_convergence(d, tol), txt=repr(self))
|
|
517
512
|
|