pygeodesy 24.10.24__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.10.24.dist-info → PyGeodesy-24.12.12.dist-info}/METADATA +6 -6
- PyGeodesy-24.12.12.dist-info/RECORD +118 -0
- {PyGeodesy-24.10.24.dist-info → PyGeodesy-24.12.12.dist-info}/WHEEL +1 -1
- pygeodesy/__init__.py +5 -5
- 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 +55 -65
- pygeodesy/basics.py +35 -34
- pygeodesy/booleans.py +37 -37
- pygeodesy/cartesianBase.py +26 -65
- pygeodesy/clipy.py +1 -1
- pygeodesy/constants.py +7 -7
- pygeodesy/css.py +8 -9
- pygeodesy/datums.py +1 -1
- pygeodesy/deprecated/__init__.py +2 -2
- pygeodesy/deprecated/bases.py +1 -1
- pygeodesy/deprecated/classes.py +10 -10
- pygeodesy/deprecated/consterns.py +1 -1
- pygeodesy/deprecated/datum.py +1 -1
- pygeodesy/deprecated/functions.py +23 -13
- 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 +63 -69
- pygeodesy/elevations.py +1 -1
- pygeodesy/ellipsoidalBase.py +106 -121
- pygeodesy/ellipsoidalBaseDI.py +115 -119
- pygeodesy/ellipsoidalExact.py +36 -38
- pygeodesy/ellipsoidalGeodSolve.py +1 -1
- pygeodesy/ellipsoidalKarney.py +1 -1
- pygeodesy/ellipsoidalNvector.py +1 -1
- pygeodesy/ellipsoidalVincenty.py +6 -5
- pygeodesy/ellipsoids.py +7 -8
- pygeodesy/elliptic.py +6 -6
- pygeodesy/epsg.py +1 -1
- pygeodesy/errors.py +25 -25
- pygeodesy/etm.py +84 -76
- pygeodesy/fmath.py +54 -51
- pygeodesy/formy.py +74 -106
- pygeodesy/frechet.py +1 -1
- pygeodesy/fstats.py +1 -1
- pygeodesy/fsums.py +82 -72
- pygeodesy/gars.py +1 -1
- pygeodesy/geodesici.py +4 -4
- pygeodesy/geodesicw.py +16 -15
- 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 +3 -3
- 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 +8 -17
- pygeodesy/geohash.py +1 -1
- pygeodesy/geoids.py +6 -6
- pygeodesy/hausdorff.py +1 -1
- pygeodesy/heights.py +3 -3
- pygeodesy/internals.py +64 -80
- pygeodesy/interns.py +2 -3
- pygeodesy/iters.py +1 -1
- pygeodesy/karney.py +4 -4
- pygeodesy/ktm.py +20 -21
- pygeodesy/latlonBase.py +296 -346
- pygeodesy/lazily.py +15 -15
- pygeodesy/lcc.py +5 -5
- pygeodesy/ltp.py +55 -59
- pygeodesy/ltpTuples.py +208 -192
- pygeodesy/mgrs.py +9 -10
- pygeodesy/named.py +153 -3
- pygeodesy/namedTuples.py +58 -7
- pygeodesy/nvectorBase.py +122 -105
- pygeodesy/osgr.py +10 -13
- pygeodesy/points.py +1 -1
- pygeodesy/props.py +3 -3
- pygeodesy/resections.py +26 -26
- pygeodesy/rhumb/__init__.py +2 -2
- pygeodesy/rhumb/aux_.py +2 -2
- pygeodesy/rhumb/bases.py +2 -2
- pygeodesy/rhumb/ekx.py +4 -4
- pygeodesy/rhumb/solve.py +4 -4
- pygeodesy/simplify.py +291 -403
- pygeodesy/solveBase.py +1 -1
- pygeodesy/sphericalBase.py +1 -1
- pygeodesy/sphericalNvector.py +84 -127
- pygeodesy/sphericalTrigonometry.py +66 -71
- pygeodesy/streprs.py +10 -5
- pygeodesy/trf.py +1 -1
- pygeodesy/triaxials.py +23 -16
- pygeodesy/units.py +17 -17
- pygeodesy/unitsBase.py +1 -1
- pygeodesy/ups.py +4 -4
- pygeodesy/utily.py +202 -145
- pygeodesy/utm.py +10 -10
- pygeodesy/utmups.py +1 -1
- pygeodesy/utmupsBase.py +1 -1
- pygeodesy/vector2d.py +17 -17
- pygeodesy/vector3d.py +32 -23
- pygeodesy/vector3dBase.py +22 -19
- pygeodesy/webmercator.py +5 -5
- pygeodesy/wgrs.py +5 -5
- PyGeodesy-24.10.24.dist-info/RECORD +0 -118
- {PyGeodesy-24.10.24.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
|
|
@@ -186,7 +186,7 @@ class CartesianBase(Vector3d):
|
|
|
186
186
|
or L{Local9Tuple}).
|
|
187
187
|
@kwarg Cartesian: Optional (geocentric) class to return the destination
|
|
188
188
|
or C{None}.
|
|
189
|
-
@kwarg name_Cartesian_kwds: Optional C{B{name}=NN} (C{str}) and
|
|
189
|
+
@kwarg name_Cartesian_kwds: Optional C{B{name}=NN} (C{str}) and optionally,
|
|
190
190
|
additional B{C{Cartesian}} keyword arguments, ignored if
|
|
191
191
|
C{B{Cartesian} is None}.
|
|
192
192
|
|
|
@@ -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
|
|
|
@@ -768,7 +729,7 @@ class CartesianBase(Vector3d):
|
|
|
768
729
|
(C{Nvector}) or C{None}.
|
|
769
730
|
@kwarg datum: Optional datum (L{Datum}, L{Ellipsoid}, L{Ellipsoid2}
|
|
770
731
|
or L{a_f2Tuple}) overriding this cartesian's datum.
|
|
771
|
-
@kwarg name_Nvector_kwds: Optional C{B{name}=NN} (C{str}) and
|
|
732
|
+
@kwarg name_Nvector_kwds: Optional C{B{name}=NN} (C{str}) and optionally,
|
|
772
733
|
additional B{C{Nvector}} keyword arguments, ignored if
|
|
773
734
|
C{B{Nvector} is None}.
|
|
774
735
|
|
|
@@ -940,8 +901,8 @@ def rtp2xyz_(r_rtp, theta=0, phi=0, **name_Cartesian_and_kwds):
|
|
|
940
901
|
@arg theta: Inclination B{C{theta}} (C{radians} with respect to the positive z-axis),
|
|
941
902
|
required if C{B{r_rtp}} is C{scalar}, ignored otherwise.
|
|
942
903
|
@arg phi: Azimuthal angle B{C{phi}} (C{radians}), like B{C{theta}}.
|
|
943
|
-
@kwarg name_Cartesian_and_kwds: Optional C{B{name}=NN} (C{str}),
|
|
944
|
-
class to return the coordinates and
|
|
904
|
+
@kwarg name_Cartesian_and_kwds: Optional C{B{name}=NN} (C{str}), C{B{Cartesian}=None}
|
|
905
|
+
class to return the coordinates and optionally, additional C{B{Cartesian}}
|
|
945
906
|
keyword arguments.
|
|
946
907
|
|
|
947
908
|
@return: A C{B{Cartesian}(x, y, z)} instance or if no C{B{Cartesian}} keyword argument
|
|
@@ -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
|
@@ -10,10 +10,10 @@ L{pygeodesy.isnon0} and L{pygeodesy.remainder}.
|
|
|
10
10
|
# make sure int/int division yields float quotient, see .basics
|
|
11
11
|
from __future__ import division as _; del _ # PYCHOK semicolon
|
|
12
12
|
|
|
13
|
-
from pygeodesy.basics import _copysign, isbool, iscomplex, isint
|
|
13
|
+
from pygeodesy.basics import _copysign, isbool, iscomplex, isint
|
|
14
14
|
from pygeodesy.errors import _xError, _xError2, _xkwds_get1, _xkwds_item2
|
|
15
15
|
# from pygeodesy.fsums import _isFsum_2Tuple # _MODS
|
|
16
|
-
|
|
16
|
+
from pygeodesy.internals import _0_0, _100_0
|
|
17
17
|
from pygeodesy.interns import _INF_, _NAN_, _UNDER_
|
|
18
18
|
from pygeodesy.lazily import _ALL_MODS as _MODS, _ALL_LAZY
|
|
19
19
|
# from pygeodesy.streprs import Fmt # from .unitsBase
|
|
@@ -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__ = '24.
|
|
29
|
+
__version__ = '24.11.06'
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
def _copysign_0_0(y):
|
|
@@ -185,7 +185,7 @@ _32_0 = _float( 32) # PYCHOK expected
|
|
|
185
185
|
_60_0 = _float( 60) # PYCHOK expected
|
|
186
186
|
_64_0 = _float( 64) # PYCHOK expected
|
|
187
187
|
_90_0 = _float( 90) # PYCHOK expected
|
|
188
|
-
_100_0 = _float(
|
|
188
|
+
_100_0 = _float(_100_0) # PYCHOK expected
|
|
189
189
|
_180_0 = _float( 180) # PYCHOK expected
|
|
190
190
|
_270_0 = _float( 270) # PYCHOK expected
|
|
191
191
|
_360_0 = _float( 360) # PYCHOK expected
|
|
@@ -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
|
@@ -33,7 +33,7 @@ from pygeodesy.units import Azimuth, Degrees, Easting, Height, _heigHt, \
|
|
|
33
33
|
# from math import fabs # from .karney
|
|
34
34
|
|
|
35
35
|
__all__ = _ALL_LAZY.css
|
|
36
|
-
__version__ = '24.
|
|
36
|
+
__version__ = '24.11.06'
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
def _CS0(cs0):
|
|
@@ -313,16 +313,15 @@ class CassiniSoldner(_NamedBase):
|
|
|
313
313
|
self._sb0, self._cb0 = _norm2(s * g.f1, c)
|
|
314
314
|
|
|
315
315
|
def reverse(self, easting, northing, LatLon=None, **name_LatLon_kwds):
|
|
316
|
-
'''Convert a Cassini-Soldner location to (ellipsoidal) geodetic
|
|
317
|
-
lat- and longitude.
|
|
316
|
+
'''Convert a Cassini-Soldner location to (ellipsoidal) geodetic lat- and longitude.
|
|
318
317
|
|
|
319
318
|
@arg easting: Easting of the location (C{meter}).
|
|
320
319
|
@arg northing: Northing of the location (C{meter}).
|
|
321
|
-
@kwarg LatLon: Optional, ellipsoidal class to return the geodetic
|
|
322
|
-
|
|
323
|
-
@kwarg name_LatLon_kwds: Optional name C{B{name}=NN} (C{str}) and
|
|
324
|
-
|
|
325
|
-
|
|
320
|
+
@kwarg LatLon: Optional, ellipsoidal class to return the geodetic location as
|
|
321
|
+
(C{LatLon}) or C{None}.
|
|
322
|
+
@kwarg name_LatLon_kwds: Optional name C{B{name}=NN} (C{str}) and optionally,
|
|
323
|
+
additional B{C{LatLon}} keyword arguments, ignored if C{B{LatLon}
|
|
324
|
+
is None}.
|
|
326
325
|
|
|
327
326
|
@return: Geodetic location B{C{LatLon}} or if C{B{LatLon} is None},
|
|
328
327
|
a L{LatLon2Tuple}C{(lat, lon)}.
|
|
@@ -643,7 +642,7 @@ def toCss(latlon, cs0=None, height=None, Css=Css, **name):
|
|
|
643
642
|
|
|
644
643
|
# **) MIT License
|
|
645
644
|
#
|
|
646
|
-
# Copyright (C) 2016-
|
|
645
|
+
# Copyright (C) 2016-2025 -- mrJean1 at Gmail -- All Rights Reserved.
|
|
647
646
|
#
|
|
648
647
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
|
649
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.
|
|
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
|
@@ -22,7 +22,7 @@ from pygeodesy.trf import TRFXform7Tuple as _TRFXform7Tuple
|
|
|
22
22
|
from pygeodesy.units import Bearing, Int, Lamd, Lat, Lon, Meter, Phid
|
|
23
23
|
|
|
24
24
|
__all__ = _ALL_DEPRECATED.deprecated_classes
|
|
25
|
-
__version__ = '24.07
|
|
25
|
+
__version__ = '24.11.07'
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class _Deprecated_NamedTuple(_NamedTuple):
|
|
@@ -153,7 +153,7 @@ def HeightIDW3(knots, **kwds): # PYCHOK no cover
|
|
|
153
153
|
|
|
154
154
|
class Lam_(Lamd):
|
|
155
155
|
'''DEPRECATED on 2024.06.15, use class L{Lamd}.'''
|
|
156
|
-
def __init__(self, *args, **kwds): # PYCHOK
|
|
156
|
+
def __init__(self, *args, **kwds): # PYCHOK no cover
|
|
157
157
|
deprecated_class(self.__class__)
|
|
158
158
|
Lamd.__init__(self, *args, **kwds)
|
|
159
159
|
|
|
@@ -172,7 +172,7 @@ class NearestOn4Tuple(_Deprecated_NamedTuple): # PYCHOK no cover
|
|
|
172
172
|
|
|
173
173
|
class Phi_(Phid):
|
|
174
174
|
'''DEPRECATED on 2024.06.15, use class L{Phid}.'''
|
|
175
|
-
def __init__(self, *args, **kwds): # PYCHOK
|
|
175
|
+
def __init__(self, *args, **kwds): # PYCHOK no cover
|
|
176
176
|
deprecated_class(self.__class__)
|
|
177
177
|
Phid.__init__(self, *args, **kwds)
|
|
178
178
|
|
|
@@ -205,22 +205,22 @@ class Rhumb7Tuple(_Deprecated_NamedTuple):
|
|
|
205
205
|
_Units_ = _Rhumb8Tuple._Units_[:7]
|
|
206
206
|
|
|
207
207
|
@deprecated_method
|
|
208
|
-
def toDirect9Tuple(self, **kwds):
|
|
208
|
+
def toDirect9Tuple(self, **kwds): # PYCHOK no cover
|
|
209
209
|
return self.toRhumb8Tuple().toDirect9Tuple(self, **kwds)
|
|
210
210
|
|
|
211
211
|
@deprecated_method
|
|
212
|
-
def toGDict(self, **kwds):
|
|
212
|
+
def toGDict(self, **kwds): # PYCHOK no cover
|
|
213
213
|
return self.toRhumb8Tuple().toGDict(**kwds)
|
|
214
214
|
|
|
215
215
|
@deprecated_method
|
|
216
|
-
def toInverse10Tuple(self, **kwds):
|
|
216
|
+
def toInverse10Tuple(self, **kwds): # PYCHOK no cover
|
|
217
217
|
return self.toRhumb8Tuple().toInverse10Tuple(self, **kwds)
|
|
218
218
|
|
|
219
219
|
@deprecated_method
|
|
220
|
-
def toRhumb8Tuple(self, dflt=NAN):
|
|
220
|
+
def toRhumb8Tuple(self, dflt=NAN): # PYCHOK no cover
|
|
221
221
|
return _Rhumb8Tuple(self + (dflt,), name=self.name)
|
|
222
222
|
|
|
223
|
-
def _to7Tuple(self):
|
|
223
|
+
def _to7Tuple(self): # PYCHOK no cover
|
|
224
224
|
'''(INTERNAL) see L{Rhumb8Tuple._to7Tuple}.
|
|
225
225
|
'''
|
|
226
226
|
return self
|
|
@@ -266,7 +266,7 @@ class UtmUps4Tuple(_Deprecated_NamedTuple): # PYCHOK no cover
|
|
|
266
266
|
|
|
267
267
|
class XDist(ADict):
|
|
268
268
|
'''DEPRECATED on 2024.07.02, use class L{XDict}.'''
|
|
269
|
-
def __init__(self, *args, **kwds): # PYCHOK
|
|
269
|
+
def __init__(self, *args, **kwds): # PYCHOK no cover
|
|
270
270
|
deprecated_class(self.__class__)
|
|
271
271
|
ADict.__init__(self, *args, **kwds)
|
|
272
272
|
|
|
@@ -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.
|
|
17
|
+
__version__ = '24.11.28'
|
|
18
18
|
|
|
19
19
|
_WGS84 = _UTM = object()
|
|
20
20
|
|
|
@@ -32,7 +32,7 @@ def areaof(points, adjust=True, radius=R_M, wrap=True): # PYCHOK no cover
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
@deprecated_function
|
|
35
|
-
def atand(x):
|
|
35
|
+
def atand(x): # PYCHOK no cover
|
|
36
36
|
'''DEPRECATED on 2023.09.28, use function L{pygeodesy.atan1d}.'''
|
|
37
37
|
return _MODS.utily.atan1d(x)
|
|
38
38
|
|
|
@@ -124,19 +124,19 @@ def equirectangular3(lat1, lon1, lat2, lon2, **options): # PYCHOK no cover
|
|
|
124
124
|
|
|
125
125
|
|
|
126
126
|
@deprecated_function
|
|
127
|
-
def excessAbc(A, b, c):
|
|
127
|
+
def excessAbc(A, b, c): # PYCHOK no cover
|
|
128
128
|
'''DEPRECATED on 2023.04.04, use function L{pygeodesy.excessAbc_}.'''
|
|
129
129
|
return _MODS.formy.excessAbc_(A, b, c)
|
|
130
130
|
|
|
131
131
|
|
|
132
132
|
@deprecated_function
|
|
133
|
-
def excessGirard(A, B, C):
|
|
133
|
+
def excessGirard(A, B, C): # PYCHOK no cover
|
|
134
134
|
'''DEPRECATED on 2023.04.04, use function L{pygeodesy.excessGirard_}.'''
|
|
135
135
|
return _MODS.formy.excessGirard_(A, B, C)
|
|
136
136
|
|
|
137
137
|
|
|
138
138
|
@deprecated_function
|
|
139
|
-
def excessLHuilier(a, b, c):
|
|
139
|
+
def excessLHuilier(a, b, c): # PYCHOK no cover
|
|
140
140
|
'''DEPRECATED on 2023.04.04, use function L{pygeodesy.excessLHuilier_}.'''
|
|
141
141
|
return _MODS.formy.excessLHuilier_(a, b, c)
|
|
142
142
|
|
|
@@ -176,7 +176,7 @@ def falsed2f(falsed=True, Error=ValueError, **name_value): # PYCHOK no cover
|
|
|
176
176
|
|
|
177
177
|
|
|
178
178
|
@deprecated_function
|
|
179
|
-
def float0(*xs):
|
|
179
|
+
def float0(*xs): # PYCHOK no cover
|
|
180
180
|
'''DEPRECATED on 2023.04.21, use function L{pygeodesy.float0_}.'''
|
|
181
181
|
return float0_(*xs)
|
|
182
182
|
|
|
@@ -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"),
|