pygeodesy 24.11.11__py2.py3-none-any.whl → 24.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-24.11.11.dist-info → PyGeodesy-24.12.12.dist-info}/METADATA +4 -4
- PyGeodesy-24.12.12.dist-info/RECORD +118 -0
- {PyGeodesy-24.11.11.dist-info → PyGeodesy-24.12.12.dist-info}/WHEEL +1 -1
- pygeodesy/__init__.py +4 -4
- pygeodesy/__main__.py +1 -1
- pygeodesy/albers.py +5 -5
- 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 +1 -1
- pygeodesy/auxilats/__main__.py +1 -1
- pygeodesy/auxilats/auxAngle.py +5 -5
- pygeodesy/auxilats/auxDLat.py +6 -6
- pygeodesy/auxilats/auxDST.py +2 -2
- pygeodesy/auxilats/auxLat.py +5 -5
- pygeodesy/auxilats/auxily.py +2 -2
- pygeodesy/azimuthal.py +5 -5
- pygeodesy/basics.py +1 -1
- pygeodesy/booleans.py +1 -1
- pygeodesy/cartesianBase.py +22 -61
- pygeodesy/clipy.py +1 -1
- pygeodesy/constants.py +3 -3
- 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 +1 -1
- pygeodesy/deprecated/consterns.py +1 -1
- pygeodesy/deprecated/datum.py +1 -1
- pygeodesy/deprecated/functions.py +18 -8
- 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 +53 -56
- pygeodesy/elevations.py +1 -1
- pygeodesy/ellipsoidalBase.py +3 -3
- 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 +6 -5
- pygeodesy/ellipsoids.py +4 -5
- pygeodesy/elliptic.py +6 -6
- pygeodesy/epsg.py +1 -1
- pygeodesy/errors.py +1 -1
- pygeodesy/etm.py +5 -5
- pygeodesy/fmath.py +17 -16
- pygeodesy/formy.py +71 -104
- pygeodesy/frechet.py +1 -1
- pygeodesy/fstats.py +1 -1
- pygeodesy/fsums.py +32 -33
- pygeodesy/gars.py +1 -1
- pygeodesy/geodesici.py +4 -4
- pygeodesy/geodesicw.py +1 -1
- pygeodesy/geodesicx/_C4_24.py +2 -2
- pygeodesy/geodesicx/_C4_27.py +2 -2
- pygeodesy/geodesicx/_C4_30.py +2 -2
- pygeodesy/geodesicx/__init__.py +1 -1
- pygeodesy/geodesicx/__main__.py +1 -1
- pygeodesy/geodesicx/gx.py +6 -5
- pygeodesy/geodesicx/gxarea.py +2 -2
- pygeodesy/geodesicx/gxbases.py +2 -2
- pygeodesy/geodesicx/gxline.py +16 -12
- pygeodesy/geodsolve.py +1 -1
- 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 +2 -3
- pygeodesy/iters.py +1 -1
- pygeodesy/karney.py +3 -3
- pygeodesy/ktm.py +16 -15
- pygeodesy/latlonBase.py +291 -341
- pygeodesy/lazily.py +11 -11
- pygeodesy/lcc.py +1 -1
- pygeodesy/ltp.py +46 -50
- pygeodesy/ltpTuples.py +145 -128
- pygeodesy/mgrs.py +1 -1
- pygeodesy/named.py +149 -3
- pygeodesy/namedTuples.py +58 -7
- pygeodesy/nvectorBase.py +122 -105
- pygeodesy/osgr.py +1 -1
- pygeodesy/points.py +1 -1
- pygeodesy/props.py +1 -1
- pygeodesy/resections.py +18 -17
- pygeodesy/rhumb/__init__.py +1 -1
- pygeodesy/rhumb/aux_.py +2 -2
- pygeodesy/rhumb/bases.py +2 -2
- pygeodesy/rhumb/ekx.py +4 -4
- pygeodesy/rhumb/solve.py +1 -1
- pygeodesy/simplify.py +289 -401
- pygeodesy/solveBase.py +1 -1
- pygeodesy/sphericalBase.py +1 -1
- pygeodesy/sphericalNvector.py +5 -5
- pygeodesy/sphericalTrigonometry.py +7 -6
- pygeodesy/streprs.py +10 -5
- pygeodesy/trf.py +1 -1
- pygeodesy/triaxials.py +23 -16
- pygeodesy/units.py +16 -16
- pygeodesy/unitsBase.py +1 -1
- pygeodesy/ups.py +4 -4
- pygeodesy/utily.py +202 -145
- pygeodesy/utm.py +5 -5
- pygeodesy/utmups.py +1 -1
- pygeodesy/utmupsBase.py +1 -1
- pygeodesy/vector2d.py +5 -5
- pygeodesy/vector3d.py +14 -3
- pygeodesy/vector3dBase.py +5 -5
- pygeodesy/webmercator.py +1 -1
- pygeodesy/wgrs.py +1 -1
- PyGeodesy-24.11.11.dist-info/RECORD +0 -118
- {PyGeodesy-24.11.11.dist-info → PyGeodesy-24.12.12.dist-info}/top_level.txt +0 -0
pygeodesy/cartesianBase.py
CHANGED
|
@@ -24,32 +24,32 @@ from pygeodesy.fsums import fsumf_, Fmt
|
|
|
24
24
|
from pygeodesy.interns import _COMMASPACE_, _datum_, _no_, _phi_
|
|
25
25
|
from pygeodesy.interns import _ellipsoidal_, _spherical_ # PYCHOK used!
|
|
26
26
|
from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS
|
|
27
|
-
from pygeodesy.named import _name2__, _Pass
|
|
27
|
+
from pygeodesy.named import _name2__, _NamedLocal, _Pass
|
|
28
28
|
from pygeodesy.namedTuples import LatLon4Tuple, _NamedTupleTo , Vector3Tuple, \
|
|
29
29
|
Vector4Tuple, Bearing2Tuple # PYCHOK .sphericalBase
|
|
30
30
|
# from pygeodesy.nvectorBase import _N_vector # _MODS
|
|
31
31
|
from pygeodesy.props import deprecated_method, Property, Property_RO, property_doc_, \
|
|
32
|
-
property_RO,
|
|
32
|
+
property_RO, _update_all
|
|
33
33
|
# from pygeodesy,resections import cassini, collins5, pierlot, pierlotx, \
|
|
34
34
|
# tienstra7 # _MODS
|
|
35
35
|
# from pygeodesy.streprs import Fmt # from .fsums
|
|
36
36
|
# from pygeodesy.triaxials import Triaxial_ # _MODS
|
|
37
37
|
from pygeodesy.units import Degrees, Height, _heigHt, _isMeter, Meter, Radians
|
|
38
|
-
from pygeodesy.utily import acos1, sincos2d, sincos2_,
|
|
38
|
+
from pygeodesy.utily import acos1, atan2, sincos2d, sincos2_, degrees, radians
|
|
39
39
|
from pygeodesy.vector3d import Vector3d, _xyzhdlln4
|
|
40
40
|
# from pygeodesy.vector3dBase import _xyz3 # _MODS
|
|
41
41
|
# from pygeodesy import ltp # _MODS
|
|
42
42
|
|
|
43
|
-
# from math import
|
|
43
|
+
# from math import degrees, fabs, radians, sqrt # from .fmath, .utily
|
|
44
44
|
|
|
45
45
|
__all__ = _ALL_LAZY.cartesianBase
|
|
46
|
-
__version__ = '24.
|
|
46
|
+
__version__ = '24.12.04'
|
|
47
47
|
|
|
48
48
|
_r_ = 'r'
|
|
49
49
|
_theta_ = 'theta'
|
|
50
50
|
|
|
51
51
|
|
|
52
|
-
class CartesianBase(Vector3d):
|
|
52
|
+
class CartesianBase(Vector3d, _NamedLocal):
|
|
53
53
|
'''(INTERNAL) Base class for ellipsoidal and spherical C{Cartesian}.
|
|
54
54
|
'''
|
|
55
55
|
_datum = None # L{Datum}, to be overriden
|
|
@@ -211,12 +211,6 @@ class CartesianBase(Vector3d):
|
|
|
211
211
|
r = Cartesian(*c, **kwds)
|
|
212
212
|
return r.renamed(n) if n else r
|
|
213
213
|
|
|
214
|
-
@property_ROnce
|
|
215
|
-
def Ecef(self):
|
|
216
|
-
'''Get the ECEF I{class} (L{EcefKarney}), I{once}.
|
|
217
|
-
'''
|
|
218
|
-
return _MODS.ecef.EcefKarney
|
|
219
|
-
|
|
220
214
|
@Property_RO
|
|
221
215
|
def _ecef9(self):
|
|
222
216
|
'''(INTERNAL) Helper for L{toEcef}, L{toLocal} and L{toLtp} (L{Ecef9Tuple}).
|
|
@@ -231,14 +225,14 @@ class CartesianBase(Vector3d):
|
|
|
231
225
|
|
|
232
226
|
def hartzell(self, los=False, earth=None):
|
|
233
227
|
'''Compute the intersection of a Line-Of-Sight from this cartesian Point-Of-View
|
|
234
|
-
(pov) and this cartesian's ellipsoid surface.
|
|
228
|
+
(pov) and this cartesian's C{datum} ellipsoid surface.
|
|
235
229
|
|
|
236
230
|
@kwarg los: Line-Of-Sight, I{direction} to the ellipsoid (L{Los}, L{Vector3d}),
|
|
237
231
|
C{True} for the I{normal, plumb} onto the surface or I{False} or
|
|
238
232
|
C{None} to point to the center of the ellipsoid.
|
|
239
233
|
@kwarg earth: The earth model (L{Datum}, L{Ellipsoid}, L{Ellipsoid2}, L{a_f2Tuple}
|
|
240
234
|
or C{scalar} radius in C{meter}), overriding this cartesian's
|
|
241
|
-
|
|
235
|
+
datum.
|
|
242
236
|
|
|
243
237
|
@return: The intersection (C{Cartesian}) with C{.height} set to the distance to
|
|
244
238
|
this C{pov}.
|
|
@@ -284,7 +278,8 @@ class CartesianBase(Vector3d):
|
|
|
284
278
|
return r
|
|
285
279
|
|
|
286
280
|
def height3(self, earth=None, height=None, **Cartesian_and_kwds):
|
|
287
|
-
'''Compute the cartesian at a height above or below this certesian's
|
|
281
|
+
'''Compute the cartesian at a height above or below this certesian's
|
|
282
|
+
C{datum} ellipsoid surface.
|
|
288
283
|
|
|
289
284
|
@kwarg earth: A datum, ellipsoid, triaxial ellipsoid or earth radius,
|
|
290
285
|
I{overriding} this cartesian's datum (L{Datum}, L{Ellipsoid},
|
|
@@ -411,12 +406,6 @@ class CartesianBase(Vector3d):
|
|
|
411
406
|
'''
|
|
412
407
|
return self.toEcef().latlonheightdatum
|
|
413
408
|
|
|
414
|
-
@Property_RO
|
|
415
|
-
def _Ltp(self):
|
|
416
|
-
'''(INTERNAL) Cache for L{toLtp}.
|
|
417
|
-
'''
|
|
418
|
-
return _MODS.ltp.Ltp(self._ecef9, ecef=self.Ecef(self.datum), name=self.name)
|
|
419
|
-
|
|
420
409
|
@Property_RO
|
|
421
410
|
def _N_vector(self):
|
|
422
411
|
'''(INTERNAL) Get the (C{nvectorBase._N_vector_}).
|
|
@@ -696,8 +685,8 @@ class CartesianBase(Vector3d):
|
|
|
696
685
|
def toEcef(self):
|
|
697
686
|
'''Convert this cartesian to I{geodetic} (lat-/longitude) coordinates.
|
|
698
687
|
|
|
699
|
-
@return: An L{Ecef9Tuple}C{(x, y, z, lat, lon, height,
|
|
700
|
-
|
|
688
|
+
@return: An L{Ecef9Tuple}C{(x, y, z, lat, lon, height, C, M, datum)}
|
|
689
|
+
with C{C} and C{M} if available.
|
|
701
690
|
|
|
702
691
|
@raise EcefError: A C{.datum} or an ECEF issue.
|
|
703
692
|
'''
|
|
@@ -706,18 +695,16 @@ class CartesianBase(Vector3d):
|
|
|
706
695
|
def toLatLon(self, datum=None, height=None, LatLon=None, **LatLon_kwds): # see .ecef.Ecef9Tuple.toDatum
|
|
707
696
|
'''Convert this cartesian to a I{geodetic} (lat-/longitude) point.
|
|
708
697
|
|
|
709
|
-
@kwarg datum: Optional datum (L{Datum}, L{Ellipsoid}, L{Ellipsoid2}
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
@kwarg
|
|
714
|
-
|
|
715
|
-
@kwarg LatLon_kwds: Optional, additional B{C{LatLon}} keyword
|
|
716
|
-
arguments, ignored if C{B{LatLon} is None}.
|
|
698
|
+
@kwarg datum: Optional datum (L{Datum}, L{Ellipsoid}, L{Ellipsoid2} or L{a_f2Tuple}).
|
|
699
|
+
@kwarg height: Optional height, overriding the converted height (C{meter}), only if
|
|
700
|
+
C{B{LatLon} is not None}.
|
|
701
|
+
@kwarg LatLon: Optional class to return the geodetic point (C{LatLon}) or C{None}.
|
|
702
|
+
@kwarg LatLon_kwds: Optional, additional B{C{LatLon}} keyword arguments, ignored if
|
|
703
|
+
C{B{LatLon} is None}.
|
|
717
704
|
|
|
718
|
-
@return: The geodetic point (B{C{LatLon}}) or if C{B{LatLon}
|
|
719
|
-
|
|
720
|
-
|
|
705
|
+
@return: The geodetic point (B{C{LatLon}}) or if C{B{LatLon}is None}, an
|
|
706
|
+
L{Ecef9Tuple}C{(x, y, z, lat, lon, height, C, M, datum)} with C{C}
|
|
707
|
+
and C{M} if available.
|
|
721
708
|
|
|
722
709
|
@raise TypeError: Invalid B{C{datum}} or B{C{LatLon_kwds}}.
|
|
723
710
|
'''
|
|
@@ -735,32 +722,6 @@ class CartesianBase(Vector3d):
|
|
|
735
722
|
_xdatum(r.datum, d)
|
|
736
723
|
return r
|
|
737
724
|
|
|
738
|
-
def toLocal(self, Xyz=None, ltp=None, **Xyz_kwds):
|
|
739
|
-
'''Convert this I{geocentric} cartesian to I{local} C{X}, C{Y} and C{Z}.
|
|
740
|
-
|
|
741
|
-
@kwarg Xyz: Optional class to return C{X}, C{Y} and C{Z} (L{XyzLocal},
|
|
742
|
-
L{Enu}, L{Ned}) or C{None}.
|
|
743
|
-
@kwarg ltp: The I{local tangent plane} (LTP) to use, overriding this
|
|
744
|
-
cartesian's LTP (L{Ltp}).
|
|
745
|
-
@kwarg Xyz_kwds: Optional, additional B{C{Xyz}} keyword arguments,
|
|
746
|
-
ignored if C{B{Xyz} is None}.
|
|
747
|
-
|
|
748
|
-
@return: An B{C{Xyz}} instance or a L{Local9Tuple}C{(x, y, z, lat, lon,
|
|
749
|
-
height, ltp, ecef, M)} if C{B{Xyz} is None} (with C{M=None}).
|
|
750
|
-
|
|
751
|
-
@raise TypeError: Invalid B{C{ltp}}.
|
|
752
|
-
'''
|
|
753
|
-
return _MODS.ltp._toLocal(self, ltp, Xyz, Xyz_kwds) # self._ecef9
|
|
754
|
-
|
|
755
|
-
def toLtp(self, Ecef=None, **name):
|
|
756
|
-
'''Return the I{local tangent plane} (LTP) for this cartesian.
|
|
757
|
-
|
|
758
|
-
@kwarg Ecef: Optional ECEF I{class} (L{EcefKarney}, ...
|
|
759
|
-
L{EcefYou}), overriding this cartesian's C{Ecef}.
|
|
760
|
-
@kwarg name: Optional C{B{name}=NN} (C{str}).
|
|
761
|
-
'''
|
|
762
|
-
return _MODS.ltp._toLtp(self, Ecef, self._ecef9, name) # self._Ltp
|
|
763
|
-
|
|
764
725
|
def toNvector(self, Nvector=None, datum=None, **name_Nvector_kwds):
|
|
765
726
|
'''Convert this cartesian to C{n-vector} components, I{including height}.
|
|
766
727
|
|
|
@@ -1030,7 +991,7 @@ __all__ += _ALL_DOCS(CartesianBase)
|
|
|
1030
991
|
|
|
1031
992
|
# **) MIT License
|
|
1032
993
|
#
|
|
1033
|
-
# Copyright (C) 2016-
|
|
994
|
+
# Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
1034
995
|
#
|
|
1035
996
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
1036
997
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/clipy.py
CHANGED
|
@@ -683,7 +683,7 @@ def clipSH3(points, corners, closed=False, inull=False):
|
|
|
683
683
|
|
|
684
684
|
# **) MIT License
|
|
685
685
|
#
|
|
686
|
-
# Copyright (C) 2018-
|
|
686
|
+
# Copyright (C) 2018-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
687
687
|
#
|
|
688
688
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
689
689
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/constants.py
CHANGED
|
@@ -348,8 +348,8 @@ def isfinite(obj):
|
|
|
348
348
|
@arg obj: Value (C{scalar}, C{complex}, an L{Fsum} or
|
|
349
349
|
L{Fsum2Tuple}).
|
|
350
350
|
|
|
351
|
-
@return: C{False} if B{C{obj}} is C{INF}, C{NINF}
|
|
352
|
-
|
|
351
|
+
@return: C{False} if B{C{obj}} is C{INF}, C{NINF} or
|
|
352
|
+
C{NAN}, C{True} otherwise.
|
|
353
353
|
|
|
354
354
|
@raise TypeError: Non-scalar and non-complex B{C{obj}}.
|
|
355
355
|
'''
|
|
@@ -515,7 +515,7 @@ if __name__ == '__main__':
|
|
|
515
515
|
|
|
516
516
|
# **) MIT License
|
|
517
517
|
#
|
|
518
|
-
# Copyright (C) 2016-
|
|
518
|
+
# Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
519
519
|
#
|
|
520
520
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
521
521
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/css.py
CHANGED
|
@@ -642,7 +642,7 @@ def toCss(latlon, cs0=None, height=None, Css=Css, **name):
|
|
|
642
642
|
|
|
643
643
|
# **) MIT License
|
|
644
644
|
#
|
|
645
|
-
# Copyright (C) 2016-
|
|
645
|
+
# Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
646
646
|
#
|
|
647
647
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
648
648
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/datums.py
CHANGED
|
@@ -733,7 +733,7 @@ if __name__ == '__main__':
|
|
|
733
733
|
|
|
734
734
|
# **) MIT License
|
|
735
735
|
#
|
|
736
|
-
# Copyright (C) 2016-
|
|
736
|
+
# Copyright (C) 2016-2025 -- 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__ = '24.11.
|
|
30
|
+
__version__ = '24.11.28'
|
|
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-2025 -- 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-2025 -- 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
|
@@ -275,7 +275,7 @@ __all__ += _ALL_DOCS(_Deprecated_NamedTuple)
|
|
|
275
275
|
|
|
276
276
|
# **) MIT License
|
|
277
277
|
#
|
|
278
|
-
# Copyright (C) 2018-
|
|
278
|
+
# Copyright (C) 2018-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
279
279
|
#
|
|
280
280
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
281
281
|
# 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-2025 -- 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) + \
|
|
|
19
19
|
|
|
20
20
|
# **) MIT License
|
|
21
21
|
#
|
|
22
|
-
# Copyright (C) 2016-
|
|
22
|
+
# Copyright (C) 2016-2025 -- 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"),
|
|
@@ -11,10 +11,10 @@ from pygeodesy.interns import NN, _area_, _COMMASPACE_, _negative_, \
|
|
|
11
11
|
from pygeodesy.lazily import _ALL_DEPRECATED, _ALL_MODS as _MODS
|
|
12
12
|
from pygeodesy.props import deprecated_function
|
|
13
13
|
# from pygeodesy.resections import TriAngle5Tuple as _TriAngle5Tuple # from .classes
|
|
14
|
-
from pygeodesy.units import Number_, Scalar_
|
|
14
|
+
from pygeodesy.units import _1mm, Number_, Scalar_
|
|
15
15
|
|
|
16
16
|
__all__ = _ALL_DEPRECATED.deprecated_functions
|
|
17
|
-
__version__ = '24.11.
|
|
17
|
+
__version__ = '24.11.28'
|
|
18
18
|
|
|
19
19
|
_WGS84 = _UTM = object()
|
|
20
20
|
|
|
@@ -295,11 +295,21 @@ def scalar(value, low=EPS, high=1.0, name=_scalar_, Error=ValueError): # PYCHOK
|
|
|
295
295
|
|
|
296
296
|
|
|
297
297
|
@deprecated_function
|
|
298
|
-
def simplify2(points, pipe
|
|
299
|
-
'''DEPRECATED, use function L{pygeodesy.simplifyRW}.
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
298
|
+
def simplify2(points, pipe=_1mm, **radius_shortest_indices_options): # PYCHOK no cover
|
|
299
|
+
'''DEPRECATED, use function L{pygeodesy.simplifyRW}.'''
|
|
300
|
+
return _MODS.simplify.simplifyRW(points, pipe=pipe, **radius_shortest_indices_options)
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
@deprecated_function
|
|
304
|
+
def simplifyRDPm(points, distance=_1mm, **radius_shortest_indices_options):
|
|
305
|
+
'''DEPRECATED on 2024.11.28, use function L{pygeodesy.simplifyRDP}C{(points, modified=True, ...)}.'''
|
|
306
|
+
return _MODS.simplify.simplifyRDP(points, modified=True, distance=distance, **radius_shortest_indices_options)
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
@deprecated_function
|
|
310
|
+
def simplifyVWm(points, area=_1mm, **radius_attr_indices_options):
|
|
311
|
+
'''DEPRECATED on 2024.11.28, use function L{pygeodesy.simplifyVW}C{(points, modified=True, ...)}.'''
|
|
312
|
+
return _MODS.simplify.simplifyVW(points, modified=True, area=area, **radius_attr_indices_options)
|
|
303
313
|
|
|
304
314
|
|
|
305
315
|
@deprecated_function
|
|
@@ -366,7 +376,7 @@ def utmZoneBand2(lat, lon): # PYCHOK no cover
|
|
|
366
376
|
|
|
367
377
|
# **) MIT License
|
|
368
378
|
#
|
|
369
|
-
# Copyright (C) 2018-
|
|
379
|
+
# Copyright (C) 2018-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
370
380
|
#
|
|
371
381
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
372
382
|
# 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-2025 -- 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__ = '23.11.26'
|
|
|
11
11
|
|
|
12
12
|
# **) MIT License
|
|
13
13
|
#
|
|
14
|
-
# Copyright (C) 2016-
|
|
14
|
+
# Copyright (C) 2016-2025 -- 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__ = '23.12.02'
|
|
|
12
12
|
|
|
13
13
|
# **) MIT License
|
|
14
14
|
#
|
|
15
|
-
# Copyright (C) 2016-
|
|
15
|
+
# Copyright (C) 2016-2025 -- 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__ = '23.11.26'
|
|
|
12
12
|
|
|
13
13
|
# **) MIT License
|
|
14
14
|
#
|
|
15
|
-
# Copyright (C) 2016-
|
|
15
|
+
# Copyright (C) 2016-2025 -- 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__ = '23.11.30'
|
|
|
12
12
|
|
|
13
13
|
# **) MIT License
|
|
14
14
|
#
|
|
15
|
-
# Copyright (C) 2016-
|
|
15
|
+
# Copyright (C) 2016-2025 -- 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-2025 -- 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
|
@@ -73,20 +73,23 @@ from pygeodesy.interns import NN, _a_, _C_, _datum_, _ellipsoid_, _f_, _height_,
|
|
|
73
73
|
_lat_, _lon_, _M_, _name_, _singular_, _SPACE_, \
|
|
74
74
|
_x_, _xyz_, _y_, _z_
|
|
75
75
|
from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS
|
|
76
|
-
from pygeodesy.named import _name__, _name1__, _NamedBase,
|
|
76
|
+
from pygeodesy.named import _name__, _name1__, _NamedBase, _NamedLocal, \
|
|
77
|
+
_NamedTuple, _Pass, _xnamed
|
|
77
78
|
from pygeodesy.namedTuples import LatLon2Tuple, LatLon3Tuple, \
|
|
78
79
|
PhiLam2Tuple, Vector3Tuple, Vector4Tuple
|
|
79
|
-
from pygeodesy.props import deprecated_method, Property_RO,
|
|
80
|
+
from pygeodesy.props import deprecated_method, Property_RO, property_RO, \
|
|
81
|
+
property_ROver, property_doc_
|
|
80
82
|
# from pygeodesy.streprs import Fmt, unstr # from .fsums
|
|
81
83
|
from pygeodesy.units import _isRadius, Degrees, Height, Int, Lam, Lat, Lon, Meter, \
|
|
82
84
|
Phi, Scalar, Scalar_
|
|
83
|
-
from pygeodesy.utily import atan1, atan1d, atan2d, degrees90, degrees180, \
|
|
85
|
+
from pygeodesy.utily import atan1, atan1d, atan2, atan2d, degrees90, degrees180, \
|
|
84
86
|
sincos2, sincos2_, sincos2d, sincos2d_
|
|
87
|
+
# from pygeodesy.vector3d import Vector3d # _MODS
|
|
85
88
|
|
|
86
|
-
from math import
|
|
89
|
+
from math import cos, degrees, fabs, radians, sqrt
|
|
87
90
|
|
|
88
91
|
__all__ = _ALL_LAZY.ecef
|
|
89
|
-
__version__ = '24.
|
|
92
|
+
__version__ = '24.12.06'
|
|
90
93
|
|
|
91
94
|
_Ecef_ = 'Ecef'
|
|
92
95
|
_prolate_ = 'prolate'
|
|
@@ -266,7 +269,7 @@ class _EcefBase(_NamedBase):
|
|
|
266
269
|
'''(INTERNAL) Get the valid geocentric classes. I{once}.
|
|
267
270
|
'''
|
|
268
271
|
return (Ecef9Tuple, # overwrite property_ROver
|
|
269
|
-
_MODS.cartesianBase.CartesianBase
|
|
272
|
+
_MODS.vector3d.Vector3d) # _MODS.cartesianBase.CartesianBase
|
|
270
273
|
|
|
271
274
|
@Property_RO
|
|
272
275
|
def _isYou(self):
|
|
@@ -326,7 +329,8 @@ class EcefFarrell21(_EcefBase):
|
|
|
326
329
|
def reverse(self, xyz, y=None, z=None, M=None, **lon00_name): # PYCHOK unused M
|
|
327
330
|
'''Convert from geocentric C{(x, y, z)} to geodetic C{(lat, lon, height)} using
|
|
328
331
|
I{Farrell}'s U{Table 2.1<https://Books.Google.com/books?id=fW4foWASY6wC>},
|
|
329
|
-
page 29
|
|
332
|
+
page 29, aka the I{Heikkinen application} of U{Ferrari's solution
|
|
333
|
+
<https://WikiPedia.org/wiki/Geographic_coordinate_conversion>}.
|
|
330
334
|
|
|
331
335
|
@arg xyz: A geocentric (C{Cartesian}, L{Ecef9Tuple}) or C{scalar} ECEF C{x}
|
|
332
336
|
coordinate (C{meter}).
|
|
@@ -366,9 +370,9 @@ class EcefFarrell21(_EcefBase):
|
|
|
366
370
|
p2 = p**2
|
|
367
371
|
G = p2 + ez - e2 * (a2 - b2) # p2 + ez - e4 * a2
|
|
368
372
|
F = b2 * z2 * 54
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
G *= fsumf_(
|
|
373
|
+
c = e4 * p2 * F / G**3
|
|
374
|
+
s = cbrt(sqrt(c * (c + _2_0)) + c + _1_0)
|
|
375
|
+
G *= fsumf_(s , _1_0, _1_0 / s) # k
|
|
372
376
|
P = F / (G**2 * _3_0)
|
|
373
377
|
Q = sqrt(_2_0 * e4 * P + _1_0)
|
|
374
378
|
Q1 = Q + _1_0
|
|
@@ -376,7 +380,7 @@ class EcefFarrell21(_EcefBase):
|
|
|
376
380
|
-P * ez / (Q * Q1),
|
|
377
381
|
-P * p2 * _0_5))
|
|
378
382
|
r = p + e2 * r0
|
|
379
|
-
v = b2 / (sqrt(r**2 + ez) * a)
|
|
383
|
+
v = b2 / (sqrt(r**2 + ez) * a) # z0 / z
|
|
380
384
|
|
|
381
385
|
h = hypot(r, z) * (_1_0 - v)
|
|
382
386
|
lat = atan1d((e2_ * v + _1_0) * z, p)
|
|
@@ -1014,12 +1018,12 @@ class EcefMatrix(_NamedTuple):
|
|
|
1014
1018
|
return xyz_
|
|
1015
1019
|
|
|
1016
1020
|
|
|
1017
|
-
class Ecef9Tuple(_NamedTuple):
|
|
1018
|
-
'''9-Tuple C{(x, y, z, lat, lon, height, C, M, datum)} with I{geocentric}
|
|
1019
|
-
C{
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
C{
|
|
1021
|
+
class Ecef9Tuple(_NamedTuple, _NamedLocal):
|
|
1022
|
+
'''9-Tuple C{(x, y, z, lat, lon, height, C, M, datum)} with I{geocentric} C{x},
|
|
1023
|
+
C{y} and C{z} plus I{geodetic} C{lat}, C{lon} and C{height}, case C{C} (see
|
|
1024
|
+
the C{Ecef*.reverse} methods) and optionally, rotation matrix C{M} (L{EcefMatrix})
|
|
1025
|
+
and C{datum}, with C{lat} and C{lon} in C{degrees} and C{x}, C{y}, C{z} and
|
|
1026
|
+
C{height} in C{meter}, conventionally.
|
|
1023
1027
|
'''
|
|
1024
1028
|
_Names_ = (_x_, _y_, _z_, _lat_, _lon_, _height_, _C_, _M_, _datum_)
|
|
1025
1029
|
_Units_ = ( Meter, Meter, Meter, Lat, Lon, Height, Int, _Pass, _Pass)
|
|
@@ -1035,6 +1039,10 @@ class Ecef9Tuple(_NamedTuple):
|
|
|
1035
1039
|
'''DEPRECATED, use method L{toDatum}.'''
|
|
1036
1040
|
return self.toDatum(datum2)
|
|
1037
1041
|
|
|
1042
|
+
@property_RO
|
|
1043
|
+
def _ecef9(self):
|
|
1044
|
+
return self
|
|
1045
|
+
|
|
1038
1046
|
@Property_RO
|
|
1039
1047
|
def lam(self):
|
|
1040
1048
|
'''Get the longitude in C{radians} (C{float}).
|
|
@@ -1088,12 +1096,19 @@ class Ecef9Tuple(_NamedTuple):
|
|
|
1088
1096
|
@Property_RO
|
|
1089
1097
|
def lonVermeille(self):
|
|
1090
1098
|
'''Get the longitude in C{degrees [-225..+225]} after U{Vermeille
|
|
1091
|
-
<https://Search.ProQuest.com/docview/639493848>}
|
|
1099
|
+
<https://Search.ProQuest.com/docview/639493848>} 2004, p 95.
|
|
1092
1100
|
|
|
1093
1101
|
@see: Property C{lamVermeille}.
|
|
1094
1102
|
'''
|
|
1095
1103
|
return Lon(Vermeille=degrees(self.lamVermeille))
|
|
1096
1104
|
|
|
1105
|
+
def _ltp_toLocal(self, ltp, Cls_and_kwds, **nam_Cls): # for C{_NamedLocal}
|
|
1106
|
+
'''(INTERNAL) Invoke C{ltp._xLtp(ltp)._ecef2local}.
|
|
1107
|
+
'''
|
|
1108
|
+
Cls, kwds = self._ltp_toLocal2(Cls_and_kwds, **nam_Cls) # in ._NamedLocal
|
|
1109
|
+
ltp = self._ltp._xLtp(ltp, self._Ltp) # both in ._NamedLocal
|
|
1110
|
+
return ltp._ecef2local(self, Cls, kwds)
|
|
1111
|
+
|
|
1097
1112
|
@Property_RO
|
|
1098
1113
|
def phi(self):
|
|
1099
1114
|
'''Get the latitude in C{radians} (C{float}).
|
|
@@ -1134,13 +1149,13 @@ class Ecef9Tuple(_NamedTuple):
|
|
|
1134
1149
|
L{ellipsoidalNvector.Cartesian}, L{ellipsoidalVincenty.Cartesian},
|
|
1135
1150
|
L{sphericalNvector.Cartesian} or L{sphericalTrigonometry.Cartesian})
|
|
1136
1151
|
or C{None}.
|
|
1137
|
-
@kwarg Cartesian_kwds:
|
|
1152
|
+
@kwarg Cartesian_kwds: Optionally, additional B{C{Cartesian}} keyword arguments, ignored
|
|
1138
1153
|
if C{B{Cartesian} is None}.
|
|
1139
1154
|
|
|
1140
|
-
@return: A C{
|
|
1141
|
-
|
|
1155
|
+
@return: A B{C{Cartesian}} instance or a L{Vector4Tuple}C{(x, y, z, h)} if C{B{Cartesian}
|
|
1156
|
+
is None}.
|
|
1142
1157
|
|
|
1143
|
-
@raise TypeError: Invalid B{C{Cartesian}} or B{C{Cartesian_kwds}}.
|
|
1158
|
+
@raise TypeError: Invalid B{C{Cartesian}} or B{C{Cartesian_kwds}} item.
|
|
1144
1159
|
'''
|
|
1145
1160
|
if Cartesian in (None, Vector4Tuple):
|
|
1146
1161
|
r = self.xyzh
|
|
@@ -1174,17 +1189,15 @@ class Ecef9Tuple(_NamedTuple):
|
|
|
1174
1189
|
def toLatLon(self, LatLon=None, **LatLon_kwds):
|
|
1175
1190
|
'''Return the geodetic C{(lat, lon, height[, datum])} coordinates.
|
|
1176
1191
|
|
|
1177
|
-
@kwarg LatLon: Optional class to return C{(lat, lon, height[, datum])}
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
B{C{LatLon}} keyword arguments.
|
|
1192
|
+
@kwarg LatLon: Optional class to return C{(lat, lon, height[, datum])} or C{None}.
|
|
1193
|
+
@kwarg LatLon_kwds: Optional B{C{height}}, B{C{datum}} and other B{C{LatLon}}
|
|
1194
|
+
keyword arguments.
|
|
1181
1195
|
|
|
1182
|
-
@return:
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
datum)} depending on whether C{datum} is un-/specified.
|
|
1196
|
+
@return: A B{C{LatLon}} instance or if C{B{LatLon} is None}, a L{LatLon4Tuple}C{(lat,
|
|
1197
|
+
lon, height, datum)} or L{LatLon3Tuple}C{(lat, lon, height)} if C{datum} is
|
|
1198
|
+
specified or not.
|
|
1186
1199
|
|
|
1187
|
-
@raise TypeError: Invalid B{C{LatLon}} or B{C{LatLon_kwds}}.
|
|
1200
|
+
@raise TypeError: Invalid B{C{LatLon}} or B{C{LatLon_kwds}} item.
|
|
1188
1201
|
'''
|
|
1189
1202
|
lat, lon, D = self.lat, self.lon, self.datum # PYCHOK Ecef9Tuple
|
|
1190
1203
|
kwds = _name1__(LatLon_kwds, _or_nameof=self)
|
|
@@ -1202,33 +1215,17 @@ class Ecef9Tuple(_NamedTuple):
|
|
|
1202
1215
|
_xdatum(_xattr(r, datum=D), D)
|
|
1203
1216
|
return r
|
|
1204
1217
|
|
|
1205
|
-
def toLocal(self, ltp, Xyz=None, **Xyz_kwds):
|
|
1206
|
-
'''Convert this geocentric to I{local} C{x}, C{y} and C{z}.
|
|
1207
|
-
|
|
1208
|
-
@kwarg ltp: The I{local tangent plane} (LTP) to use (L{Ltp}).
|
|
1209
|
-
@kwarg Xyz: Optional class to return C{x}, C{y} and C{z}
|
|
1210
|
-
(L{XyzLocal}, L{Enu}, L{Ned}) or C{None}.
|
|
1211
|
-
@kwarg Xyz_kwds: Optional, additional B{C{Xyz}} keyword
|
|
1212
|
-
arguments, ignored if C{B{Xyz} is None}.
|
|
1213
|
-
|
|
1214
|
-
@return: An B{C{Xyz}} instance or if C{B{Xyz} is None},
|
|
1215
|
-
a L{Local9Tuple}C{(x, y, z, lat, lon, height,
|
|
1216
|
-
ltp, ecef, M)} with C{M=None}, always.
|
|
1217
|
-
|
|
1218
|
-
@raise TypeError: Invalid B{C{ltp}}.
|
|
1219
|
-
'''
|
|
1220
|
-
return _MODS.ltp._xLtp(ltp)._ecef2local(self, Xyz, Xyz_kwds)
|
|
1221
|
-
|
|
1222
1218
|
def toVector(self, Vector=None, **Vector_kwds):
|
|
1223
|
-
'''Return
|
|
1219
|
+
'''Return these geocentric C{(x, y, z)} coordinates as vector.
|
|
1220
|
+
|
|
1221
|
+
@kwarg Vector: Optional vector class to return C{(x, y, z)} or C{None}.
|
|
1222
|
+
@kwarg Vector_kwds: Optional, additional B{C{Vector}} keyword arguments,
|
|
1223
|
+
ignored if C{B{Vector} is None}.
|
|
1224
1224
|
|
|
1225
|
-
@
|
|
1226
|
-
|
|
1227
|
-
@kwarg Vector_kwds: Optional, additional B{C{Vector}} keyword
|
|
1228
|
-
arguments, ignored if C{B{Vector} is None}.
|
|
1225
|
+
@return: A B{C{Vector}} instance or a L{Vector3Tuple}C{(x, y, z)} if
|
|
1226
|
+
C{B{Vector} is None}.
|
|
1229
1227
|
|
|
1230
|
-
@
|
|
1231
|
-
L{Vector3Tuple}C{(x, y, z)} if C{B{Vector} is None}.
|
|
1228
|
+
@raise TypeError: Invalid B{C{Vector}} or B{C{Vector_kwds}} item.
|
|
1232
1229
|
|
|
1233
1230
|
@see: Propertes C{xyz} and C{xyzh}
|
|
1234
1231
|
'''
|
|
@@ -1316,7 +1313,7 @@ __all__ += _ALL_DOCS(_EcefBase)
|
|
|
1316
1313
|
|
|
1317
1314
|
# **) MIT License
|
|
1318
1315
|
#
|
|
1319
|
-
# Copyright (C) 2016-
|
|
1316
|
+
# Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
1320
1317
|
#
|
|
1321
1318
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
1322
1319
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/elevations.py
CHANGED
|
@@ -254,7 +254,7 @@ if __name__ == '__main__':
|
|
|
254
254
|
|
|
255
255
|
# **) MIT License
|
|
256
256
|
#
|
|
257
|
-
# Copyright (C) 2016-
|
|
257
|
+
# Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
258
258
|
#
|
|
259
259
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
260
260
|
# copy of this software and associated documentation files (the "Software"),
|
pygeodesy/ellipsoidalBase.py
CHANGED
|
@@ -35,7 +35,7 @@ from pygeodesy.units import Epoch, _isDegrees, Radius_, _1mm as _TOL_M
|
|
|
35
35
|
# from math import fabs # from .latlonBase
|
|
36
36
|
|
|
37
37
|
__all__ = _ALL_LAZY.ellipsoidalBase
|
|
38
|
-
__version__ = '24.
|
|
38
|
+
__version__ = '24.12.04'
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
class CartesianEllipsoidalBase(CartesianBase):
|
|
@@ -666,7 +666,7 @@ class LatLonEllipsoidalBase(LatLonBase):
|
|
|
666
666
|
B{C{point2}} (C{bool}).
|
|
667
667
|
@kwarg equidistant: An azimuthal equidistant projection (I{class} or function
|
|
668
668
|
L{pygeodesy.equidistant}) or C{None} for this point's preferred
|
|
669
|
-
C{Equidistant}, like L{Equidistant<LatLonEllipsoidalBase.
|
|
669
|
+
C{Equidistant}, like L{Equidistant<LatLonEllipsoidalBase.Equidistant>}.
|
|
670
670
|
@kwarg tol: Convergence tolerance (C{meter}, conventionally).
|
|
671
671
|
|
|
672
672
|
@return: Closest point (C{LatLon}).
|
|
@@ -1148,7 +1148,7 @@ __all__ += _ALL_DOCS(CartesianEllipsoidalBase, LatLonEllipsoidalBase)
|
|
|
1148
1148
|
|
|
1149
1149
|
# **) MIT License
|
|
1150
1150
|
#
|
|
1151
|
-
# Copyright (C) 2016-
|
|
1151
|
+
# Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
1152
1152
|
#
|
|
1153
1153
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
1154
1154
|
# copy of this software and associated documentation files (the "Software"),
|