pygeodesy 24.6.9__py2.py3-none-any.whl → 24.6.24__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.6.9.dist-info → PyGeodesy-24.6.24.dist-info}/METADATA +2 -2
- PyGeodesy-24.6.24.dist-info/RECORD +117 -0
- pygeodesy/__init__.py +33 -32
- pygeodesy/albers.py +2 -2
- pygeodesy/auxilats/__init__.py +1 -1
- pygeodesy/auxilats/auxAngle.py +40 -39
- pygeodesy/auxilats/auxDLat.py +3 -2
- pygeodesy/auxilats/auxLat.py +16 -18
- pygeodesy/auxilats/auxily.py +1 -1
- pygeodesy/azimuthal.py +10 -10
- pygeodesy/basics.py +9 -1
- pygeodesy/booleans.py +4 -4
- pygeodesy/cartesianBase.py +11 -14
- pygeodesy/css.py +14 -18
- pygeodesy/datums.py +6 -6
- pygeodesy/deprecated/__init__.py +1 -1
- pygeodesy/deprecated/classes.py +16 -2
- pygeodesy/deprecated/datum.py +3 -3
- pygeodesy/deprecated/functions.py +6 -8
- pygeodesy/dms.py +23 -27
- pygeodesy/ecef.py +4 -4
- pygeodesy/elevations.py +4 -4
- pygeodesy/ellipsoidalBase.py +23 -28
- pygeodesy/ellipsoidalBaseDI.py +19 -23
- pygeodesy/ellipsoidalExact.py +3 -3
- pygeodesy/ellipsoidalGeodSolve.py +15 -23
- pygeodesy/ellipsoidalKarney.py +37 -60
- pygeodesy/ellipsoidalNvector.py +38 -44
- pygeodesy/ellipsoidalVincenty.py +11 -14
- pygeodesy/ellipsoids.py +107 -101
- pygeodesy/errors.py +100 -48
- pygeodesy/etm.py +32 -44
- pygeodesy/formy.py +55 -58
- pygeodesy/frechet.py +18 -20
- pygeodesy/fsums.py +3 -3
- pygeodesy/gars.py +3 -4
- pygeodesy/geodesici.py +909 -0
- pygeodesy/geodesicw.py +11 -13
- pygeodesy/geodesicx/__init__.py +4 -4
- pygeodesy/geodesicx/gx.py +18 -28
- pygeodesy/geodesicx/gxbases.py +20 -8
- pygeodesy/geodesicx/gxline.py +16 -22
- pygeodesy/geodsolve.py +80 -10
- pygeodesy/geohash.py +26 -34
- pygeodesy/geoids.py +28 -37
- pygeodesy/hausdorff.py +17 -18
- pygeodesy/heights.py +2 -2
- pygeodesy/internals.py +6 -0
- pygeodesy/interns.py +2 -2
- pygeodesy/karney.py +20 -4
- pygeodesy/ktm.py +13 -16
- pygeodesy/latlonBase.py +17 -19
- pygeodesy/lazily.py +7 -6
- pygeodesy/lcc.py +28 -31
- pygeodesy/ltp.py +7 -8
- pygeodesy/ltpTuples.py +68 -70
- pygeodesy/mgrs.py +8 -9
- pygeodesy/named.py +19 -10
- pygeodesy/nvectorBase.py +9 -10
- pygeodesy/osgr.py +9 -9
- pygeodesy/points.py +6 -6
- pygeodesy/rhumb/__init__.py +1 -1
- pygeodesy/rhumb/aux_.py +5 -5
- pygeodesy/rhumb/bases.py +30 -31
- pygeodesy/rhumb/ekx.py +3 -4
- pygeodesy/sphericalBase.py +10 -11
- pygeodesy/sphericalNvector.py +13 -13
- pygeodesy/sphericalTrigonometry.py +86 -97
- pygeodesy/streprs.py +4 -34
- pygeodesy/triaxials.py +48 -43
- pygeodesy/units.py +204 -271
- pygeodesy/unitsBase.py +115 -107
- pygeodesy/ups.py +26 -31
- pygeodesy/utily.py +8 -8
- pygeodesy/utm.py +35 -40
- pygeodesy/utmups.py +43 -46
- pygeodesy/utmupsBase.py +8 -9
- pygeodesy/vector3d.py +26 -27
- pygeodesy/vector3dBase.py +6 -7
- pygeodesy/webmercator.py +19 -21
- pygeodesy/wgrs.py +18 -20
- PyGeodesy-24.6.9.dist-info/RECORD +0 -116
- {PyGeodesy-24.6.9.dist-info → PyGeodesy-24.6.24.dist-info}/WHEEL +0 -0
- {PyGeodesy-24.6.9.dist-info → PyGeodesy-24.6.24.dist-info}/top_level.txt +0 -0
pygeodesy/points.py
CHANGED
|
@@ -62,7 +62,7 @@ from pygeodesy.utily import atan2b, degrees90, degrees180, degrees2m, \
|
|
|
62
62
|
from math import cos, fabs, fmod as _fmod, radians, sin
|
|
63
63
|
|
|
64
64
|
__all__ = _ALL_LAZY.points
|
|
65
|
-
__version__ = '24.06.
|
|
65
|
+
__version__ = '24.06.15'
|
|
66
66
|
|
|
67
67
|
_ilat_ = 'ilat'
|
|
68
68
|
_ilon_ = 'ilon'
|
|
@@ -391,7 +391,7 @@ class _Array2LatLon(_Basequence): # immutable, on purpose
|
|
|
391
391
|
# check the attr indices
|
|
392
392
|
for n, (ai, i) in enumerate(ais):
|
|
393
393
|
if not isint(i):
|
|
394
|
-
raise _IsnotError(int
|
|
394
|
+
raise _IsnotError(int, **{ai: i})
|
|
395
395
|
i = int(i)
|
|
396
396
|
if not 0 <= i < shape[1]:
|
|
397
397
|
raise _ValueError(ai, i)
|
|
@@ -959,8 +959,8 @@ def areaOf(points, adjust=True, radius=R_M, wrap=True):
|
|
|
959
959
|
the B{C{points}} (C{bool}).
|
|
960
960
|
|
|
961
961
|
@return: Approximate area (I{square} C{meter}, same units as
|
|
962
|
-
B{C{radius}} or C{radians} I{squared} if B{
|
|
963
|
-
is
|
|
962
|
+
B{C{radius}} or C{radians} I{squared} if C{B{radius}
|
|
963
|
+
is None}).
|
|
964
964
|
|
|
965
965
|
@raise PointsError: Insufficient number of B{C{points}}
|
|
966
966
|
|
|
@@ -992,8 +992,8 @@ def boundsOf(points, wrap=False, LatLon=None): # was=True
|
|
|
992
992
|
@kwarg LatLon: Optional class to return the C{bounds}
|
|
993
993
|
corners (C{LatLon}) or C{None}.
|
|
994
994
|
|
|
995
|
-
@return: A L{Bounds2Tuple}C{(latlonSW, latlonNE)}
|
|
996
|
-
B{C{LatLon}}
|
|
995
|
+
@return: A L{Bounds2Tuple}C{(latlonSW, latlonNE)}, each
|
|
996
|
+
a B{C{LatLon}} or if C{B{LatLon} is None}, a
|
|
997
997
|
L{Bounds4Tuple}C{(latS, lonW, latN, lonE)}.
|
|
998
998
|
|
|
999
999
|
@raise PointsError: Insufficient number of B{C{points}}
|
pygeodesy/rhumb/__init__.py
CHANGED
|
@@ -9,7 +9,7 @@ u'''Package of lazily imported C{rhumb} modules L{rhumb.aux_}, L{rhumb.ekx} and
|
|
|
9
9
|
from pygeodesy.lazily import _ALL_LAZY, _ALL_OTHER, _lazy_import_as, _unLazy0
|
|
10
10
|
|
|
11
11
|
__all__ = _ALL_LAZY.rhumb
|
|
12
|
-
__version__ = '24.
|
|
12
|
+
__version__ = '24.06.18'
|
|
13
13
|
|
|
14
14
|
if _unLazy0: # or _isfrozen
|
|
15
15
|
from pygeodesy.rhumb.aux_ import RhumbAux, RhumbLineAux
|
pygeodesy/rhumb/aux_.py
CHANGED
|
@@ -47,7 +47,7 @@ from pygeodesy.rhumb.bases import RhumbBase, RhumbLineBase, \
|
|
|
47
47
|
from math import ceil as _ceil, fabs, radians
|
|
48
48
|
|
|
49
49
|
__all__ = _ALL_LAZY.rhumb_aux_
|
|
50
|
-
__version__ = '24.
|
|
50
|
+
__version__ = '24.06.11'
|
|
51
51
|
|
|
52
52
|
# DIGITS = (sizeof(real) * 8) bits
|
|
53
53
|
# = (ctypes.sizeof(ctypes.c_double(1.0)) * 8) bits
|
|
@@ -74,14 +74,14 @@ class RhumbAux(RhumbBase):
|
|
|
74
74
|
@kwarg a_earth: This rhumb's earth model (L{Datum}, L{Ellipsoid},
|
|
75
75
|
L{Ellipsoid2}, L{a_f2Tuple}, 2-tuple C{(a, f)}) or
|
|
76
76
|
the (equatorial) radius (C{meter}, conventionally).
|
|
77
|
-
@kwarg f: The ellipsoid's flattening (C{scalar}),
|
|
78
|
-
C{scalar}, ignored otherwise.
|
|
77
|
+
@kwarg f: The ellipsoid's flattening (C{scalar}), required if B{C{a_earth}}
|
|
78
|
+
is C{scalar}, ignored otherwise.
|
|
79
79
|
@kwarg exact: If C{True}, use the exact expressions for the I{Auxiliary
|
|
80
80
|
Latitudes}, otherwise use the I{Fourier} series expansion
|
|
81
81
|
(C{bool}), see also property C{exact}.
|
|
82
82
|
@kwarg TMorder_name: Optional C{B{name}=NN} (C{str}) and optional
|
|
83
|
-
keyword argument C{B{TMorder}=6}
|
|
84
|
-
|
|
83
|
+
keyword argument C{B{TMorder}=6}, the order of the
|
|
84
|
+
L{KTransverseMercator}, see property C{TMorder}.
|
|
85
85
|
|
|
86
86
|
@raise ImportError: Package C{numpy} not found or not installed, only
|
|
87
87
|
required for area C{S12} when C{B{exact} is True}.
|
pygeodesy/rhumb/bases.py
CHANGED
|
@@ -52,11 +52,11 @@ from pygeodesy.vector3d import _intersect3d3, Vector3d # in .Intersection below
|
|
|
52
52
|
from math import cos, fabs
|
|
53
53
|
|
|
54
54
|
__all__ = ()
|
|
55
|
-
__version__ = '24.
|
|
55
|
+
__version__ = '24.06.18'
|
|
56
56
|
|
|
57
57
|
_anti_ = _Dash('anti')
|
|
58
58
|
_rls = [] # instances of C{RbumbLine...} to be updated
|
|
59
|
-
_TRIPS =
|
|
59
|
+
_TRIPS = 129 # .Intersection, .PlumbTo, 19+
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
class _Lat(Lat):
|
|
@@ -716,7 +716,7 @@ class RhumbLineBase(_CapsBase):
|
|
|
716
716
|
t = _xTMr(v.x, v.y, lon0=p.lon) # PYCHOK Reverse4Tuple
|
|
717
717
|
d = _diff(t.lon - p.lon, t.lat) # PYCHOK t.lat + p.lat - p.lat
|
|
718
718
|
p = _LL2T(t.lat + p.lat, t.lon) # PYCHOK t.lon + p.lon = lon0
|
|
719
|
-
if d < tol: # 19 trips
|
|
719
|
+
if d < tol: # 19+ trips
|
|
720
720
|
break
|
|
721
721
|
else:
|
|
722
722
|
raise ValueError(Fmt.no_convergence(d, tol))
|
|
@@ -724,7 +724,7 @@ class RhumbLineBase(_CapsBase):
|
|
|
724
724
|
P = GDict(lat1=self.lat1, lat2=p.lat, lat0=other.lat1,
|
|
725
725
|
lon1=self.lon1, lon2=p.lon, lon0=other.lon1,
|
|
726
726
|
name=_dunder_nameof(self.Intersection, self.name))
|
|
727
|
-
r =
|
|
727
|
+
r = self.Inverse(p.lat, p.lon, outmask=Caps.DISTANCE)
|
|
728
728
|
t = other.Inverse(p.lat, p.lon, outmask=Caps.DISTANCE)
|
|
729
729
|
P.set_(azi12= self.azi12, a12=r.a12, s12=r.s12,
|
|
730
730
|
azi02=other.azi12, a02=t.a12, s02=t.s12,
|
|
@@ -824,9 +824,9 @@ class RhumbLineBase(_CapsBase):
|
|
|
824
824
|
@kwarg exact: If C{None}, use a rhumb line perpendicular to this rhumb line,
|
|
825
825
|
otherwise use an I{exact} C{Geodesic...} from the given point
|
|
826
826
|
perpendicular to this rhumb line (C{bool} or C{Geodesic...}),
|
|
827
|
-
see method L{Ellipsoid.geodesic_}.
|
|
828
|
-
@kwarg eps: Optional tolerance
|
|
829
|
-
|
|
827
|
+
see method L{geodesic_<pygeodesy.Ellipsoid.geodesic_>}.
|
|
828
|
+
@kwarg eps: Optional tolerance (C{EPS}), used only if C{B{exact} is None},
|
|
829
|
+
see function L{intersection3d3<pygeodesy.intersection3d3>}.
|
|
830
830
|
@kwarg est: Optionally, an initial estimate for the distance C{s12} of the
|
|
831
831
|
intersection I{along} this rhumb line (C{meter}), used only if
|
|
832
832
|
C{B{exact} is not None}.
|
|
@@ -849,11 +849,11 @@ class RhumbLineBase(_CapsBase):
|
|
|
849
849
|
<https://PyPI.org/project/geographiclib>}
|
|
850
850
|
package not found or not installed.
|
|
851
851
|
|
|
852
|
-
@raise IntersectionError: No convergence for this B{C{eps}} or
|
|
853
|
-
intersection for some other reason.
|
|
852
|
+
@raise IntersectionError: No convergence for this B{C{eps}} or B{C{tol}} or
|
|
853
|
+
no intersection for some other reason.
|
|
854
854
|
|
|
855
|
-
@see: Methods C{distance2}, C{Intersecant2} and C{Intersection}
|
|
856
|
-
|
|
855
|
+
@see: Methods C{distance2}, C{Intersecant2} and C{Intersection} and function
|
|
856
|
+
L{intersection3d3<pygeodesy.intersection3d3>}.
|
|
857
857
|
'''
|
|
858
858
|
Cs, tol = Caps, Float_(tol=tol, low=EPS, high=None)
|
|
859
859
|
|
|
@@ -899,7 +899,7 @@ class RhumbLineBase(_CapsBase):
|
|
|
899
899
|
lat0=lat0, lon0=lon0, iteration=i, at=r.azi2 - self.azi12,
|
|
900
900
|
name=_dunder_nameof(self.PlumbTo, self.name))
|
|
901
901
|
except Exception as x: # Fsum(NAN) Value-, ZeroDivisionError
|
|
902
|
-
raise IntersectionError(lat0, lon0, tol=tol, exact=exact,
|
|
902
|
+
raise IntersectionError(lat0=lat0, lon0=lon0, tol=tol, exact=exact,
|
|
903
903
|
eps=eps, est=est, iteration=i, cause=x)
|
|
904
904
|
|
|
905
905
|
return P
|
|
@@ -907,29 +907,28 @@ class RhumbLineBase(_CapsBase):
|
|
|
907
907
|
def Position(self, s12, outmask=Caps.LATITUDE_LONGITUDE):
|
|
908
908
|
'''Compute a point at a given distance on this rhumb line.
|
|
909
909
|
|
|
910
|
-
@arg s12: The distance along this rhumb line from its origin to
|
|
911
|
-
|
|
912
|
-
@kwarg outmask: Bit-or'ed combination of L{Caps} values specifying
|
|
913
|
-
|
|
910
|
+
@arg s12: The distance along this rhumb line from its origin to the point
|
|
911
|
+
(C{meters}), can be negative.
|
|
912
|
+
@kwarg outmask: Bit-or'ed combination of L{Caps} values specifying the
|
|
913
|
+
quantities to be returned.
|
|
914
914
|
|
|
915
|
-
@return: L{GDict} with 4 to 8 items C{azi12, a12, s12, S12, lat2,
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
915
|
+
@return: L{GDict} with 4 to 8 items C{azi12, a12, s12, S12, lat2, lat1,
|
|
916
|
+
lon2, lon1} with latitude C{lat2} and longitude C{lon2} of the
|
|
917
|
+
point in C{degrees}, the rhumb angle C{a12} in C{degrees} from
|
|
918
|
+
the start point of and the area C{S12} under this rhumb line
|
|
919
|
+
in C{meter} I{squared}.
|
|
920
920
|
|
|
921
|
-
@raise ImportError: Package C{numpy} not found or not installed,
|
|
922
|
-
only
|
|
923
|
-
|
|
921
|
+
@raise ImportError: Package C{numpy} not found or not installed, required
|
|
922
|
+
only for L{RhumbLineAux} area C{S12} when C{B{exact}
|
|
923
|
+
is True}.
|
|
924
924
|
|
|
925
|
-
@note: If B{C{s12}} is large enough that the rhumb line crosses a
|
|
926
|
-
|
|
927
|
-
|
|
925
|
+
@note: If B{C{s12}} is large enough that the rhumb line crosses a pole, the
|
|
926
|
+
longitude of the second point is indeterminate and C{NAN} is returned
|
|
927
|
+
for C{lon2} and area C{S12}.
|
|
928
928
|
|
|
929
|
-
If the first point is a pole, the cosine of its latitude is
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
carried out in finite terms.
|
|
929
|
+
If the first point is a pole, the cosine of its latitude is taken to
|
|
930
|
+
be C{sqrt(L{EPS})}. This position is extremely close to the actual
|
|
931
|
+
pole and allows the calculation to be carried out in finite terms.
|
|
933
932
|
'''
|
|
934
933
|
return self._Position(self.m2degrees(s12), s12, outmask)
|
|
935
934
|
|
pygeodesy/rhumb/ekx.py
CHANGED
|
@@ -43,7 +43,7 @@ from pygeodesy.utily import atan1, sincos2_
|
|
|
43
43
|
from math import asinh, atan, cos, cosh, radians, sin, sinh, sqrt, tan
|
|
44
44
|
|
|
45
45
|
__all__ = _ALL_LAZY.rhumb_ekx
|
|
46
|
-
__version__ = '24.
|
|
46
|
+
__version__ = '24.06.11'
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
class Rhumb(RhumbBase):
|
|
@@ -61,13 +61,12 @@ class Rhumb(RhumbBase):
|
|
|
61
61
|
@kwarg a_earth: This rhumb's earth model (L{Datum}, L{Ellipsoid},
|
|
62
62
|
L{Ellipsoid2}, L{a_f2Tuple}, 2-tuple C{(a, f)}) or
|
|
63
63
|
the (equatorial) radius (C{meter}, conventionally).
|
|
64
|
-
@kwarg f: The ellipsoid's flattening (C{scalar}),
|
|
65
|
-
C{scalar}, ignored otherwise.
|
|
64
|
+
@kwarg f: The ellipsoid's flattening (C{scalar}), required if B{C{a_earth}}
|
|
65
|
+
is C{scalar}, ignored otherwise.
|
|
66
66
|
@kwarg exact: If C{True}, use an addition theorem for elliptic integrals
|
|
67
67
|
to compute I{Divided differences}, otherwise use the I{Krüger}
|
|
68
68
|
series expansion (C{bool} or C{None}), see also properties
|
|
69
69
|
C{exact} and C{TMorder}.
|
|
70
|
-
@kwarg name: Optional name (C{str}).
|
|
71
70
|
@kwarg RA_TMorder_name: Optional C{B{name}=NN} (C{str}) and optional keyword
|
|
72
71
|
arguments B{C{RAorder}=6} and B{C{TMorder}=6} to set the respective
|
|
73
72
|
C{order}, see properties C{RAorder} and C{TMorder}.
|
pygeodesy/sphericalBase.py
CHANGED
|
@@ -19,7 +19,7 @@ from pygeodesy.constants import EPS, EPS0, PI, PI2, PI_2, R_M, \
|
|
|
19
19
|
_over, isnear0, isnon0
|
|
20
20
|
from pygeodesy.datums import Datums, _earth_ellipsoid, _spherical_datum
|
|
21
21
|
from pygeodesy.errors import IntersectionError, _ValueError, \
|
|
22
|
-
_xattr, _xError
|
|
22
|
+
_xattr, _xattrs, _xError
|
|
23
23
|
from pygeodesy.fmath import favg, fdot, hypot, sqrt_a
|
|
24
24
|
from pygeodesy.interns import _COMMA_, _concentric_, _datum_, _distant_, \
|
|
25
25
|
_exceed_PI_radians_, _name_, _near_, \
|
|
@@ -27,10 +27,10 @@ from pygeodesy.interns import _COMMA_, _concentric_, _datum_, _distant_, \
|
|
|
27
27
|
from pygeodesy.latlonBase import LatLonBase, _trilaterate5 # PYCHOK passed
|
|
28
28
|
from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS
|
|
29
29
|
# from pygeodesy.namedTuples import Bearing2Tuple # from .cartesianBase
|
|
30
|
-
from pygeodesy.nvectorBase import NvectorBase, Fmt
|
|
30
|
+
from pygeodesy.nvectorBase import NvectorBase, Fmt
|
|
31
31
|
from pygeodesy.props import deprecated_method, property_doc_, property_RO, \
|
|
32
32
|
_update_all
|
|
33
|
-
# from pygeodesy.streprs import Fmt
|
|
33
|
+
# from pygeodesy.streprs import Fmt # from .nvectorBase
|
|
34
34
|
from pygeodesy.units import Bearing, Bearing_, _isRadius, Radians_, Radius, \
|
|
35
35
|
Radius_, Scalar_, _100km
|
|
36
36
|
from pygeodesy.utily import acos1, asin1, atan2b, atan2d, degrees90, \
|
|
@@ -40,7 +40,7 @@ from pygeodesy.utily import acos1, asin1, atan2b, atan2d, degrees90, \
|
|
|
40
40
|
from math import cos, fabs, log, sin, sqrt
|
|
41
41
|
|
|
42
42
|
__all__ = _ALL_LAZY.sphericalBase
|
|
43
|
-
__version__ = '24.06.
|
|
43
|
+
__version__ = '24.06.12'
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
class CartesianSphericalBase(CartesianBase):
|
|
@@ -443,8 +443,8 @@ class LatLonSphericalBase(LatLonBase):
|
|
|
443
443
|
@kwarg wrap: If C{True}, wrap or I{normalize} and unroll the
|
|
444
444
|
B{C{other}} point (C{bool}).
|
|
445
445
|
|
|
446
|
-
@return: Distance (C{meter}, the same units as B{C{radius}}
|
|
447
|
-
|
|
446
|
+
@return: Distance (C{meter}, the same units as B{C{radius}} or
|
|
447
|
+
C{radians} if C{B{radius} is None}).
|
|
448
448
|
|
|
449
449
|
@raise TypeError: The B{C{other}} point is incompatible.
|
|
450
450
|
|
|
@@ -576,12 +576,11 @@ class LatLonSphericalBase(LatLonBase):
|
|
|
576
576
|
'''Convert this point to C{Nvector} components, I{including
|
|
577
577
|
height}.
|
|
578
578
|
|
|
579
|
-
@kwarg Nvector_kwds: Optional, additional B{C{Nvector}}
|
|
580
|
-
|
|
581
|
-
C{B{Nvector} is None}.
|
|
579
|
+
@kwarg Nvector_kwds: Optional, additional B{C{Nvector}} keyword
|
|
580
|
+
arguments, ignored if C{B{Nvector} is None}.
|
|
582
581
|
|
|
583
|
-
@return: An B{C{Nvector}} or a L{Vector4Tuple}C{(x, y, z, h)}
|
|
584
|
-
|
|
582
|
+
@return: An B{C{Nvector}} or a L{Vector4Tuple}C{(x, y, z, h)} if
|
|
583
|
+
B{C{Nvector} is None}.
|
|
585
584
|
|
|
586
585
|
@raise TypeError: Invalid B{C{Nvector}} or B{C{Nvector_kwds}}.
|
|
587
586
|
'''
|
pygeodesy/sphericalNvector.py
CHANGED
|
@@ -61,7 +61,7 @@ from pygeodesy.utily import atan2, degrees360, fabs, sincos2, sincos2_, \
|
|
|
61
61
|
# from math import atan2, fabs # from utily
|
|
62
62
|
|
|
63
63
|
__all__ = _ALL_LAZY.sphericalNvector
|
|
64
|
-
__version__ = '24.
|
|
64
|
+
__version__ = '24.06.11'
|
|
65
65
|
|
|
66
66
|
_lines_ = 'lines'
|
|
67
67
|
|
|
@@ -226,7 +226,7 @@ class LatLon(LatLonNvectorBase, LatLonSphericalBase):
|
|
|
226
226
|
|
|
227
227
|
@return: Distance between this and the B{C{other}} point
|
|
228
228
|
(C{meter}, same units as B{C{radius}} or C{radians}
|
|
229
|
-
if B{
|
|
229
|
+
if C{B{radius} is None}).
|
|
230
230
|
|
|
231
231
|
@raise TypeError: Invalid B{C{other}} point.
|
|
232
232
|
'''
|
|
@@ -303,14 +303,14 @@ class LatLon(LatLonNvectorBase, LatLonSphericalBase):
|
|
|
303
303
|
to an other point.
|
|
304
304
|
|
|
305
305
|
@arg other: The other point (L{LatLon}).
|
|
306
|
-
@kwarg wrap: If C{True}, wrap or I{normalize} and unroll
|
|
307
|
-
|
|
306
|
+
@kwarg wrap: If C{True}, wrap or I{normalize} and unroll the
|
|
307
|
+
B{C{other}} point (C{bool}).
|
|
308
308
|
|
|
309
309
|
@return: Initial bearing (compass C{degrees360}).
|
|
310
310
|
|
|
311
311
|
@raise Crosserror: This point coincides with the B{C{other}}
|
|
312
|
-
point or the C{NorthPole}
|
|
313
|
-
|
|
312
|
+
point or the C{NorthPole} and L{crosserrors
|
|
313
|
+
<pygeodesy.crosserrors>} is C{True}.
|
|
314
314
|
|
|
315
315
|
@raise TypeError: The B{C{other}} point is not L{LatLon}.
|
|
316
316
|
'''
|
|
@@ -660,8 +660,8 @@ class LatLon(LatLonNvectorBase, LatLonSphericalBase):
|
|
|
660
660
|
the C{closest} point (L{LatLon}), the C{distance}
|
|
661
661
|
between this and the C{closest} point in C{meter},
|
|
662
662
|
same units as B{C{radius}} or in C{radians} if
|
|
663
|
-
B{
|
|
664
|
-
|
|
663
|
+
C{B{radius} is None} and the C{angle} from this to
|
|
664
|
+
the C{closest} point in compass C{degrees360}.
|
|
665
665
|
|
|
666
666
|
@raise TypeError: Some B{C{points}} are not C{LatLon}.
|
|
667
667
|
|
|
@@ -707,7 +707,7 @@ class LatLon(LatLonNvectorBase, LatLonSphericalBase):
|
|
|
707
707
|
Specify C{B{Nvector}=...} to override this C{Nvector}
|
|
708
708
|
class or use C{B{Nvector}=None}.
|
|
709
709
|
|
|
710
|
-
@return: An C{Nvector} or if B{
|
|
710
|
+
@return: An C{Nvector} or if C{B{Nvector} is None}, a L{Vector4Tuple}C{(x, y, z, h)}.
|
|
711
711
|
|
|
712
712
|
@raise TypeError: Invalid C{Nvector} or other B{C{Nvector_and_kwds}} item.
|
|
713
713
|
'''
|
|
@@ -810,8 +810,8 @@ def areaOf(points, radius=R_M, wrap=False):
|
|
|
810
810
|
@kwarg wrap: If C{True}, wrap or I{normalize} and unroll the
|
|
811
811
|
B{C{points}} (C{bool}).
|
|
812
812
|
|
|
813
|
-
@return: Polygon area (C{meter} I{squared}
|
|
814
|
-
B{C{radius}}, or C{radians} if B{
|
|
813
|
+
@return: Polygon area (C{meter} I{squared}, same units as
|
|
814
|
+
B{C{radius}}, or C{radians} if C{B{radius} is None}).
|
|
815
815
|
|
|
816
816
|
@raise PointsError: Insufficient number of B{C{points}}.
|
|
817
817
|
|
|
@@ -1085,7 +1085,7 @@ def nearestOn3(point, points, closed=False, radius=R_M, height=None, wrap=False)
|
|
|
1085
1085
|
C{distance} and the C{angle} between the C{closest}
|
|
1086
1086
|
and the given B{C{point}}. The C{distance} is in
|
|
1087
1087
|
C{meter}, same units as B{C{radius}} or in C{radians}
|
|
1088
|
-
if B{
|
|
1088
|
+
if C{B{radius} is None}, the C{angle} is in compass
|
|
1089
1089
|
C{degrees360}.
|
|
1090
1090
|
|
|
1091
1091
|
@raise PointsError: Insufficient number of B{C{points}}.
|
|
@@ -1109,7 +1109,7 @@ def perimeterOf(points, closed=False, radius=R_M, wrap=False):
|
|
|
1109
1109
|
B{C{points}} (C{bool}).
|
|
1110
1110
|
|
|
1111
1111
|
@return: Polygon perimeter (C{meter}, same units as B{C{radius}}
|
|
1112
|
-
or C{radians} if B{
|
|
1112
|
+
or C{radians} if C{B{radius} is None}).
|
|
1113
1113
|
|
|
1114
1114
|
@raise PointsError: Insufficient number of B{C{points}}.
|
|
1115
1115
|
|