pygeodesy 24.8.4__py2.py3-none-any.whl → 24.9.9__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.8.4.dist-info → PyGeodesy-24.9.9.dist-info}/METADATA +17 -16
- PyGeodesy-24.9.9.dist-info/RECORD +118 -0
- {PyGeodesy-24.8.4.dist-info → PyGeodesy-24.9.9.dist-info}/WHEEL +1 -1
- pygeodesy/__init__.py +23 -23
- pygeodesy/__main__.py +46 -47
- pygeodesy/auxilats/_CX_4.py +104 -181
- pygeodesy/auxilats/_CX_6.py +152 -277
- pygeodesy/auxilats/_CX_8.py +211 -438
- pygeodesy/auxilats/_CX_Rs.py +222 -0
- pygeodesy/auxilats/__init__.py +2 -2
- pygeodesy/auxilats/__main__.py +30 -38
- pygeodesy/auxilats/auxDST.py +2 -2
- pygeodesy/auxilats/auxLat.py +28 -36
- pygeodesy/auxilats/auxily.py +30 -50
- pygeodesy/basics.py +18 -7
- pygeodesy/booleans.py +10 -11
- pygeodesy/cartesianBase.py +5 -5
- pygeodesy/constants.py +35 -34
- pygeodesy/ellipsoidalBase.py +18 -15
- pygeodesy/ellipsoidalExact.py +2 -2
- pygeodesy/ellipsoidalGeodSolve.py +2 -2
- pygeodesy/ellipsoidalKarney.py +2 -2
- pygeodesy/ellipsoidalNvector.py +2 -2
- pygeodesy/ellipsoidalVincenty.py +7 -6
- pygeodesy/elliptic.py +154 -88
- pygeodesy/epsg.py +3 -3
- pygeodesy/etm.py +71 -59
- pygeodesy/fmath.py +99 -90
- pygeodesy/fsums.py +201 -14
- pygeodesy/gars.py +9 -8
- pygeodesy/geodesici.py +6 -5
- pygeodesy/geodesicx/_C4_24.py +1 -3
- pygeodesy/geodesicx/_C4_27.py +1 -3
- pygeodesy/geodesicx/_C4_30.py +1 -3
- pygeodesy/geodesicx/__init__.py +1 -1
- pygeodesy/geodesicx/__main__.py +44 -46
- pygeodesy/geodesicx/gx.py +3 -3
- pygeodesy/geodesicx/gxarea.py +5 -5
- pygeodesy/geodesicx/gxbases.py +32 -18
- pygeodesy/geodsolve.py +3 -3
- pygeodesy/geohash.py +18 -11
- pygeodesy/geoids.py +293 -315
- pygeodesy/heights.py +150 -158
- pygeodesy/internals.py +70 -9
- pygeodesy/interns.py +4 -4
- pygeodesy/karney.py +83 -60
- pygeodesy/ktm.py +4 -4
- pygeodesy/latlonBase.py +13 -7
- pygeodesy/lazily.py +13 -8
- pygeodesy/ltp.py +5 -6
- pygeodesy/ltpTuples.py +7 -1
- pygeodesy/mgrs.py +47 -42
- pygeodesy/named.py +8 -4
- pygeodesy/namedTuples.py +14 -1
- pygeodesy/osgr.py +7 -7
- pygeodesy/points.py +2 -2
- pygeodesy/props.py +7 -6
- pygeodesy/resections.py +7 -7
- pygeodesy/rhumb/__init__.py +1 -1
- pygeodesy/rhumb/aux_.py +42 -60
- pygeodesy/rhumb/solve.py +3 -3
- pygeodesy/simplify.py +10 -10
- pygeodesy/sphericalBase.py +3 -3
- pygeodesy/sphericalTrigonometry.py +2 -2
- pygeodesy/streprs.py +3 -3
- pygeodesy/triaxials.py +207 -201
- pygeodesy/units.py +3 -3
- pygeodesy/unitsBase.py +4 -4
- pygeodesy/utmupsBase.py +3 -3
- pygeodesy/vector2d.py +158 -51
- pygeodesy/vector3d.py +13 -52
- pygeodesy/vector3dBase.py +81 -63
- pygeodesy/webmercator.py +3 -3
- pygeodesy/wgrs.py +20 -22
- PyGeodesy-24.8.4.dist-info/RECORD +0 -117
- {PyGeodesy-24.8.4.dist-info → PyGeodesy-24.9.9.dist-info}/top_level.txt +0 -0
pygeodesy/booleans.py
CHANGED
|
@@ -24,10 +24,10 @@ from pygeodesy.errors import ClipError, _IsnotError, _TypeError, \
|
|
|
24
24
|
from pygeodesy.fmath import favg, hypot, hypot2
|
|
25
25
|
# from pygeodesy.fsums import fsum1 # _MODS
|
|
26
26
|
from pygeodesy.interns import NN, _BANG_, _clip_, _clipid_, _COMMASPACE_, \
|
|
27
|
-
_composite_, _DOT_,
|
|
28
|
-
|
|
29
|
-
_points_, _SPACE_, _too_, _X_,
|
|
30
|
-
_B_, _d_, _R_ # PYCHOK used!
|
|
27
|
+
_composite_, _DOT_, _duplicate_, _e_, \
|
|
28
|
+
_ELLIPSIS_, _few_, _height_, _lat_, _LatLon_, \
|
|
29
|
+
_lon_, _not_, _points_, _SPACE_, _too_, _X_, \
|
|
30
|
+
_x_, _B_, _d_, _R_ # PYCHOK used!
|
|
31
31
|
from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS
|
|
32
32
|
from pygeodesy.latlonBase import LatLonBase, \
|
|
33
33
|
LatLon2Tuple, Property_RO, property_RO
|
|
@@ -43,7 +43,7 @@ from pygeodesy.utily import fabs, _unrollon, _Wrap
|
|
|
43
43
|
# from math import fabs # from .utily
|
|
44
44
|
|
|
45
45
|
__all__ = _ALL_LAZY.booleans
|
|
46
|
-
__version__ = '24.
|
|
46
|
+
__version__ = '24.08.30'
|
|
47
47
|
|
|
48
48
|
_0_EPS = EPS # near-zero, positive
|
|
49
49
|
_EPS_0 = -EPS # near-zero, negative
|
|
@@ -51,12 +51,11 @@ _1_EPS = _1_0 + EPS # near-one, over
|
|
|
51
51
|
_EPS_1 = _1_0 - EPS # near-one, under
|
|
52
52
|
_10EPS = EPS * 10 # see ._2Abs, ._10eps
|
|
53
53
|
|
|
54
|
-
_alpha_
|
|
55
|
-
_boolean_
|
|
56
|
-
_case_
|
|
57
|
-
_corners_
|
|
58
|
-
|
|
59
|
-
_open_ = 'open'
|
|
54
|
+
_alpha_ = 'alpha'
|
|
55
|
+
_boolean_ = 'boolean'
|
|
56
|
+
_case_ = 'case'
|
|
57
|
+
_corners_ = 'corners'
|
|
58
|
+
_open_ = 'open'
|
|
60
59
|
|
|
61
60
|
|
|
62
61
|
def _Enum(txt, enum): # PYCHOK unused
|
pygeodesy/cartesianBase.py
CHANGED
|
@@ -43,7 +43,7 @@ from pygeodesy.vector3d import Vector3d, _xyzhdlln4
|
|
|
43
43
|
# from math import atan2, degrees, fabs, radians, sqrt # from .fmath, .utily
|
|
44
44
|
|
|
45
45
|
__all__ = _ALL_LAZY.cartesianBase
|
|
46
|
-
__version__ = '24.
|
|
46
|
+
__version__ = '24.08.18'
|
|
47
47
|
|
|
48
48
|
_r_ = 'r'
|
|
49
49
|
_theta_ = 'theta'
|
|
@@ -342,9 +342,9 @@ class CartesianBase(Vector3d):
|
|
|
342
342
|
I{overriding} this datum (L{Datum}, L{Ellipsoid},
|
|
343
343
|
L{Ellipsoid2}, L{a_f2Tuple}, L{Triaxial}, L{Triaxial_},
|
|
344
344
|
L{JacobiConformal} or C{meter}, conventionally).
|
|
345
|
-
@kwarg normal: If C{True} the projection is the nearest point on the
|
|
345
|
+
@kwarg normal: If C{True}, the projection is the nearest point on the
|
|
346
346
|
ellipsoid's surface, otherwise the intersection of the
|
|
347
|
-
radial line to the ellipsoid's center and
|
|
347
|
+
radial line to the ellipsoid's center and surface C{bool}).
|
|
348
348
|
@kwarg Cartesian_and_kwds: Optional C{B{Cartesian}=None} class to return
|
|
349
349
|
the I{projection} and additional B{C{Cartesian}} keyword
|
|
350
350
|
arguments.
|
|
@@ -437,7 +437,7 @@ class CartesianBase(Vector3d):
|
|
|
437
437
|
# <https://GitHub.com/pbrod/nvector>/src/nvector/core.py>
|
|
438
438
|
# _equation23 and <https://www.NavLab.net/nvector>
|
|
439
439
|
E = datum.ellipsoid
|
|
440
|
-
x, y, z = self.
|
|
440
|
+
x, y, z = self.xyz3
|
|
441
441
|
|
|
442
442
|
# Kenneth Gade eqn 23
|
|
443
443
|
p = hypot2(x, y) * E.a2_
|
|
@@ -836,7 +836,7 @@ class CartesianBase(Vector3d):
|
|
|
836
836
|
# if inverse and d != _WGS84:
|
|
837
837
|
# raise _ValueError(inverse=inverse, datum=d,
|
|
838
838
|
# txt_not_=_WGS84.name)
|
|
839
|
-
xyz = transform.transform(*self.
|
|
839
|
+
xyz = transform.transform(*self.xyz3, inverse=inverse)
|
|
840
840
|
c = self.dup(xyz=xyz, datum=datum or self.datum)
|
|
841
841
|
return c
|
|
842
842
|
|
pygeodesy/constants.py
CHANGED
|
@@ -17,14 +17,14 @@ from pygeodesy.interns import _INF_, _NAN_, _UNDER_
|
|
|
17
17
|
# from pygeodesy.streprs import Fmt # from .unitsBase
|
|
18
18
|
from pygeodesy.unitsBase import Float, Int, Radius, _ALL_LAZY, Fmt
|
|
19
19
|
|
|
20
|
-
from math import fabs, isinf, isnan, pi as
|
|
20
|
+
from math import fabs, isinf, isnan, pi as _pi, sqrt
|
|
21
21
|
try:
|
|
22
22
|
from math import inf as _inf, nan as _nan # PYCHOK Python 3+
|
|
23
23
|
except ImportError: # Python 2-
|
|
24
24
|
_inf, _nan = float(_INF_), float(_NAN_)
|
|
25
25
|
|
|
26
26
|
__all__ = _ALL_LAZY.constants
|
|
27
|
-
__version__ = '24.
|
|
27
|
+
__version__ = '24.08.26'
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
def _copysign_0_0(y):
|
|
@@ -100,7 +100,7 @@ def float0_(*xs):
|
|
|
100
100
|
yield float(x) if x else _0_0
|
|
101
101
|
|
|
102
102
|
|
|
103
|
-
def _float0(f): # in .resections, .vector3dBase, ...
|
|
103
|
+
def _float0(f): # in .auxilats.auxily, .resections, .vector3dBase, ...
|
|
104
104
|
'''(INTERNAL) Return C{float(B{f})} or C{INT0}.
|
|
105
105
|
'''
|
|
106
106
|
if f:
|
|
@@ -181,6 +181,7 @@ _10_0 = _float( 10) # PYCHOK expected
|
|
|
181
181
|
_16_0 = _float( 16) # PYCHOK expected
|
|
182
182
|
_32_0 = _float( 32) # PYCHOK expected
|
|
183
183
|
_60_0 = _float( 60) # PYCHOK expected
|
|
184
|
+
_64_0 = _float( 64) # PYCHOK expected
|
|
184
185
|
_90_0 = _float( 90) # PYCHOK expected
|
|
185
186
|
_100_0 = _float( 100) # PYCHOK expected
|
|
186
187
|
_180_0 = _float( 180) # PYCHOK expected
|
|
@@ -224,30 +225,30 @@ except ImportError: # PYCHOK no cover
|
|
|
224
225
|
MIN_EXP = Int(MIN_EXP =_log2(MIN)) # -307 base 10
|
|
225
226
|
# RADIX = Int(Radix =2) # base
|
|
226
227
|
|
|
227
|
-
EPS0 = _Float( EPS0
|
|
228
|
-
EPS02 = _Float( EPS02
|
|
229
|
-
EPS_2 = _Float( EPS_2
|
|
230
|
-
EPS1 = _Float( EPS1
|
|
231
|
-
EPS2 = _Float( EPS2
|
|
232
|
-
EPS4 = _Float( EPS4
|
|
233
|
-
# _1EPS = _Float(_1EPS
|
|
234
|
-
_1_EPS = _Float(_1_EPS
|
|
235
|
-
# _2_EPS = _Float(_2_EPS
|
|
236
|
-
_EPS2e4 = _Float(_EPS2e4
|
|
237
|
-
_EPS4e8 = _Float(_EPS4e8
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
228
|
+
EPS0 = _Float( EPS0 = EPS**2) # PYCHOK near-/non-zero comparison 4.930381e-32, or EPS or EPS_2
|
|
229
|
+
EPS02 = _Float( EPS02 = EPS**4) # PYCHOK near-zero-squared comparison 2.430865e-63
|
|
230
|
+
EPS_2 = _Float( EPS_2 = EPS / _2_0) # PYCHOK ≈ 1.110223024625e-16
|
|
231
|
+
EPS1 = _Float( EPS1 =_1_0 - EPS) # PYCHOK ≈ 0.9999999999999998
|
|
232
|
+
EPS2 = _Float( EPS2 = EPS * _2_0) # PYCHOK ≈ 4.440892098501e-16
|
|
233
|
+
EPS4 = _Float( EPS4 = EPS * _4_0) # PYCHOK ≈ 8.881784197001e-16
|
|
234
|
+
# _1EPS = _Float(_1EPS =_1_0 + EPS) # PYCHOK ≈ 1.0000000000000002
|
|
235
|
+
_1_EPS = _Float(_1_EPS =_1_0 / EPS) # PYCHOK = 4503599627370496.0
|
|
236
|
+
# _2_EPS = _Float(_2_EPS =_2_0 / EPS) # PYCHOK = 9007199254740992.0
|
|
237
|
+
_EPS2e4 = _Float(_EPS2e4= EPS2 * 1.e4) # PYCHOK ≈ 4.440892098501e-12
|
|
238
|
+
_EPS4e8 = _Float(_EPS4e8= EPS4 * 1.e8) # PYCHOK ≈ 8.881784197001e-08
|
|
239
|
+
_EPSjam = _Float(_EPSjam= pow(EPS, 0.75)) # PYCHOK = 1.818989403546e-12
|
|
240
|
+
_EPSmin = _Float(_EPSmin= sqrt(MIN)) # PYCHOK = 1.49166814624e-154
|
|
241
|
+
_EPSqrt = _Float(_EPSqrt= sqrt(EPS)) # PYCHOK = 1.49011611938e5-08
|
|
242
|
+
_EPStol = _Float(_EPStol=_EPSqrt * _0_1) # PYCHOK = 1.49011611938e5-09 == sqrt(EPS * _0_01)
|
|
243
|
+
|
|
244
|
+
_89_999 = _Float(_89_999=_90_0 * EPS1) # just below 90.0
|
|
243
245
|
# <https://Numbers.Computation.Free.FR/Constants/Miscellaneous/digits.html>
|
|
244
|
-
_1__90 = _Float(_1__90
|
|
245
|
-
_2__PI = _Float(_2__PI
|
|
246
|
+
_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
|
|
247
|
+
_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
|
|
246
248
|
|
|
247
|
-
_1_16th = _Float(_1_16th
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
_1_6th = _Float(_1_6th =_1_0 / _6_0) # PYCHOK in .fmath
|
|
249
|
+
_1_16th = _Float(_1_16th=_1_0 / _16_0) # PYCHOK in .ellipsoids, .karney
|
|
250
|
+
_1_3rd = _Float(_1_3rd =_1_0 / _3_0) # PYCHOK in .fmath
|
|
251
|
+
_1_6th = _Float(_1_6th =_1_0 / _6_0) # PYCHOK in .fmath
|
|
251
252
|
|
|
252
253
|
_K0_UTM = _Float(_K0_UTM = 0.9996) # PYCHOK in .etm, .ktm, .utm, UTM scale at central meridian
|
|
253
254
|
# sqrt(2) <https://WikiPedia.org/wiki/Square_root_of_2>
|
|
@@ -261,14 +262,14 @@ NAN = Float(NAN =_nan) # PYCHOK Not-A-Number, see function L{isnan}, NOT _
|
|
|
261
262
|
NEG0 = Float(NEG0=_N_0_0) # PYCHOK NEGative 0.0, see function L{isneg0}, NOT _Float!
|
|
262
263
|
NINF = Float(NINF=-INF) # PYCHOK Negative INFinity, NOT _Float!
|
|
263
264
|
|
|
264
|
-
PI = _Float(PI =
|
|
265
|
-
PI2 = _Float(PI2 =
|
|
266
|
-
PI_2 = _Float(PI_2 =
|
|
267
|
-
PI3 = _Float(PI3 =
|
|
268
|
-
PI3_2 = _Float(PI3_2=
|
|
269
|
-
PI_3 = _Float(PI_3 =
|
|
270
|
-
PI4 = _Float(PI4 =
|
|
271
|
-
PI_4 = _Float(PI_4 =
|
|
265
|
+
PI = _Float(PI =_pi) # 3.1415_9265_3589_7932_3846_2643_3832_795
|
|
266
|
+
PI2 = _Float(PI2 =_pi * _2_0) # PYCHOK Two PI, M{PI * 2} aka I{Tau}
|
|
267
|
+
PI_2 = _Float(PI_2 =_pi / _2_0) # PYCHOK Half PI, M{PI / 2}
|
|
268
|
+
PI3 = _Float(PI3 =_pi * _3_0) # PYCHOK Three PI, M{PI * 3}
|
|
269
|
+
PI3_2 = _Float(PI3_2=_pi * _1_5) # PYCHOK PI and a half, M{PI * 3 / 2}
|
|
270
|
+
PI_3 = _Float(PI_3 =_pi / _3_0) # PYCHOK One third PI, M{PI / 3}
|
|
271
|
+
PI4 = _Float(PI4 =_pi * _4_0) # PYCHOK Four PI, M{PI * 4}
|
|
272
|
+
PI_4 = _Float(PI_4 =_pi / _4_0) # PYCHOK Quarter PI, M{PI / 4}
|
|
272
273
|
|
|
273
274
|
R_MA = _Radius(R_MA=6378137.0) # PYCHOK equatorial earth radius (C{meter}), WGS84, EPSG:3785
|
|
274
275
|
R_MB = _Radius(R_MB=6356752.3) # PYCHOK polar earth radius (C{meter}), WGS84, EPSG:3785
|
|
@@ -441,7 +442,7 @@ def isnon0(x, eps0=EPS0):
|
|
|
441
442
|
def _off90(lat):
|
|
442
443
|
'''(INTERNAL) Off 90.0 for .gars and .wgrs.
|
|
443
444
|
'''
|
|
444
|
-
return max(min(lat,
|
|
445
|
+
return max(min(lat, _89_999), -_89_999)
|
|
445
446
|
|
|
446
447
|
|
|
447
448
|
try:
|
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.08.14'
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
class CartesianEllipsoidalBase(CartesianBase):
|
|
@@ -111,7 +111,7 @@ class CartesianEllipsoidalBase(CartesianBase):
|
|
|
111
111
|
C{Vector3Tuple} or C{Vector4Tuple}).
|
|
112
112
|
@arg radius2: Radius of the second sphere or circle (same units as this and
|
|
113
113
|
the B{C{other}} point's coordinates).
|
|
114
|
-
@kwarg sphere: If C{True} compute the center and radius of the intersection
|
|
114
|
+
@kwarg sphere: If C{True}, compute the center and radius of the intersection
|
|
115
115
|
of two I{spheres}. If C{False}, ignore the C{z}-component and
|
|
116
116
|
compute the intersection of two I{circles} (C{bool}).
|
|
117
117
|
@kwarg Vector: Class to return intersections (C{Cartesian}, L{Vector3d} or
|
|
@@ -527,7 +527,7 @@ class LatLonEllipsoidalBase(LatLonBase):
|
|
|
527
527
|
point is computed as the C{destination} along that bearing at
|
|
528
528
|
about 1.5 times the distance from the start point to an initial
|
|
529
529
|
gu-/estimate of the intersection point (and between 1/8 and 3/8
|
|
530
|
-
of the authalic earth perimeter).
|
|
530
|
+
of the C{authalic} earth perimeter).
|
|
531
531
|
|
|
532
532
|
@see: I{Karney's} U{intersect.cpp<https://SourceForge.net/p/geographiclib/
|
|
533
533
|
discussion/1026621/thread/21aaff9f/>}, U{The B{ellipsoidal} case<https://
|
|
@@ -659,7 +659,7 @@ class LatLonEllipsoidalBase(LatLonBase):
|
|
|
659
659
|
|
|
660
660
|
@arg point1: Start point (C{LatLon}).
|
|
661
661
|
@arg point2: End point (C{LatLon}).
|
|
662
|
-
@kwarg within: If C{True} return the closest point I{between}
|
|
662
|
+
@kwarg within: If C{True}, return the closest point I{between}
|
|
663
663
|
B{C{point1}} and B{C{point2}}, otherwise the
|
|
664
664
|
closest point elsewhere on the geodesic (C{bool}).
|
|
665
665
|
@kwarg height: Optional height for the closest point (C{meter},
|
|
@@ -714,8 +714,8 @@ class LatLonEllipsoidalBase(LatLonBase):
|
|
|
714
714
|
I{without conversion}.
|
|
715
715
|
@kwarg epoch: Optional datum (L{Epoch}), overriding this epoch
|
|
716
716
|
I{without conversion}.
|
|
717
|
-
@kwarg reframe: Optional
|
|
718
|
-
reframe I{without conversion}.
|
|
717
|
+
@kwarg reframe: Optional reference frame (L{RefFrame}), overriding
|
|
718
|
+
this reframe I{without conversion}.
|
|
719
719
|
@kwarg sep: Optional separator (C{str}).
|
|
720
720
|
@kwarg wrap: If C{True}, wrap or I{normalize} the lat- and
|
|
721
721
|
longitude (C{bool}).
|
|
@@ -726,7 +726,8 @@ class LatLonEllipsoidalBase(LatLonBase):
|
|
|
726
726
|
@raise ParseError: Invalid B{C{strllh}}.
|
|
727
727
|
'''
|
|
728
728
|
a, b, h = _MODS.dms.parse3llh(strllh, height=height, sep=sep, wrap=wrap)
|
|
729
|
-
r = self.classof(a, b, height=h, datum=self.datum
|
|
729
|
+
r = self.classof(a, b, height=h, datum=self.datum, epoch=self.epoch,
|
|
730
|
+
reframe=self.reframe)
|
|
730
731
|
if datum not in (None, self.datum):
|
|
731
732
|
r.datum = datum
|
|
732
733
|
if epoch not in (None, self.epoch):
|
|
@@ -865,7 +866,7 @@ class LatLonEllipsoidalBase(LatLonBase):
|
|
|
865
866
|
def toOsgr(self, kTM=False, **toOsgr_kwds):
|
|
866
867
|
'''Convert this C{LatLon} point to an OSGR coordinate.
|
|
867
868
|
|
|
868
|
-
@kwarg kTM: If C{True} use I{Karney}'s Krüger method from module
|
|
869
|
+
@kwarg kTM: If C{True}, use I{Karney}'s Krüger method from module
|
|
869
870
|
L{ktm}, otherwise I{Ordinance Survery}'s recommended
|
|
870
871
|
formulation (C{bool}).
|
|
871
872
|
@kwarg toOsgr_kwds: Optional L{pygeodesy.toOsgr} keyword arguments.
|
|
@@ -1008,13 +1009,15 @@ class LatLonEllipsoidalBase(LatLonBase):
|
|
|
1008
1009
|
|
|
1009
1010
|
@arg bearing1: Bearing at this point (compass C{degrees360}).
|
|
1010
1011
|
@arg other: Start point of the other line (C{LatLon}).
|
|
1011
|
-
@arg bearing2: Bearing at the other point (compass C{degrees360}).
|
|
1012
|
+
@arg bearing2: Bearing at the B{C{other}} point (compass C{degrees360}).
|
|
1012
1013
|
@kwarg height_wrap_tol: Optional keyword arguments C{B{height}=None},
|
|
1013
|
-
C{B{wrap}=False} and C{B{tol}}, see method L{intersection3
|
|
1014
|
+
C{B{wrap}=False} and C{B{tol}}, see method L{intersection3
|
|
1015
|
+
<pygeodesy.ellipsoidalBase.LatLonEllipsoidalBase>}.
|
|
1014
1016
|
|
|
1015
1017
|
@return: Triangulated point (C{LatLon}).
|
|
1016
1018
|
|
|
1017
|
-
@see: Method L{intersection3}
|
|
1019
|
+
@see: Method L{intersection3<pygeodesy.ellipsoidalBase.LatLonEllipsoidalBase>}
|
|
1020
|
+
for further details.
|
|
1018
1021
|
'''
|
|
1019
1022
|
if _isDegrees(bearing1) and _isDegrees(bearing2):
|
|
1020
1023
|
r = self.intersection3(bearing1, other, bearing2, **height_wrap_tol)
|
|
@@ -1034,13 +1037,13 @@ class LatLonEllipsoidalBase(LatLonBase):
|
|
|
1034
1037
|
@arg point3: Third center point (C{LatLon}).
|
|
1035
1038
|
@arg distance3: Distance to point3 (C{meter}, same units as
|
|
1036
1039
|
B{C{eps}}).
|
|
1037
|
-
@kwarg area: If C{True} compute the area overlap, otherwise the
|
|
1040
|
+
@kwarg area: If C{True}, compute the area overlap, otherwise the
|
|
1038
1041
|
perimeter intersection of the circles (C{bool}).
|
|
1039
1042
|
@kwarg eps: The required I{minimal overlap} for C{B{area}=True}
|
|
1040
1043
|
or the I{intersection margin} for C{B{area}=False}
|
|
1041
1044
|
(C{meter}, conventionally).
|
|
1042
|
-
@kwarg wrap: If C{True}, wrap or I{normalize} and unroll
|
|
1043
|
-
|
|
1045
|
+
@kwarg wrap: If C{True}, wrap or I{normalize} and unroll B{C{point2}}
|
|
1046
|
+
and B{C{point3}} (C{bool}).
|
|
1044
1047
|
|
|
1045
1048
|
@return: A L{Trilaterate5Tuple}C{(min, minPoint, max, maxPoint, n)}
|
|
1046
1049
|
with C{min} and C{max} in C{meter}, same units as B{C{eps}},
|
|
@@ -1049,7 +1052,7 @@ class LatLonEllipsoidalBase(LatLonBase):
|
|
|
1049
1052
|
of trilatered points found for the given B{C{eps}}.
|
|
1050
1053
|
|
|
1051
1054
|
If only a single trilaterated point is found, C{min I{is}
|
|
1052
|
-
max}, C{minPoint I{is} maxPoint} and C{n
|
|
1055
|
+
max}, C{minPoint I{is} maxPoint} and C{n=1}.
|
|
1053
1056
|
|
|
1054
1057
|
For C{B{area}=True}, C{min} and C{max} are the smallest
|
|
1055
1058
|
respectively largest I{radial} overlap found.
|
pygeodesy/ellipsoidalExact.py
CHANGED
|
@@ -24,7 +24,7 @@ from pygeodesy.points import _areaError, ispolar # PYCHOK exported
|
|
|
24
24
|
# from math import fabs # from .karney
|
|
25
25
|
|
|
26
26
|
__all__ = _ALL_LAZY.ellipsoidalExact
|
|
27
|
-
__version__ = '24.
|
|
27
|
+
__version__ = '24.08.13'
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class Cartesian(CartesianEllipsoidalBase):
|
|
@@ -252,7 +252,7 @@ def nearestOn(point, point1, point2, within=True, height=None, wrap=False,
|
|
|
252
252
|
@arg point: Reference point (C{LatLon}).
|
|
253
253
|
@arg point1: Start point of the geodesic (C{LatLon}).
|
|
254
254
|
@arg point2: End point of the geodesic (C{LatLon}).
|
|
255
|
-
@kwarg within: If C{True} return the closest point I{between}
|
|
255
|
+
@kwarg within: If C{True}, return the closest point I{between}
|
|
256
256
|
B{C{point1}} and B{C{point2}}, otherwise the
|
|
257
257
|
closest point elsewhere on the geodesic (C{bool}).
|
|
258
258
|
@kwarg height: Optional height for the closest point (C{meter},
|
|
@@ -24,7 +24,7 @@ from pygeodesy.points import _areaError, ispolar # PYCHOK exported
|
|
|
24
24
|
# from math import fabs # from .karney
|
|
25
25
|
|
|
26
26
|
__all__ = _ALL_LAZY.ellipsoidalGeodSolve
|
|
27
|
-
__version__ = '24.
|
|
27
|
+
__version__ = '24.08.13'
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class Cartesian(CartesianEllipsoidalBase):
|
|
@@ -244,7 +244,7 @@ def nearestOn(point, point1, point2, within=True, height=None, wrap=False,
|
|
|
244
244
|
@arg point: Reference point (C{LatLon}).
|
|
245
245
|
@arg point1: Start point of the geodesic (C{LatLon}).
|
|
246
246
|
@arg point2: End point of the geodesic (C{LatLon}).
|
|
247
|
-
@kwarg within: If C{True} return the closest point I{between}
|
|
247
|
+
@kwarg within: If C{True}, return the closest point I{between}
|
|
248
248
|
B{C{point1}} and B{C{point2}}, otherwise the
|
|
249
249
|
closest point elsewhere on the geodesic (C{bool}).
|
|
250
250
|
@kwarg height: Optional height for the closest point (C{meter},
|
pygeodesy/ellipsoidalKarney.py
CHANGED
|
@@ -42,7 +42,7 @@ from pygeodesy.props import deprecated_method, Property_RO
|
|
|
42
42
|
# from math import fabs # from .karney
|
|
43
43
|
|
|
44
44
|
__all__ = _ALL_LAZY.ellipsoidalKarney
|
|
45
|
-
__version__ = '24.
|
|
45
|
+
__version__ = '24.08.13'
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
class Cartesian(CartesianEllipsoidalBase):
|
|
@@ -279,7 +279,7 @@ def nearestOn(point, point1, point2, within=True, height=None, wrap=False,
|
|
|
279
279
|
@arg point: Reference point (C{LatLon}).
|
|
280
280
|
@arg point1: Start point of the geodesic (C{LatLon}).
|
|
281
281
|
@arg point2: End point of the geodesic (C{LatLon}).
|
|
282
|
-
@kwarg within: If C{True} return the closest point I{between}
|
|
282
|
+
@kwarg within: If C{True}, return the closest point I{between}
|
|
283
283
|
B{C{point1}} and B{C{point2}}, otherwise the
|
|
284
284
|
closest point elsewhere on the geodesic (C{bool}).
|
|
285
285
|
@kwarg height: Optional height for the closest point (C{meter},
|
pygeodesy/ellipsoidalNvector.py
CHANGED
|
@@ -48,7 +48,7 @@ from pygeodesy.units import Bearing, Distance, Height, Scalar
|
|
|
48
48
|
# from math import fabs # from .nvectorBase
|
|
49
49
|
|
|
50
50
|
__all__ = _ALL_LAZY.ellipsoidalNvector
|
|
51
|
-
__version__ = '24.
|
|
51
|
+
__version__ = '24.08.13'
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
class Ned(_Ned):
|
|
@@ -555,7 +555,7 @@ def nearestOn(point, point1, point2, within=True, height=None, wrap=False,
|
|
|
555
555
|
@arg point: Reference point (C{LatLon}).
|
|
556
556
|
@arg point1: Start point of the geodesic (C{LatLon}).
|
|
557
557
|
@arg point2: End point of the geodesic (C{LatLon}).
|
|
558
|
-
@kwarg within: If C{True} return the closest point I{between}
|
|
558
|
+
@kwarg within: If C{True}, return the closest point I{between}
|
|
559
559
|
B{C{point1}} and B{C{point2}}, otherwise the
|
|
560
560
|
closest point elsewhere on the geodesic (C{bool}).
|
|
561
561
|
@kwarg height: Optional height for the closest point (C{meter},
|
pygeodesy/ellipsoidalVincenty.py
CHANGED
|
@@ -59,7 +59,7 @@ from pygeodesy.errors import _and, _ValueError, _xkwds
|
|
|
59
59
|
from pygeodesy.fmath import Fpolynomial, hypot, hypot1
|
|
60
60
|
from pygeodesy.interns import _ambiguous_, _antipodal_, _COLONSPACE_, \
|
|
61
61
|
_to_, _SPACE_, _limit_ # PYCHOK used!
|
|
62
|
-
from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS
|
|
62
|
+
from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS
|
|
63
63
|
from pygeodesy.namedTuples import Destination2Tuple, Destination3Tuple, \
|
|
64
64
|
Distance3Tuple
|
|
65
65
|
from pygeodesy.points import Fmt, ispolar # PYCHOK exported
|
|
@@ -72,7 +72,7 @@ from pygeodesy.utily import atan2b, atan2d, sincos2, sincos2d, unroll180, wrap18
|
|
|
72
72
|
from math import atan2, cos, degrees, fabs, radians, tan
|
|
73
73
|
|
|
74
74
|
__all__ = _ALL_LAZY.ellipsoidalVincenty
|
|
75
|
-
__version__ = '24.
|
|
75
|
+
__version__ = '24.08.13'
|
|
76
76
|
|
|
77
77
|
_antipodal_to_ = _SPACE_(_antipodal_, _to_)
|
|
78
78
|
|
|
@@ -510,7 +510,7 @@ def nearestOn(point, point1, point2, within=True, height=None, wrap=False,
|
|
|
510
510
|
@arg point: Reference point (C{LatLon}).
|
|
511
511
|
@arg point1: Start point of the geodesic (C{LatLon}).
|
|
512
512
|
@arg point2: End point of the geodesic (C{LatLon}).
|
|
513
|
-
@kwarg within: If C{True} return the closest point I{between}
|
|
513
|
+
@kwarg within: If C{True}, return the closest point I{between}
|
|
514
514
|
B{C{point1}} and B{C{point2}}, otherwise the
|
|
515
515
|
closest point elsewhere on the geodesic (C{bool}).
|
|
516
516
|
@kwarg height: Optional height for the closest point (C{meter},
|
|
@@ -560,9 +560,10 @@ def perimeterOf(points, **closed_datum_wrap):
|
|
|
560
560
|
return _MODS.ellipsoidalExact.perimeterOf(points, **closed_datum_wrap)
|
|
561
561
|
|
|
562
562
|
|
|
563
|
-
__all__ +=
|
|
564
|
-
|
|
565
|
-
|
|
563
|
+
__all__ += _ALL_DOCS(Cartesian, LatLon, intersecant2, # from .ellipsoidalBaseDI
|
|
564
|
+
intersection3, intersections2, ispolar, # from .points
|
|
565
|
+
nearestOn,
|
|
566
|
+
areaOf, perimeterOf) # DEPRECATED
|
|
566
567
|
|
|
567
568
|
# **) MIT License
|
|
568
569
|
#
|