pygeodesy 25.11.5__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 +1 -1
- pygeodesy/cartesianBase.py +7 -7
- pygeodesy/clipy.py +1 -1
- pygeodesy/constants.py +27 -24
- pygeodesy/css.py +1 -1
- pygeodesy/datums.py +1 -1
- pygeodesy/deprecated/__init__.py +1 -1
- pygeodesy/deprecated/bases.py +1 -1
- pygeodesy/deprecated/classes.py +14 -7
- 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 +1 -1
- 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 +23 -12
- 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.py → triaxials/triaxial5.py} +353 -781
- pygeodesy/units.py +1 -1
- pygeodesy/unitsBase.py +1 -1
- pygeodesy/ups.py +2 -3
- pygeodesy/utily.py +17 -14
- pygeodesy/utm.py +1 -1
- pygeodesy/utmups.py +1 -1
- pygeodesy/utmupsBase.py +1 -1
- pygeodesy/vector2d.py +1 -1
- pygeodesy/vector3d.py +1 -1
- pygeodesy/vector3dBase.py +1 -1
- pygeodesy/webmercator.py +1 -1
- pygeodesy/wgrs.py +1 -1
- {pygeodesy-25.11.5.dist-info → pygeodesy-25.12.12.dist-info}/METADATA +12 -12
- pygeodesy-25.12.12.dist-info/RECORD +125 -0
- pygeodesy-25.11.5.dist-info/RECORD +0 -119
- {pygeodesy-25.11.5.dist-info → pygeodesy-25.12.12.dist-info}/WHEEL +0 -0
- {pygeodesy-25.11.5.dist-info → pygeodesy-25.12.12.dist-info}/top_level.txt +0 -0
pygeodesy/auxilats/_CX_4.py
CHANGED
|
@@ -120,7 +120,7 @@ del _Rcoeffs, _Rdict, _Rtuple
|
|
|
120
120
|
|
|
121
121
|
# **) MIT License
|
|
122
122
|
#
|
|
123
|
-
# Copyright (C) 2023-
|
|
123
|
+
# Copyright (C) 2023-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
124
124
|
#
|
|
125
125
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
126
126
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/_CX_6.py
CHANGED
|
@@ -168,7 +168,7 @@ del _Rcoeffs, _Rdict, _Rtuple
|
|
|
168
168
|
|
|
169
169
|
# **) MIT License
|
|
170
170
|
#
|
|
171
|
-
# Copyright (C) 2023-
|
|
171
|
+
# Copyright (C) 2023-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
172
172
|
#
|
|
173
173
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
174
174
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/_CX_8.py
CHANGED
|
@@ -227,7 +227,7 @@ del _Rcoeffs, _Rdict, _Rtuple
|
|
|
227
227
|
|
|
228
228
|
# **) MIT License
|
|
229
229
|
#
|
|
230
|
-
# Copyright (C) 2023-
|
|
230
|
+
# Copyright (C) 2023-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
231
231
|
#
|
|
232
232
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
233
233
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/_CX_Rs.py
CHANGED
|
@@ -220,7 +220,7 @@ class _Rtuple(list): # MUST be list, NOT tuple!
|
|
|
220
220
|
|
|
221
221
|
# **) MIT License
|
|
222
222
|
#
|
|
223
|
-
# Copyright (C) 2024-
|
|
223
|
+
# Copyright (C) 2024-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
224
224
|
#
|
|
225
225
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
226
226
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/__init__.py
CHANGED
|
@@ -29,11 +29,11 @@ from pygeodesy.lazily import _ALL_OTHER
|
|
|
29
29
|
# no modules: auxAngle, auxDLat, auxDST, auxily, auxLat
|
|
30
30
|
__all__ = _ALL_OTHER(Aux, AuxAngle, AuxDLat, AuxDST, AuxLat,
|
|
31
31
|
AuxBeta, AuxChi, AuxMu, AuxPhi, AuxTheta, AuxXi)
|
|
32
|
-
__version__ = '25.
|
|
32
|
+
__version__ = '25.12.02'
|
|
33
33
|
|
|
34
34
|
# **) MIT License
|
|
35
35
|
#
|
|
36
|
-
# Copyright (C) 2023-
|
|
36
|
+
# Copyright (C) 2023-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/auxilats/__main__.py
CHANGED
|
@@ -53,7 +53,7 @@ _main(ALorder=int(argv[1])) if len(argv) == 2 and argv[1].isdigit() else _main()
|
|
|
53
53
|
|
|
54
54
|
# **) MIT License
|
|
55
55
|
#
|
|
56
|
-
# Copyright (C) 2023-
|
|
56
|
+
# Copyright (C) 2023-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
57
57
|
#
|
|
58
58
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
59
59
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/auxAngle.py
CHANGED
|
@@ -16,8 +16,8 @@ from __future__ import division as _; del _ # noqa: E702 ;
|
|
|
16
16
|
|
|
17
17
|
from pygeodesy.auxilats.auxily import Aux, _Aux2Greek, AuxError
|
|
18
18
|
from pygeodesy.basics import map1, map2, _xinstanceof
|
|
19
|
-
from pygeodesy.constants import EPS,
|
|
20
|
-
|
|
19
|
+
from pygeodesy.constants import EPS, MAX, NAN, _0_0, _0_5, _1_0, _copysign_1_0, \
|
|
20
|
+
isfinite, isnan, _over, _pos_self
|
|
21
21
|
# from pygeodesy.errors import AuxError # from .auxilats.auxily
|
|
22
22
|
from pygeodesy.fmath import hypot, unstr
|
|
23
23
|
from pygeodesy.fsums import _add_op_, _iadd_op_, _isub_op_, _sub_op_
|
|
@@ -32,11 +32,10 @@ from pygeodesy.utily import atan2, atan2d, sincos2, sincos2d
|
|
|
32
32
|
from math import asinh, copysign, degrees, fabs, radians, sinh
|
|
33
33
|
|
|
34
34
|
__all__ = ()
|
|
35
|
-
__version__ = '25.
|
|
35
|
+
__version__ = '25.12.02'
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
# del _INF_NAN_NINF, MAX
|
|
37
|
+
_MAX_2 = MAX * _0_5 # PYCHOK used!
|
|
38
|
+
# del MAX
|
|
40
39
|
|
|
41
40
|
|
|
42
41
|
class AuxAngle(_Named):
|
|
@@ -519,7 +518,7 @@ def _yx2(yx):
|
|
|
519
518
|
try:
|
|
520
519
|
y, x = yx
|
|
521
520
|
y, x = map1(float, y, x)
|
|
522
|
-
if y
|
|
521
|
+
if not (y and isfinite(y)):
|
|
523
522
|
x = _copysign_1_0(x)
|
|
524
523
|
except (TypeError, ValueError) as X:
|
|
525
524
|
raise AuxError(y=y, x=x, cause=X)
|
|
@@ -530,7 +529,7 @@ __all__ += _ALL_DOCS(AuxAngle, *_AUXClass.values())
|
|
|
530
529
|
|
|
531
530
|
# **) MIT License
|
|
532
531
|
#
|
|
533
|
-
# Copyright (C) 2023-
|
|
532
|
+
# Copyright (C) 2023-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
534
533
|
#
|
|
535
534
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
536
535
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/auxDLat.py
CHANGED
|
@@ -282,7 +282,7 @@ __all__ += _ALL_DOCS(AuxDLat)
|
|
|
282
282
|
|
|
283
283
|
# **) MIT License
|
|
284
284
|
#
|
|
285
|
-
# Copyright (C) 2023-
|
|
285
|
+
# Copyright (C) 2023-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
286
286
|
#
|
|
287
287
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
288
288
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/auxDST.py
CHANGED
|
@@ -274,7 +274,7 @@ __all__ += _ALL_DOCS(AuxDST)
|
|
|
274
274
|
|
|
275
275
|
# **) MIT License
|
|
276
276
|
#
|
|
277
|
-
# Copyright (C) 2023-
|
|
277
|
+
# Copyright (C) 2023-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
278
278
|
#
|
|
279
279
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
280
280
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/auxLat.py
CHANGED
|
@@ -847,7 +847,7 @@ __all__ += _ALL_DOCS(AuxLat)
|
|
|
847
847
|
|
|
848
848
|
# **) MIT License
|
|
849
849
|
#
|
|
850
|
-
# Copyright (C) 2023-
|
|
850
|
+
# Copyright (C) 2023-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
851
851
|
#
|
|
852
852
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
853
853
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/auxilats/auxily.py
CHANGED
|
@@ -235,7 +235,7 @@ del _Rkey
|
|
|
235
235
|
|
|
236
236
|
# **) MIT License
|
|
237
237
|
#
|
|
238
|
-
# Copyright (C) 2023-
|
|
238
|
+
# Copyright (C) 2023-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
239
239
|
#
|
|
240
240
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
241
241
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/azimuthal.py
CHANGED
|
@@ -48,7 +48,7 @@ from pygeodesy.constants import EPS, EPS0, EPS1, NAN, isnon0, _umod_360, \
|
|
|
48
48
|
from pygeodesy.ellipsoidalBase import LatLonEllipsoidalBase as _LLEB, \
|
|
49
49
|
_isin, _xinstanceof
|
|
50
50
|
from pygeodesy.datums import _spherical_datum, _WGS84
|
|
51
|
-
from pygeodesy.errors import _ValueError, _xdatum, _xkwds
|
|
51
|
+
from pygeodesy.errors import _ValueError, _xattr, _xdatum, _xkwds
|
|
52
52
|
from pygeodesy.fmath import euclid, hypot as _hypot, Fsum
|
|
53
53
|
# from pygeodesy.fsums import Fsum # from .fmath
|
|
54
54
|
# from pygeodesy.formy import antipode # _MODS
|
|
@@ -71,7 +71,7 @@ from pygeodesy.utily import asin1, atan1, atan2, atan2b, atan2d, \
|
|
|
71
71
|
from math import acos, degrees, fabs, sin, sqrt
|
|
72
72
|
|
|
73
73
|
__all__ = _ALL_LAZY.azimuthal
|
|
74
|
-
__version__ = '25.
|
|
74
|
+
__version__ = '25.11.29'
|
|
75
75
|
|
|
76
76
|
_EPS_K = _EPStol * _0_1 # Karney's eps_ or _EPSmin * _0_1?
|
|
77
77
|
_over_horizon_ = 'over horizon'
|
|
@@ -195,8 +195,9 @@ class _AzimuthalBase(_NamedBase):
|
|
|
195
195
|
'''
|
|
196
196
|
B = _LLEB if self.datum.isEllipsoidal else _LLB
|
|
197
197
|
_xinstanceof(B, LatLon2Tuple, LatLon4Tuple, latlon0=latlon0)
|
|
198
|
-
|
|
199
|
-
|
|
198
|
+
D = _xattr(latlon0, datum=B)
|
|
199
|
+
if D is not B:
|
|
200
|
+
_xdatum(self.datum, D, Error=AzimuthalError)
|
|
200
201
|
self.reset(latlon0.lat, latlon0.lon)
|
|
201
202
|
|
|
202
203
|
@Property_RO
|
|
@@ -1118,7 +1119,7 @@ __all__ += _ALL_DOCS(_AzimuthalBase, _AzimuthalGeodesic, _EquidistantBase, _Gnom
|
|
|
1118
1119
|
|
|
1119
1120
|
# **) MIT License
|
|
1120
1121
|
#
|
|
1121
|
-
# Copyright (C) 2016-
|
|
1122
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
1122
1123
|
#
|
|
1123
1124
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
1124
1125
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/basics.py
CHANGED
|
@@ -37,7 +37,7 @@ from math import copysign as _copysign
|
|
|
37
37
|
# import inspect as _inspect # _MODS
|
|
38
38
|
|
|
39
39
|
__all__ = _ALL_LAZY.basics
|
|
40
|
-
__version__ = '25.
|
|
40
|
+
__version__ = '25.12.02'
|
|
41
41
|
|
|
42
42
|
_below_ = 'below'
|
|
43
43
|
_list_tuple_types = (list, tuple)
|
|
@@ -347,8 +347,8 @@ def isfloat(obj, both=False):
|
|
|
347
347
|
|
|
348
348
|
|
|
349
349
|
try:
|
|
350
|
-
isidentifier = str.isidentifier #
|
|
351
|
-
except AttributeError: #
|
|
350
|
+
isidentifier = str.isidentifier # must be str
|
|
351
|
+
except AttributeError: # 2.0-
|
|
352
352
|
|
|
353
353
|
def isidentifier(obj):
|
|
354
354
|
'''Is B{C{obj}}ect a Python identifier?
|
|
@@ -445,7 +445,7 @@ def isiterabletype(obj, method='__iter__'):
|
|
|
445
445
|
|
|
446
446
|
|
|
447
447
|
try:
|
|
448
|
-
from keyword import iskeyword #
|
|
448
|
+
from keyword import iskeyword # 2.7+
|
|
449
449
|
except ImportError:
|
|
450
450
|
|
|
451
451
|
def iskeyword(unused):
|
|
@@ -713,12 +713,16 @@ def _reverange(n, stop=-1, step=-1):
|
|
|
713
713
|
return range(n - 1, stop, step)
|
|
714
714
|
|
|
715
715
|
|
|
716
|
-
|
|
717
|
-
|
|
716
|
+
try:
|
|
717
|
+
from math import signbit as signBit # 3.15+
|
|
718
|
+
except ImportError:
|
|
718
719
|
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
720
|
+
def signBit(x):
|
|
721
|
+
'''Return C{signbit(B{x})}, like C++, see also L{isneg}.
|
|
722
|
+
|
|
723
|
+
@return: C{True} if C{B{x} < 0} or C{NEG0} (C{bool}).
|
|
724
|
+
'''
|
|
725
|
+
return (x or _copysign(1, x)) < 0
|
|
722
726
|
|
|
723
727
|
|
|
724
728
|
def _signOf(x, ref): # in .fsums
|
|
@@ -1029,7 +1033,7 @@ _XPACKAGES = _splituple(_envPYGEODESY(_xpackages_).lower()) # test/bases._X_OK
|
|
|
1029
1033
|
|
|
1030
1034
|
# **) MIT License
|
|
1031
1035
|
#
|
|
1032
|
-
# Copyright (C) 2016-
|
|
1036
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
1033
1037
|
#
|
|
1034
1038
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
1035
1039
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/booleans.py
CHANGED
|
@@ -1979,7 +1979,7 @@ __all__ += _ALL_DOCS(_BooleanBase, _Clip,
|
|
|
1979
1979
|
|
|
1980
1980
|
# **) MIT License
|
|
1981
1981
|
#
|
|
1982
|
-
# Copyright (C) 2018-
|
|
1982
|
+
# Copyright (C) 2018-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
1983
1983
|
#
|
|
1984
1984
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
1985
1985
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/cartesianBase.py
CHANGED
|
@@ -11,8 +11,8 @@ U{https://www.Movable-Type.co.UK/scripts/geodesy/docs/latlon-ellipsoidal.js.html
|
|
|
11
11
|
'''
|
|
12
12
|
|
|
13
13
|
from pygeodesy.basics import _isin, _xinstanceof, typename
|
|
14
|
-
from pygeodesy.constants import EPS, EPS0, INT0, PI2, _isfinite,
|
|
15
|
-
_0_0, _1_0, _N_1_0, _2_0, _4_0, _6_0
|
|
14
|
+
from pygeodesy.constants import EPS, EPS0, INT0, NAN, PI2, _isfinite, \
|
|
15
|
+
_0_0, _1_0, _N_1_0, _2_0, _4_0, _6_0, isnear0
|
|
16
16
|
from pygeodesy.datums import Datum, _earth_ellipsoid, _spherical_datum, \
|
|
17
17
|
Transform, _WGS84
|
|
18
18
|
# from pygeodesy.ecef import EcefKarney # _MODS
|
|
@@ -34,7 +34,7 @@ from pygeodesy.props import deprecated_method, Property, Property_RO, \
|
|
|
34
34
|
property_doc_, property_RO, _update_all
|
|
35
35
|
# from pygeodesy import resections as _resections # _MODS.into
|
|
36
36
|
# from pygeodesy.streprs import Fmt # from .fsums
|
|
37
|
-
# from pygeodesy.triaxials import Triaxial_ # _MODS
|
|
37
|
+
# from pygeodesy.triaxials.triaxial5 import Triaxial_ # _MODS
|
|
38
38
|
from pygeodesy.units import Degrees, Height, _heigHt, _isMeter, Meter, Radians
|
|
39
39
|
from pygeodesy.utily import acos1, atan2, sincos2d, sincos2_, degrees, radians
|
|
40
40
|
from pygeodesy.vector3d import Vector3d, _xyzhdlln4
|
|
@@ -43,7 +43,7 @@ from pygeodesy.vector3d import Vector3d, _xyzhdlln4
|
|
|
43
43
|
# from math import degrees, fabs, radians, sqrt # from .fmath, .utily
|
|
44
44
|
|
|
45
45
|
__all__ = _ALL_LAZY.cartesianBase
|
|
46
|
-
__version__ = '25.
|
|
46
|
+
__version__ = '25.11.07'
|
|
47
47
|
|
|
48
48
|
_r_ = 'r'
|
|
49
49
|
_resections = _MODS.into(resections=__name__)
|
|
@@ -326,7 +326,7 @@ class CartesianBase(Vector3d, _EcefLocal):
|
|
|
326
326
|
try:
|
|
327
327
|
r = self.datum.ellipsoid.height4(self, normal=True)
|
|
328
328
|
except (AttributeError, ValueError): # no datum, null cartesian,
|
|
329
|
-
r = Vector4Tuple(self.x, self.y, self.z,
|
|
329
|
+
r = Vector4Tuple(self.x, self.y, self.z, NAN, name__=self.height4)
|
|
330
330
|
return r
|
|
331
331
|
|
|
332
332
|
def height4(self, earth=None, normal=True, **Cartesian_and_kwds):
|
|
@@ -361,7 +361,7 @@ class CartesianBase(Vector3d, _EcefLocal):
|
|
|
361
361
|
d = self.datum if earth is None else earth
|
|
362
362
|
if normal and d is self.datum:
|
|
363
363
|
r = self._height4
|
|
364
|
-
elif isinstance(d, _MODS.triaxials.Triaxial_):
|
|
364
|
+
elif isinstance(d, _MODS.triaxials.triaxial5.Triaxial_):
|
|
365
365
|
r = d.height4(self, normal=normal)
|
|
366
366
|
try:
|
|
367
367
|
d = d.toEllipsoid(name=n)
|
|
@@ -994,7 +994,7 @@ __all__ += _ALL_DOCS(CartesianBase)
|
|
|
994
994
|
|
|
995
995
|
# **) MIT License
|
|
996
996
|
#
|
|
997
|
-
# Copyright (C) 2016-
|
|
997
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
998
998
|
#
|
|
999
999
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
1000
1000
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/clipy.py
CHANGED
|
@@ -678,7 +678,7 @@ def clipSH3(points, corners, closed=False, inull=False):
|
|
|
678
678
|
|
|
679
679
|
# **) MIT License
|
|
680
680
|
#
|
|
681
|
-
# Copyright (C) 2018-
|
|
681
|
+
# Copyright (C) 2018-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
682
682
|
#
|
|
683
683
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
684
684
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/constants.py
CHANGED
|
@@ -14,7 +14,7 @@ from pygeodesy.basics import _copysign, isbool, iscomplex, isint, signBit
|
|
|
14
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):
|
|
@@ -266,27 +266,30 @@ except ImportError: # PYCHOK no cover
|
|
|
266
266
|
MIN_EXP = Int(MIN_EXP =_log2(MIN)) # -307 base 10
|
|
267
267
|
# RADIX = Int(Radix =2) # base
|
|
268
268
|
|
|
269
|
-
EPS0 = _Float( EPS0
|
|
270
|
-
EPS02 = _Float( EPS02
|
|
271
|
-
EPS_2 = _Float( EPS_2
|
|
272
|
-
EPS1 = _Float( EPS1
|
|
273
|
-
EPS2 = _Float( EPS2
|
|
274
|
-
EPS4 = _Float( EPS4
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
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
|
|
286
287
|
# <https://Numbers.Computation.Free.FR/Constants/Miscellaneous/digits.html>
|
|
287
|
-
# _1__90 = _Float(_1__90
|
|
288
|
-
_2__PI = _Float(_2__PI
|
|
289
|
-
_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
|
|
290
293
|
# sqrt(2) <https://WikiPedia.org/wiki/Square_root_of_2>
|
|
291
294
|
# 1.414213562373095_048_801_688_724_209_698_078_569_671_875_376_948_073_176_679_737_99
|
|
292
295
|
# _1SQRT2= _Float(_1SQRT2 =sqrt(_2_0) + 1)
|
|
@@ -327,7 +330,7 @@ R_QM = _Radius(R_QM=6372797.560856) # PYCHOK earth' quadratic mean radius (C{
|
|
|
327
330
|
R_VM = _Radius(R_VM=6366707.0194937) # PYCHOK aViation/naVigation earth radius (C{meter})
|
|
328
331
|
# R_AU= Meter( R_AU=149597870700.0) # PYCHOK <https://WikiPedia.org/wiki/Astronomical_unit>
|
|
329
332
|
|
|
330
|
-
_INF_NAN_NINF =
|
|
333
|
+
_INF_NAN_NINF = {INF, NAN, NINF, _inf, _nan}
|
|
331
334
|
_pos_self = _1_0.__pos__() is _1_0 # PYCHOK in .fsums, .vector3dBase
|
|
332
335
|
|
|
333
336
|
|
|
@@ -562,7 +565,7 @@ if __name__ == _DMAIN_:
|
|
|
562
565
|
|
|
563
566
|
# **) MIT License
|
|
564
567
|
#
|
|
565
|
-
# Copyright (C) 2016-
|
|
568
|
+
# Copyright (C) 2016-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
566
569
|
#
|
|
567
570
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
568
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
|
@@ -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,12 +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
|
|
21
|
+
from pygeodesy.triaxials import Conformal, ConformalSphere, Conformal2Tuple
|
|
22
22
|
from pygeodesy.trf import TRFXform7Tuple as _TRFXform7Tuple
|
|
23
23
|
from pygeodesy.units import Bearing, Int, Lamd, Lat, Lon, Meter, Phid
|
|
24
24
|
|
|
25
25
|
__all__ = _ALL_DEPRECATED.deprecated_classes
|
|
26
|
-
__version__ = '25.
|
|
26
|
+
__version__ = '25.11.11'
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
class _Deprecated_NamedTuple(_NamedTuple):
|
|
@@ -47,6 +47,13 @@ class ClipCS3Tuple(_Deprecated_NamedTuple): # PYCHOK no cover
|
|
|
47
47
|
_Units_ = _ClipCS4Tuple._Units_[:3]
|
|
48
48
|
|
|
49
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
|
+
|
|
50
57
|
class EasNorExact4Tuple(_Deprecated_NamedTuple):
|
|
51
58
|
'''DEPRECATED, use class L{Forward4Tuple}, item C{gamma} for C{convergence}.'''
|
|
52
59
|
_Names_ = _reNames(_Forward4Tuple._Names_, _gamma_, _convergence_)
|
|
@@ -236,11 +243,11 @@ def HeightIDWcosineForsytheAndoyerLambert(knots, **kwds): # PYCHOK no cover
|
|
|
236
243
|
return HeightIDWcosineForsytheAndoyerLambert(knots, **kwds)
|
|
237
244
|
|
|
238
245
|
|
|
239
|
-
class JacobiConformal(
|
|
240
|
-
'''DEPRECATED on 2025.10.25, use class L{
|
|
246
|
+
class JacobiConformal(Conformal):
|
|
247
|
+
'''DEPRECATED on 2025.10.25, use class L{Conformal}.'''
|
|
241
248
|
def __init__(self, *args, **kwds): # PYCHOK no cover
|
|
242
249
|
deprecated_class(self.__class__)
|
|
243
|
-
|
|
250
|
+
Conformal.__init__(self, *args, **kwds)
|
|
244
251
|
|
|
245
252
|
|
|
246
253
|
class JacobiConformalSpherical(ConformalSphere):
|
|
@@ -251,7 +258,7 @@ class JacobiConformalSpherical(ConformalSphere):
|
|
|
251
258
|
|
|
252
259
|
|
|
253
260
|
class Jacobi2Tuple(Conformal2Tuple):
|
|
254
|
-
'''DEPRECATED on 25.
|
|
261
|
+
'''DEPRECATED on 25.11.11, use class L{Conformal2Tuple}.
|
|
255
262
|
'''
|
|
256
263
|
def __new__(cls, *args, **kwds):
|
|
257
264
|
deprecated_class(cls)
|
|
@@ -382,7 +389,7 @@ __all__ += _ALL_DOCS(_Deprecated_NamedTuple)
|
|
|
382
389
|
|
|
383
390
|
# **) MIT License
|
|
384
391
|
#
|
|
385
|
-
# Copyright (C) 2018-
|
|
392
|
+
# Copyright (C) 2018-2026 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
386
393
|
#
|
|
387
394
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
388
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"),
|