pygeodesy 25.10.10__py2.py3-none-any.whl → 25.12.12__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/__init__.py +25 -12
- pygeodesy/__main__.py +1 -1
- pygeodesy/albers.py +1 -1
- pygeodesy/angles.py +960 -0
- pygeodesy/auxilats/_CX_4.py +1 -1
- pygeodesy/auxilats/_CX_6.py +1 -1
- pygeodesy/auxilats/_CX_8.py +1 -1
- pygeodesy/auxilats/_CX_Rs.py +1 -1
- pygeodesy/auxilats/__init__.py +2 -2
- pygeodesy/auxilats/__main__.py +1 -1
- pygeodesy/auxilats/auxAngle.py +7 -8
- pygeodesy/auxilats/auxDLat.py +1 -1
- pygeodesy/auxilats/auxDST.py +1 -1
- pygeodesy/auxilats/auxLat.py +1 -1
- pygeodesy/auxilats/auxily.py +1 -1
- pygeodesy/azimuthal.py +6 -5
- pygeodesy/basics.py +14 -10
- pygeodesy/booleans.py +8 -33
- pygeodesy/cartesianBase.py +7 -7
- pygeodesy/clipy.py +17 -23
- pygeodesy/constants.py +86 -63
- pygeodesy/css.py +1 -1
- pygeodesy/datums.py +1 -1
- pygeodesy/deprecated/__init__.py +2 -2
- pygeodesy/deprecated/bases.py +1 -1
- pygeodesy/deprecated/classes.py +32 -2
- pygeodesy/deprecated/consterns.py +1 -1
- pygeodesy/deprecated/datum.py +1 -1
- pygeodesy/deprecated/functions.py +1 -1
- pygeodesy/deprecated/nvector.py +1 -1
- pygeodesy/deprecated/rhumbBase.py +1 -1
- pygeodesy/deprecated/rhumbaux.py +1 -1
- pygeodesy/deprecated/rhumbsolve.py +1 -1
- pygeodesy/deprecated/rhumbx.py +1 -1
- pygeodesy/dms.py +1 -1
- pygeodesy/ecef.py +1 -1
- pygeodesy/ecefLocals.py +1 -1
- pygeodesy/elevations.py +1 -1
- pygeodesy/ellipsoidalBase.py +1 -1
- pygeodesy/ellipsoidalBaseDI.py +1 -1
- pygeodesy/ellipsoidalExact.py +1 -1
- pygeodesy/ellipsoidalGeodSolve.py +1 -1
- pygeodesy/ellipsoidalKarney.py +1 -1
- pygeodesy/ellipsoidalNvector.py +1 -1
- pygeodesy/ellipsoidalVincenty.py +1 -1
- pygeodesy/ellipsoids.py +7 -6
- pygeodesy/elliptic.py +1 -1
- pygeodesy/epsg.py +1 -1
- pygeodesy/errors.py +8 -4
- pygeodesy/etm.py +1 -1
- pygeodesy/fmath.py +15 -8
- pygeodesy/formy.py +107 -5
- pygeodesy/frechet.py +1 -1
- pygeodesy/fstats.py +1 -1
- pygeodesy/fsums.py +1 -1
- pygeodesy/gars.py +1 -1
- pygeodesy/geod3solve.py +488 -0
- pygeodesy/geodesici.py +4 -4
- pygeodesy/geodesicw.py +1 -1
- pygeodesy/geodesicx/_C4_24.py +1 -1
- pygeodesy/geodesicx/_C4_27.py +1 -1
- pygeodesy/geodesicx/_C4_30.py +1 -1
- pygeodesy/geodesicx/__init__.py +1 -1
- pygeodesy/geodesicx/__main__.py +1 -1
- pygeodesy/geodesicx/gx.py +1 -1
- pygeodesy/geodesicx/gxarea.py +1 -1
- pygeodesy/geodesicx/gxbases.py +1 -1
- pygeodesy/geodesicx/gxline.py +1 -1
- pygeodesy/geodsolve.py +70 -102
- pygeodesy/geohash.py +1 -1
- pygeodesy/geoids.py +1 -1
- pygeodesy/hausdorff.py +1 -1
- pygeodesy/heights.py +1 -1
- pygeodesy/internals.py +3 -3
- pygeodesy/interns.py +3 -3
- pygeodesy/iters.py +1 -1
- pygeodesy/karney.py +132 -116
- pygeodesy/ktm.py +1 -1
- pygeodesy/latlonBase.py +1 -1
- pygeodesy/lazily.py +25 -13
- pygeodesy/lcc.py +1 -1
- pygeodesy/ltp.py +1 -1
- pygeodesy/ltpTuples.py +1 -1
- pygeodesy/mgrs.py +3 -3
- pygeodesy/named.py +14 -9
- pygeodesy/namedTuples.py +1 -1
- pygeodesy/nvectorBase.py +1 -1
- pygeodesy/osgr.py +1 -1
- pygeodesy/points.py +1 -1
- pygeodesy/props.py +1 -1
- pygeodesy/resections.py +1 -1
- pygeodesy/rhumb/__init__.py +8 -6
- pygeodesy/rhumb/aux_.py +1 -1
- pygeodesy/rhumb/bases.py +1 -1
- pygeodesy/rhumb/ekx.py +1 -1
- pygeodesy/rhumb/solve.py +91 -84
- pygeodesy/simplify.py +1 -1
- pygeodesy/solveBase.py +72 -49
- pygeodesy/sphericalBase.py +1 -1
- pygeodesy/sphericalNvector.py +1 -1
- pygeodesy/sphericalTrigonometry.py +1 -1
- pygeodesy/streprs.py +6 -4
- pygeodesy/trf.py +1 -1
- pygeodesy/triaxials/__init__.py +70 -0
- pygeodesy/triaxials/bases.py +935 -0
- pygeodesy/triaxials/conformal3.py +617 -0
- pygeodesy/triaxials/triaxial3.py +969 -0
- pygeodesy/triaxials/triaxial5.py +1220 -0
- pygeodesy/units.py +6 -1
- pygeodesy/unitsBase.py +1 -1
- pygeodesy/ups.py +2 -3
- pygeodesy/utily.py +19 -15
- pygeodesy/utm.py +1 -1
- pygeodesy/utmups.py +1 -1
- pygeodesy/utmupsBase.py +1 -1
- pygeodesy/vector2d.py +2 -2
- pygeodesy/vector3d.py +1 -1
- pygeodesy/vector3dBase.py +195 -51
- pygeodesy/webmercator.py +1 -1
- pygeodesy/wgrs.py +1 -1
- {pygeodesy-25.10.10.dist-info → pygeodesy-25.12.12.dist-info}/METADATA +13 -13
- pygeodesy-25.12.12.dist-info/RECORD +125 -0
- pygeodesy/triaxials.py +0 -1566
- pygeodesy-25.10.10.dist-info/RECORD +0 -119
- {pygeodesy-25.10.10.dist-info → pygeodesy-25.12.12.dist-info}/WHEEL +0 -0
- {pygeodesy-25.10.10.dist-info → pygeodesy-25.12.12.dist-info}/top_level.txt +0 -0
pygeodesy/constants.py
CHANGED
|
@@ -11,10 +11,10 @@ L{pygeodesy.isnon0} and L{pygeodesy.remainder}.
|
|
|
11
11
|
from __future__ import division as _; del _ # noqa: E702 ;
|
|
12
12
|
|
|
13
13
|
from pygeodesy.basics import _copysign, isbool, iscomplex, isint, signBit
|
|
14
|
-
from pygeodesy.errors import
|
|
14
|
+
from pygeodesy.errors import _ValueError, _xError, _xkwds_get1, _xkwds_item2
|
|
15
15
|
# from pygeodesy.fsums import _isFsum_2Tuple # _MODS
|
|
16
16
|
from pygeodesy.internals import _0_0, _100_0, typename
|
|
17
|
-
from pygeodesy.interns import
|
|
17
|
+
from pygeodesy.interns import _INF_, _NAN_, _DMAIN_ # PYCHOK used!
|
|
18
18
|
from pygeodesy.lazily import _ALL_MODS as _MODS, _ALL_LAZY
|
|
19
19
|
# from pygeodesy.streprs import Fmt # from .unitsBase
|
|
20
20
|
from pygeodesy.unitsBase import Float, Int, Radius, Fmt
|
|
@@ -26,7 +26,7 @@ except ImportError: # Python 2-
|
|
|
26
26
|
_inf, _nan = float(_INF_), float(_NAN_)
|
|
27
27
|
|
|
28
28
|
__all__ = _ALL_LAZY.constants
|
|
29
|
-
__version__ = '25.
|
|
29
|
+
__version__ = '25.12.06'
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
def _copysign_0_0(y):
|
|
@@ -47,7 +47,7 @@ def _copysignINF(y):
|
|
|
47
47
|
return NINF if signBit(y) else INF
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
def _flipsign(x, y):
|
|
50
|
+
def _flipsign(x, y=-1):
|
|
51
51
|
'''(INTERNAL) Negate C{x} for negative C{y}.
|
|
52
52
|
'''
|
|
53
53
|
return (-x) if signBit(y) else x
|
|
@@ -60,65 +60,78 @@ def _Float(**name_arg):
|
|
|
60
60
|
return Float(_float(arg), name=n)
|
|
61
61
|
|
|
62
62
|
|
|
63
|
-
def
|
|
64
|
-
'''(INTERNAL)
|
|
63
|
+
def _float(x): # in .datums, .ellipsoids, ...
|
|
64
|
+
'''(INTERNAL) Cache initial C{float}s.
|
|
65
65
|
'''
|
|
66
|
-
|
|
67
|
-
return
|
|
66
|
+
f = float(x)
|
|
67
|
+
return _floats.setdefault(f, f) # PYCHOK del _floats
|
|
68
68
|
|
|
69
69
|
|
|
70
|
-
def float_(
|
|
71
|
-
'''Get
|
|
70
|
+
def float_(x, sets=False):
|
|
71
|
+
'''Get scalar as C{float} or I{intern}'ed C{float}.
|
|
72
72
|
|
|
73
|
-
@arg
|
|
74
|
-
@kwarg sets: Use C{
|
|
75
|
-
|
|
73
|
+
@arg x: The scalar (C{scalar}).
|
|
74
|
+
@kwarg sets: Use C{True} to C{intern} the B{C{f}},
|
|
75
|
+
otherwise don't (C{bool}).
|
|
76
76
|
|
|
77
|
-
@return: A
|
|
78
|
-
given, otherwise a tuple of C{float}s.
|
|
77
|
+
@return: A C{float}.
|
|
79
78
|
|
|
80
|
-
@raise
|
|
79
|
+
@raise ValueError: Invalid B{C{x}}.
|
|
81
80
|
'''
|
|
82
|
-
fl = []
|
|
83
|
-
_a = fl.append
|
|
84
|
-
_f = _floats.setdefault if _xkwds_get1(sets, sets=False) else \
|
|
85
|
-
_floats.get
|
|
86
81
|
try:
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
def _float(f): # in .datums, .ellipsoids, ...
|
|
98
|
-
'''(INTERNAL) Cache initial C{float}s.
|
|
99
|
-
'''
|
|
100
|
-
f = float(f)
|
|
101
|
-
return _floats.setdefault(f, f) # PYCHOK del _floats
|
|
82
|
+
f = float(x)
|
|
83
|
+
if f:
|
|
84
|
+
_f = _floats.setdefault if sets else _floats.get
|
|
85
|
+
f = _f(f, f)
|
|
86
|
+
else:
|
|
87
|
+
f = _N_0_0 if signBit(f) else _0_0
|
|
88
|
+
except Exception as X:
|
|
89
|
+
raise _ValueError(x=x, cause=X)
|
|
90
|
+
return f
|
|
102
91
|
|
|
103
92
|
|
|
104
93
|
def float0_(*xs):
|
|
105
94
|
'''Yield C{B{x}s} as a non-NEG0 C{float}.
|
|
106
95
|
'''
|
|
107
96
|
for x in xs:
|
|
108
|
-
yield float(x) if x else _0_0
|
|
97
|
+
yield float(x) or _0_0 # if x else _0_0
|
|
109
98
|
|
|
110
99
|
|
|
111
|
-
def _float0(
|
|
100
|
+
def _float0(x): # in .auxilats.auxily, .resections, .vector3dBase, ...
|
|
112
101
|
'''(INTERNAL) Return C{float(B{f})} or C{INT0}.
|
|
113
102
|
'''
|
|
114
|
-
if
|
|
115
|
-
f = float(
|
|
103
|
+
if x:
|
|
104
|
+
f = float(x)
|
|
116
105
|
f = _floats.get(f, f)
|
|
117
|
-
elif
|
|
118
|
-
f =
|
|
106
|
+
elif x is INT0:
|
|
107
|
+
f = x
|
|
108
|
+
else:
|
|
109
|
+
f = float(x) or _0_0 # force None, NN error
|
|
119
110
|
return f
|
|
120
111
|
|
|
121
112
|
|
|
113
|
+
def floats_(*xs, **sets): # sets=False
|
|
114
|
+
'''Yield each scalar as C{float} or I{intern}'ed C{float}.
|
|
115
|
+
|
|
116
|
+
@arg xs: One more values (C{scalar}), all positional.
|
|
117
|
+
@kwarg sets: Use C{B{sets}=True} to C{intern} each
|
|
118
|
+
B{C{fs}}, otherwise don't C{intern}.
|
|
119
|
+
|
|
120
|
+
@raise ValueError: Some B{C{xs}} is not C{scalar}.
|
|
121
|
+
'''
|
|
122
|
+
if sets:
|
|
123
|
+
sets = _xkwds_get1(sets, sets=False)
|
|
124
|
+
_f = _floats.setdefault if sets else _floats.get
|
|
125
|
+
try:
|
|
126
|
+
for i, x in enumerate(xs):
|
|
127
|
+
f = float(x)
|
|
128
|
+
yield _f(f, f) if f else \
|
|
129
|
+
(_N_0_0 if signBit(f) else _0_0) # preserve NEG0
|
|
130
|
+
except Exception as X:
|
|
131
|
+
xs_i = Fmt.SQUARE(xs=i)
|
|
132
|
+
raise _ValueError(xs_i, x, cause=X)
|
|
133
|
+
|
|
134
|
+
|
|
122
135
|
def _floatuple(*fs):
|
|
123
136
|
'''(INTERNAL) Cache a tuple of C{float}s.
|
|
124
137
|
'''
|
|
@@ -172,6 +185,13 @@ def _1_over(x):
|
|
|
172
185
|
return NINF if isneg0(x) else INF
|
|
173
186
|
|
|
174
187
|
|
|
188
|
+
def _Radius(**name_arg):
|
|
189
|
+
'''(INTERNAL) New named, cached C{Radius}.
|
|
190
|
+
'''
|
|
191
|
+
n, arg = _xkwds_item2(name_arg)
|
|
192
|
+
return Radius(_float(arg), name=n)
|
|
193
|
+
|
|
194
|
+
|
|
175
195
|
_floats = {} # PYCHOK floats cache, in .__main__
|
|
176
196
|
# _float = float # PYCHOK expected
|
|
177
197
|
# del _floats # XXX zap floats cache never
|
|
@@ -246,27 +266,30 @@ except ImportError: # PYCHOK no cover
|
|
|
246
266
|
MIN_EXP = Int(MIN_EXP =_log2(MIN)) # -307 base 10
|
|
247
267
|
# RADIX = Int(Radix =2) # base
|
|
248
268
|
|
|
249
|
-
EPS0 = _Float( EPS0
|
|
250
|
-
EPS02 = _Float( EPS02
|
|
251
|
-
EPS_2 = _Float( EPS_2
|
|
252
|
-
EPS1 = _Float( EPS1
|
|
253
|
-
EPS2 = _Float( EPS2
|
|
254
|
-
EPS4 = _Float( EPS4
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
269
|
+
EPS0 = _Float( EPS0 = EPS**2) # PYCHOK near-/non-zero comparison 4.930381e-32, or EPS or EPS_2
|
|
270
|
+
EPS02 = _Float( EPS02 = EPS**4) # PYCHOK near-zero-squared comparison 2.430865e-63
|
|
271
|
+
EPS_2 = _Float( EPS_2 = EPS / _2_0) # PYCHOK ≈ 1.110223024625e-16
|
|
272
|
+
EPS1 = _Float( EPS1 =_1_0 - EPS) # PYCHOK ≈ 0.9999999999999998
|
|
273
|
+
EPS2 = _Float( EPS2 = EPS * _2_0) # PYCHOK ≈ 4.440892098501e-16
|
|
274
|
+
EPS4 = _Float( EPS4 = EPS * _4_0) # PYCHOK ≈ 8.881784197001e-16
|
|
275
|
+
EPS8 = _Float( EPS8 = EPS * _8_0) # PYCHOK ≈ 1.776356839400e-15
|
|
276
|
+
# _1EPS = _Float(_1EPS =_1_0 + EPS) # PYCHOK ≈ 1.0000000000000002
|
|
277
|
+
_1_EPS = _Float(_1_EPS =_1_0 / EPS) # PYCHOK = 4503599627370496.0
|
|
278
|
+
# _2_EPS = _Float(_2_EPS =_2_0 / EPS) # PYCHOK = 9007199254740992.0
|
|
279
|
+
_EPS2e4 = _Float(_EPS2e4 = EPS2 * 1.e4) # PYCHOK ≈ 4.440892098501e-12
|
|
280
|
+
_EPS4e8 = _Float(_EPS4e8 = EPS4 * 1.e8) # PYCHOK ≈ 8.881784197001e-08
|
|
281
|
+
_EPSjam = _Float(_EPSjam = pow(EPS, _0_75)) # PYCHOK = 1.818989403546e-12
|
|
282
|
+
_EPSmin = _Float(_EPSmin = sqrt(MIN)) # PYCHOK = 1.49166814624e-154
|
|
283
|
+
_EPSqrt = _Float(_EPSqrt = sqrt(EPS)) # PYCHOK = 1.490116119385e-08
|
|
284
|
+
_EPStol = _Float(_EPStol =_EPSqrt * _0_1) # PYCHOK = 1.490116119385e-09 == sqrt(EPS * _0_01)
|
|
285
|
+
|
|
286
|
+
_89_999 = _Float(_89_999 =_90_0 * EPS1) # just below 90.0
|
|
266
287
|
# <https://Numbers.Computation.Free.FR/Constants/Miscellaneous/digits.html>
|
|
267
|
-
# _1__90 = _Float(_1__90
|
|
268
|
-
_2__PI = _Float(_2__PI
|
|
269
|
-
_K0_UTM = _Float(_K0_UTM = 0.9996)
|
|
288
|
+
# _1__90 = _Float(_1__90 =_1_0 / _90_0) # PYCHOK = 0.011_111_111_111_111_111_111_111_111_111_111_111_111_111_111_11111
|
|
289
|
+
_2__PI = _Float(_2__PI =_2_0 / _pi) # PYCHOK = 0.636_619_772_367_581_343_075_535_053_490_057_448_137_838_582_96182
|
|
290
|
+
_K0_UTM = _Float(_K0_UTM = 0.9996) # PYCHOK in .etm, .ktm, .utm, UTM scale at central meridian
|
|
291
|
+
_K0_UPS = _Float(_K0_UPS = 0.994) # PYCHOK in .ups, scale factor at central meridian
|
|
292
|
+
OVERFLOW = _Float(OVERFLOW=_1_0 / EPS0) # PYCHOK = 2.028240960365e+31
|
|
270
293
|
# sqrt(2) <https://WikiPedia.org/wiki/Square_root_of_2>
|
|
271
294
|
# 1.414213562373095_048_801_688_724_209_698_078_569_671_875_376_948_073_176_679_737_99
|
|
272
295
|
# _1SQRT2= _Float(_1SQRT2 =sqrt(_2_0) + 1)
|
|
@@ -307,7 +330,7 @@ R_QM = _Radius(R_QM=6372797.560856) # PYCHOK earth' quadratic mean radius (C{
|
|
|
307
330
|
R_VM = _Radius(R_VM=6366707.0194937) # PYCHOK aViation/naVigation earth radius (C{meter})
|
|
308
331
|
# R_AU= Meter( R_AU=149597870700.0) # PYCHOK <https://WikiPedia.org/wiki/Astronomical_unit>
|
|
309
332
|
|
|
310
|
-
_INF_NAN_NINF =
|
|
333
|
+
_INF_NAN_NINF = {INF, NAN, NINF, _inf, _nan}
|
|
311
334
|
_pos_self = _1_0.__pos__() is _1_0 # PYCHOK in .fsums, .vector3dBase
|
|
312
335
|
|
|
313
336
|
|
|
@@ -542,7 +565,7 @@ if __name__ == _DMAIN_:
|
|
|
542
565
|
|
|
543
566
|
# **) MIT License
|
|
544
567
|
#
|
|
545
|
-
# Copyright (C) 2016-
|
|
568
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
546
569
|
#
|
|
547
570
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
548
571
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/css.py
CHANGED
|
@@ -645,7 +645,7 @@ def toCss(latlon, cs0=None, height=None, Css=Css, **name):
|
|
|
645
645
|
|
|
646
646
|
# **) MIT License
|
|
647
647
|
#
|
|
648
|
-
# Copyright (C) 2016-
|
|
648
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
649
649
|
#
|
|
650
650
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
651
651
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/datums.py
CHANGED
|
@@ -733,7 +733,7 @@ if __name__ == _DMAIN_:
|
|
|
733
733
|
|
|
734
734
|
# **) MIT License
|
|
735
735
|
#
|
|
736
|
-
# Copyright (C) 2016-
|
|
736
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
737
737
|
#
|
|
738
738
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
739
739
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/deprecated/__init__.py
CHANGED
|
@@ -27,7 +27,7 @@ __all__ = (_ALL_DEPRECATED.deprecated_bases +
|
|
|
27
27
|
_ALL_DEPRECATED.deprecated_classes +
|
|
28
28
|
_ALL_DEPRECATED.deprecated_consterns +
|
|
29
29
|
_ALL_DEPRECATED.deprecated_functions)
|
|
30
|
-
__version__ = '25.
|
|
30
|
+
__version__ = '25.10.25'
|
|
31
31
|
|
|
32
32
|
if _unLazy0:
|
|
33
33
|
from pygeodesy.deprecated import bases, datum, nvector, rhumbBase, \
|
|
@@ -40,7 +40,7 @@ else: # lazily import modules and exported attrs
|
|
|
40
40
|
|
|
41
41
|
# **) MIT License
|
|
42
42
|
#
|
|
43
|
-
# Copyright (C) 2018-
|
|
43
|
+
# Copyright (C) 2018-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
44
44
|
#
|
|
45
45
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
46
46
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/deprecated/bases.py
CHANGED
|
@@ -19,7 +19,7 @@ class LatLonHeightBase(_LatLonBase): # PYCHOK no cover
|
|
|
19
19
|
|
|
20
20
|
# **) MIT License
|
|
21
21
|
#
|
|
22
|
-
# Copyright (C) 2016-
|
|
22
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
23
23
|
#
|
|
24
24
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
25
25
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/deprecated/classes.py
CHANGED
|
@@ -18,11 +18,12 @@ from pygeodesy.namedTuples import Forward4Tuple as _Forward4Tuple, \
|
|
|
18
18
|
UtmUps5Tuple as _UtmUps5Tuple, _NamedTuple
|
|
19
19
|
from pygeodesy.props import deprecated_class, deprecated_method
|
|
20
20
|
from pygeodesy.resections import TriAngle5Tuple as _TriAngle5Tuple
|
|
21
|
+
from pygeodesy.triaxials import Conformal, ConformalSphere, Conformal2Tuple
|
|
21
22
|
from pygeodesy.trf import TRFXform7Tuple as _TRFXform7Tuple
|
|
22
23
|
from pygeodesy.units import Bearing, Int, Lamd, Lat, Lon, Meter, Phid
|
|
23
24
|
|
|
24
25
|
__all__ = _ALL_DEPRECATED.deprecated_classes
|
|
25
|
-
__version__ = '25.
|
|
26
|
+
__version__ = '25.11.11'
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
class _Deprecated_NamedTuple(_NamedTuple):
|
|
@@ -46,6 +47,13 @@ class ClipCS3Tuple(_Deprecated_NamedTuple): # PYCHOK no cover
|
|
|
46
47
|
_Units_ = _ClipCS4Tuple._Units_[:3]
|
|
47
48
|
|
|
48
49
|
|
|
50
|
+
class ConformalTriaxial(Conformal):
|
|
51
|
+
'''DEPRECATED on 2025.11.11, use class L{Conformal}.'''
|
|
52
|
+
def __init__(self, *args, **kwds): # PYCHOK no cover
|
|
53
|
+
deprecated_class(self.__class__)
|
|
54
|
+
Conformal.__init__(self, *args, **kwds)
|
|
55
|
+
|
|
56
|
+
|
|
49
57
|
class EasNorExact4Tuple(_Deprecated_NamedTuple):
|
|
50
58
|
'''DEPRECATED, use class L{Forward4Tuple}, item C{gamma} for C{convergence}.'''
|
|
51
59
|
_Names_ = _reNames(_Forward4Tuple._Names_, _gamma_, _convergence_)
|
|
@@ -235,6 +243,28 @@ def HeightIDWcosineForsytheAndoyerLambert(knots, **kwds): # PYCHOK no cover
|
|
|
235
243
|
return HeightIDWcosineForsytheAndoyerLambert(knots, **kwds)
|
|
236
244
|
|
|
237
245
|
|
|
246
|
+
class JacobiConformal(Conformal):
|
|
247
|
+
'''DEPRECATED on 2025.10.25, use class L{Conformal}.'''
|
|
248
|
+
def __init__(self, *args, **kwds): # PYCHOK no cover
|
|
249
|
+
deprecated_class(self.__class__)
|
|
250
|
+
Conformal.__init__(self, *args, **kwds)
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
class JacobiConformalSpherical(ConformalSphere):
|
|
254
|
+
'''DEPRECATED on 2025.10.25, use class L{ConformalSphere}.'''
|
|
255
|
+
def __init__(self, *args, **kwds): # PYCHOK no cover
|
|
256
|
+
deprecated_class(self.__class__)
|
|
257
|
+
ConformalSphere.__init__(self, *args, **kwds)
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
class Jacobi2Tuple(Conformal2Tuple):
|
|
261
|
+
'''DEPRECATED on 25.11.11, use class L{Conformal2Tuple}.
|
|
262
|
+
'''
|
|
263
|
+
def __new__(cls, *args, **kwds):
|
|
264
|
+
deprecated_class(cls)
|
|
265
|
+
return Conformal2Tuple.__new__(cls, *args, **kwds)
|
|
266
|
+
|
|
267
|
+
|
|
238
268
|
class Lam_(Lamd):
|
|
239
269
|
'''DEPRECATED on 2024.06.15, use class L{Lamd}.'''
|
|
240
270
|
def __init__(self, *args, **kwds): # PYCHOK no cover
|
|
@@ -359,7 +389,7 @@ __all__ += _ALL_DOCS(_Deprecated_NamedTuple)
|
|
|
359
389
|
|
|
360
390
|
# **) MIT License
|
|
361
391
|
#
|
|
362
|
-
# Copyright (C) 2018-
|
|
392
|
+
# Copyright (C) 2018-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
363
393
|
#
|
|
364
394
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
365
395
|
# copy of this software and associated documentation files (the "Software"),
|
|
@@ -33,7 +33,7 @@ OK = _Deprecated_Str(OK='OK')
|
|
|
33
33
|
|
|
34
34
|
# **) MIT License
|
|
35
35
|
#
|
|
36
|
-
# Copyright (C) 2018-
|
|
36
|
+
# Copyright (C) 2018-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
37
37
|
#
|
|
38
38
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
39
39
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/deprecated/datum.py
CHANGED
|
@@ -19,7 +19,7 @@ assert _ALL_OTHER(Curvature2Tuple, Datum, Ellipsoid, Transform) + tuple(_.name
|
|
|
19
19
|
|
|
20
20
|
# **) MIT License
|
|
21
21
|
#
|
|
22
|
-
# Copyright (C) 2016-
|
|
22
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
23
23
|
#
|
|
24
24
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
25
25
|
# copy of this software and associated documentation files (the "Software"),
|
|
@@ -401,7 +401,7 @@ def utmZoneBand2(lat, lon): # PYCHOK no cover
|
|
|
401
401
|
|
|
402
402
|
# **) MIT License
|
|
403
403
|
#
|
|
404
|
-
# Copyright (C) 2018-
|
|
404
|
+
# Copyright (C) 2018-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
405
405
|
#
|
|
406
406
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
407
407
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/deprecated/nvector.py
CHANGED
|
@@ -27,7 +27,7 @@ assert (_ALL_OTHER(LatLonNvectorBase, Nvector, sumOf) +
|
|
|
27
27
|
|
|
28
28
|
# **) MIT License
|
|
29
29
|
#
|
|
30
|
-
# Copyright (C) 2016-
|
|
30
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
31
31
|
#
|
|
32
32
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
33
33
|
# copy of this software and associated documentation files (the "Software"),
|
|
@@ -11,7 +11,7 @@ __version__ = '25.05.12'
|
|
|
11
11
|
|
|
12
12
|
# **) MIT License
|
|
13
13
|
#
|
|
14
|
-
# Copyright (C) 2016-
|
|
14
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
15
15
|
#
|
|
16
16
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
17
17
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/deprecated/rhumbaux.py
CHANGED
|
@@ -12,7 +12,7 @@ __version__ = '25.05.12'
|
|
|
12
12
|
|
|
13
13
|
# **) MIT License
|
|
14
14
|
#
|
|
15
|
-
# Copyright (C) 2016-
|
|
15
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
16
16
|
#
|
|
17
17
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
18
18
|
# copy of this software and associated documentation files (the "Software"),
|
|
@@ -12,7 +12,7 @@ __version__ = '25.05.12'
|
|
|
12
12
|
|
|
13
13
|
# **) MIT License
|
|
14
14
|
#
|
|
15
|
-
# Copyright (C) 2016-
|
|
15
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
16
16
|
#
|
|
17
17
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
18
18
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/deprecated/rhumbx.py
CHANGED
|
@@ -12,7 +12,7 @@ __version__ = '25.05.12'
|
|
|
12
12
|
|
|
13
13
|
# **) MIT License
|
|
14
14
|
#
|
|
15
|
-
# Copyright (C) 2016-
|
|
15
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
16
16
|
#
|
|
17
17
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
18
18
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/dms.py
CHANGED
|
@@ -941,7 +941,7 @@ def toDMS(deg, form=_F_DMS, prec=2, sep=S_SEP, ddd=2, neg=_MINUS_, pos=_PLUS_, *
|
|
|
941
941
|
|
|
942
942
|
# **) MIT License
|
|
943
943
|
#
|
|
944
|
-
# Copyright (C) 2016-
|
|
944
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
945
945
|
#
|
|
946
946
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
947
947
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/ecef.py
CHANGED
|
@@ -1369,7 +1369,7 @@ __all__ += _ALL_DOCS(_EcefBase)
|
|
|
1369
1369
|
|
|
1370
1370
|
# **) MIT License
|
|
1371
1371
|
#
|
|
1372
|
-
# Copyright (C) 2016-
|
|
1372
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
1373
1373
|
#
|
|
1374
1374
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
1375
1375
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/ecefLocals.py
CHANGED
|
@@ -165,7 +165,7 @@ __all__ += _ALL_DOCS(_EcefLocal)
|
|
|
165
165
|
|
|
166
166
|
# **) MIT License
|
|
167
167
|
#
|
|
168
|
-
# Copyright (C) 2016-
|
|
168
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
169
169
|
#
|
|
170
170
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
171
171
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/elevations.py
CHANGED
|
@@ -255,7 +255,7 @@ if __name__ == _DMAIN_:
|
|
|
255
255
|
|
|
256
256
|
# **) MIT License
|
|
257
257
|
#
|
|
258
|
-
# Copyright (C) 2016-
|
|
258
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
259
259
|
#
|
|
260
260
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
261
261
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/ellipsoidalBase.py
CHANGED
|
@@ -1153,7 +1153,7 @@ __all__ += _ALL_DOCS(CartesianEllipsoidalBase, LatLonEllipsoidalBase)
|
|
|
1153
1153
|
|
|
1154
1154
|
# **) MIT License
|
|
1155
1155
|
#
|
|
1156
|
-
# Copyright (C) 2016-
|
|
1156
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
1157
1157
|
#
|
|
1158
1158
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
1159
1159
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/ellipsoidalBaseDI.py
CHANGED
|
@@ -888,7 +888,7 @@ del _1_0, _0_01
|
|
|
888
888
|
|
|
889
889
|
# **) MIT License
|
|
890
890
|
#
|
|
891
|
-
# Copyright (C) 2016-
|
|
891
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
892
892
|
#
|
|
893
893
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
894
894
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/ellipsoidalExact.py
CHANGED
|
@@ -315,7 +315,7 @@ __all__ += _ALL_OTHER(Cartesian, LatLon, # classes
|
|
|
315
315
|
|
|
316
316
|
# **) MIT License
|
|
317
317
|
#
|
|
318
|
-
# Copyright (C) 2016-
|
|
318
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
319
319
|
#
|
|
320
320
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
321
321
|
# copy of this software and associated documentation files (the "Software"),
|
|
@@ -314,7 +314,7 @@ __all__ += _ALL_OTHER(Cartesian, LatLon, # classes
|
|
|
314
314
|
|
|
315
315
|
# **) MIT License
|
|
316
316
|
#
|
|
317
|
-
# Copyright (C) 2016-
|
|
317
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
318
318
|
#
|
|
319
319
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
320
320
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/ellipsoidalKarney.py
CHANGED
|
@@ -354,7 +354,7 @@ __all__ += _ALL_OTHER(Cartesian, LatLon, # classes
|
|
|
354
354
|
|
|
355
355
|
# **) MIT License
|
|
356
356
|
#
|
|
357
|
-
# Copyright (C) 2016-
|
|
357
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
358
358
|
#
|
|
359
359
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
360
360
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/ellipsoidalNvector.py
CHANGED
|
@@ -660,7 +660,7 @@ __all__ += _ALL_OTHER(Cartesian, LatLon, Ned, Nvector, # classes
|
|
|
660
660
|
|
|
661
661
|
# **) MIT License
|
|
662
662
|
#
|
|
663
|
-
# Copyright (C) 2016-
|
|
663
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
664
664
|
#
|
|
665
665
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
666
666
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/ellipsoidalVincenty.py
CHANGED
|
@@ -573,7 +573,7 @@ __all__ += _ALL_DOCS(Cartesian, LatLon, intersecant2, # from .ellipsoidalBaseDI
|
|
|
573
573
|
|
|
574
574
|
# **) MIT License
|
|
575
575
|
#
|
|
576
|
-
# Copyright (C) 2016-
|
|
576
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
577
577
|
#
|
|
578
578
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
579
579
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/ellipsoids.py
CHANGED
|
@@ -88,7 +88,7 @@ from pygeodesy.namedTuples import Distance2Tuple, Vector3Tuple, Vector4Tuple
|
|
|
88
88
|
from pygeodesy.props import deprecated_Property_RO, Property_RO, property_doc_, \
|
|
89
89
|
deprecated_property_RO, property_RO, property_ROver
|
|
90
90
|
from pygeodesy.streprs import Fmt, fstr, instr, strs, unstr
|
|
91
|
-
# from pygeodesy.triaxials import _hartzell3 # _MODS
|
|
91
|
+
# from pygeodesy.triaxials.triaxial5 import _hartzell3, _plumbTo3 # _MODS
|
|
92
92
|
from pygeodesy.units import Azimuth, Bearing, Distance, Float, Float_, Height, Lamd, Lat, \
|
|
93
93
|
Meter, Meter2, Meter3, Phi, Phid, Radius, Radius_, Scalar
|
|
94
94
|
from pygeodesy.utily import atan1, atan1d, atan2b, degrees90, m2radians, radians2m, sincos2d
|
|
@@ -96,11 +96,12 @@ from pygeodesy.utily import atan1, atan1d, atan2b, degrees90, m2radians, radians
|
|
|
96
96
|
from math import asinh, atan, atanh, cos, degrees, exp, fabs, radians, sin, sinh, sqrt, tan # as _tan
|
|
97
97
|
|
|
98
98
|
__all__ = _ALL_LAZY.ellipsoids
|
|
99
|
-
__version__ = '25.
|
|
99
|
+
__version__ = '25.11.26'
|
|
100
100
|
|
|
101
101
|
_f_0_0 = Float(f =_0_0) # zero flattening
|
|
102
102
|
_f__0_0 = Float(f_=_0_0) # zero inverse flattening
|
|
103
103
|
# see U{WGS84_f<https://GeographicLib.SourceForge.io/C++/doc/classGeographicLib_1_1Constants.html>}
|
|
104
|
+
# _f_WGS84 = Float(f =_1_0 / (298257223563 / 1000000000)) # 0.003_352_810_664_747_480_5
|
|
104
105
|
_f__WGS84 = Float(f_=_1_0 / (1000000000 / 298257223563)) # 298.257223562_999_97 vs 298.257223563
|
|
105
106
|
|
|
106
107
|
|
|
@@ -1133,7 +1134,7 @@ class Ellipsoid(_NamedEnumItem):
|
|
|
1133
1134
|
methods L{Ellipsoid.height4} and L{Triaxial.hartzell4}.
|
|
1134
1135
|
'''
|
|
1135
1136
|
try:
|
|
1136
|
-
v, d, i = _MODS.triaxials._hartzell3(pov, los, self._triaxial)
|
|
1137
|
+
v, d, i = _MODS.triaxials.triaxial5._hartzell3(pov, los, self._triaxial)
|
|
1137
1138
|
except Exception as x:
|
|
1138
1139
|
raise IntersectionError(pov=pov, los=los, cause=x)
|
|
1139
1140
|
return Vector4Tuple(v.x, v.y, v.z, d, iteration=i, name__=self.hartzell4)
|
|
@@ -1187,7 +1188,7 @@ class Ellipsoid(_NamedEnumItem):
|
|
|
1187
1188
|
v = v.times_(t, t, 0) # force z=0.0
|
|
1188
1189
|
h = x - a # equatorial
|
|
1189
1190
|
else: # normal in 1st quadrant
|
|
1190
|
-
x, y, i = _MODS.triaxials._plumbTo3(x, y, self)
|
|
1191
|
+
x, y, i = _MODS.triaxials.triaxial5._plumbTo3(x, y, self)
|
|
1191
1192
|
t, v = v, v.times_(x, x, y)
|
|
1192
1193
|
h = t.minus(v).length
|
|
1193
1194
|
|
|
@@ -2411,7 +2412,7 @@ Ellipsoids._assert( # <https://WikiPedia.org/wiki/Earth_ellipsoid>
|
|
|
2411
2412
|
WGS60 = _lazy('WGS60', *_T(6378165.0, 6356783.28695944, 298.3)),
|
|
2412
2413
|
WGS66 = _lazy('WGS66', *_T(6378145.0, 6356759.76948868, 298.25)),
|
|
2413
2414
|
WGS72 = _lazy(_WGS72_, *_T(6378135.0, _0_0, 298.26)), # b=6356750.52
|
|
2414
|
-
WGS84 = _lazy(_WGS84_, *_T(R_MA, _0_0, _f__WGS84)),
|
|
2415
|
+
WGS84 = _lazy(_WGS84_, *_T(R_MA, _0_0, _f__WGS84)), # b=6356752.3142451793
|
|
2415
2416
|
# U{NOAA/NOS/NGS/inverse<https://GitHub.com/noaa-ngs/inverse/blob/main/invers3d.f>}
|
|
2416
2417
|
WGS84_NGS = _lazy('WGS84_NGS', *_T(R_MA, _0_0, 298.257222100882711243162836600094))
|
|
2417
2418
|
)
|
|
@@ -2475,7 +2476,7 @@ if __name__ == _DMAIN_:
|
|
|
2475
2476
|
|
|
2476
2477
|
# **) MIT License
|
|
2477
2478
|
#
|
|
2478
|
-
# Copyright (C) 2016-
|
|
2479
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
2479
2480
|
#
|
|
2480
2481
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
2481
2482
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/elliptic.py
CHANGED
|
@@ -1269,7 +1269,7 @@ class _RJfma(object):
|
|
|
1269
1269
|
|
|
1270
1270
|
# **) MIT License
|
|
1271
1271
|
#
|
|
1272
|
-
# Copyright (C) 2016-
|
|
1272
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
1273
1273
|
#
|
|
1274
1274
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
1275
1275
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/epsg.py
CHANGED
|
@@ -223,7 +223,7 @@ __all__ += _ALL_DOCS(decode2, encode)
|
|
|
223
223
|
|
|
224
224
|
# **) MIT License
|
|
225
225
|
#
|
|
226
|
-
# Copyright (C) 2016-
|
|
226
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
227
227
|
#
|
|
228
228
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
229
229
|
# copy of this software and associated documentation files (the "Software"),
|