pygeodesy 24.8.4__py2.py3-none-any.whl → 24.8.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.8.4.dist-info → PyGeodesy-24.8.24.dist-info}/METADATA +16 -15
- {PyGeodesy-24.8.4.dist-info → PyGeodesy-24.8.24.dist-info}/RECORD +50 -50
- {PyGeodesy-24.8.4.dist-info → PyGeodesy-24.8.24.dist-info}/WHEEL +1 -1
- pygeodesy/__init__.py +23 -23
- pygeodesy/auxilats/auxDST.py +2 -2
- pygeodesy/basics.py +3 -3
- pygeodesy/cartesianBase.py +5 -5
- pygeodesy/constants.py +11 -11
- 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/epsg.py +3 -3
- pygeodesy/fmath.py +2 -1
- pygeodesy/fsums.py +4 -4
- pygeodesy/gars.py +9 -8
- pygeodesy/geodesicx/gx.py +3 -3
- pygeodesy/geodesicx/gxarea.py +3 -3
- pygeodesy/geodsolve.py +3 -3
- pygeodesy/geohash.py +18 -11
- pygeodesy/geoids.py +293 -315
- pygeodesy/heights.py +150 -158
- pygeodesy/internals.py +21 -1
- pygeodesy/interns.py +2 -3
- pygeodesy/latlonBase.py +13 -7
- pygeodesy/lazily.py +6 -6
- pygeodesy/ltp.py +5 -6
- pygeodesy/ltpTuples.py +7 -1
- pygeodesy/named.py +5 -4
- pygeodesy/namedTuples.py +14 -1
- pygeodesy/osgr.py +7 -7
- pygeodesy/points.py +2 -2
- pygeodesy/resections.py +7 -7
- 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 → PyGeodesy-24.8.24.dist-info}/top_level.txt +0 -0
pygeodesy/lazily.py
CHANGED
|
@@ -395,10 +395,10 @@ _ALL_LAZY = _NamedEnum_RO(_name='_ALL_LAZY',
|
|
|
395
395
|
utmups=_i('UtmUps', 'UTMUPSError', 'parseUTMUPS5', 'toUtmUps8',
|
|
396
396
|
'utmupsValidate', 'utmupsValidateOK', 'utmupsZoneBand5'),
|
|
397
397
|
utmupsBase=_i(), # module only
|
|
398
|
-
vector2d=_i('Circin6Tuple', 'Circum3Tuple', 'Circum4Tuple', 'Meeus2Tuple', 'Radii11Tuple', 'Soddy4Tuple',
|
|
399
|
-
'circin6', 'circum3', 'circum4_', 'meeus2', 'radii11', 'soddy4'),
|
|
398
|
+
vector2d=_i('Circin6Tuple', 'Circum3Tuple', 'Circum4Tuple', 'Meeus2Tuple', 'Radii11Tuple', 'Soddy4Tuple', 'Triaxum5Tuple',
|
|
399
|
+
'circin6', 'circum3', 'circum4', 'circum4_', 'meeus2', 'radii11', 'soddy4', 'triaxum5', 'trilaterate2d2'),
|
|
400
400
|
vector3d=_i('Vector3d', 'intersection3d3', 'iscolinearWith', 'nearestOn', 'nearestOn6', 'parse3d',
|
|
401
|
-
'
|
|
401
|
+
'trilaterate3d2'),
|
|
402
402
|
vector3dBase=_i(), # module only
|
|
403
403
|
webmercator=_i('Wm', 'WebMercatorError', 'parseWM', 'toWm', 'EasNorRadius3Tuple'),
|
|
404
404
|
wgrs=_i('Georef', 'WGRSError'),)
|
|
@@ -416,8 +416,8 @@ _ALL_DEPRECATED = _NamedEnum_RO(_name='_ALL_DEPRECATED',
|
|
|
416
416
|
deprecated_datum=_i('Curvature2Tuple', 'Datum', 'Ellipsoid', 'Transform', # assert
|
|
417
417
|
'Datums', 'Ellipsoids', 'Transforms',
|
|
418
418
|
'R_FM', 'R_KM', 'R_M', 'R_MA', 'R_MB', 'R_NM', 'R_SM', 'R_VM'),
|
|
419
|
-
deprecated_functions=_i('anStr', 'areaof', 'atand', 'bounds', # most of the DEPRECATED functions, except ...
|
|
420
|
-
'clipCS3', 'clipDMS', 'clipStr', 'collins', 'copysign', # ...
|
|
419
|
+
deprecated_functions=_i('anStr', 'areaof', 'atand', 'bounds', # most of the DEPRECATED functions, except ellipsoidal ...
|
|
420
|
+
'clipCS3', 'clipDMS', 'clipStr', 'collins', 'copysign', # ... and spherical flavors
|
|
421
421
|
'decodeEPSG2', 'encodeEPSG', 'enStr2', 'equirectangular_', 'equirectangular3',
|
|
422
422
|
'excessAbc', 'excessGirard', 'excessLHuilier',
|
|
423
423
|
'false2f', 'falsed2f', 'float0', 'fStr', 'fStrzs', 'hypot3',
|
|
@@ -521,7 +521,7 @@ class _ALL_MODS(_internals._MODS_Base):
|
|
|
521
521
|
_internals._MODS = _ALL_MODS = _ALL_MODS() # PYCHOK singleton
|
|
522
522
|
|
|
523
523
|
__all__ = _ALL_LAZY.lazily
|
|
524
|
-
__version__ = '24.08.
|
|
524
|
+
__version__ = '24.08.18'
|
|
525
525
|
|
|
526
526
|
|
|
527
527
|
def _ALL_OTHER(*objs):
|
pygeodesy/ltp.py
CHANGED
|
@@ -44,7 +44,7 @@ from pygeodesy.vector3d import _ALL_LAZY, Vector3d
|
|
|
44
44
|
# from math import fabs, floor as _floor # from .fmath, .fsums
|
|
45
45
|
|
|
46
46
|
__all__ = _ALL_LAZY.ltp
|
|
47
|
-
__version__ = '24.
|
|
47
|
+
__version__ = '24.08.18'
|
|
48
48
|
|
|
49
49
|
_height0_ = _height_ + _0_
|
|
50
50
|
_narrow_ = 'narrow'
|
|
@@ -165,7 +165,7 @@ class Attitude(_NamedBase):
|
|
|
165
165
|
'''
|
|
166
166
|
try:
|
|
167
167
|
try:
|
|
168
|
-
xyz = map2(float, x_xyz.
|
|
168
|
+
xyz = map2(float, x_xyz.xyz3)
|
|
169
169
|
except AttributeError:
|
|
170
170
|
xyz = map1(float, x_xyz, y, z)
|
|
171
171
|
except (TypeError, ValueError) as x:
|
|
@@ -876,7 +876,7 @@ class ChLV(_ChLV, Ltp):
|
|
|
876
876
|
|
|
877
877
|
@arg Y: Unfalsed I{Swiss Y} easting (C{meter}).
|
|
878
878
|
@arg X: Unfalsed I{Swiss X} northing (C{meter}).
|
|
879
|
-
@kwarg LV95: If C{True} add C{LV95} falsing, if C{False} add
|
|
879
|
+
@kwarg LV95: If C{True}, add C{LV95} falsing, if C{False} add
|
|
880
880
|
C{LV03} falsing, otherwise leave unfalsed.
|
|
881
881
|
@kwarg name: Optional C{B{name}=NN} (C{str}).
|
|
882
882
|
|
|
@@ -928,9 +928,8 @@ class ChLV(_ChLV, Ltp):
|
|
|
928
928
|
|
|
929
929
|
@arg e: Falsed I{Swiss E_LV95} or I{y_LV03} easting (C{meter}).
|
|
930
930
|
@arg n: Falsed I{Swiss N_LV95} or I{x_LV03} northing (C{meter}).
|
|
931
|
-
@kwarg LV95: If C{True} remove I{LV95} falsing, if C{False} remove
|
|
932
|
-
I{LV03} falsing, otherwise use method C{isLV95(B{e},
|
|
933
|
-
B{n})}.
|
|
931
|
+
@kwarg LV95: If C{True}, remove I{LV95} falsing, if C{False} remove
|
|
932
|
+
I{LV03} falsing, otherwise use method C{isLV95(B{e}, B{n})}.
|
|
934
933
|
@kwarg name: Optional C{B{name}=NN} (C{str}).
|
|
935
934
|
|
|
936
935
|
@return: A L{ChLVYX2Tuple}C{(Y, X)} with the unfalsed B{C{e}}
|
pygeodesy/ltpTuples.py
CHANGED
|
@@ -36,7 +36,7 @@ from pygeodesy.vector3d import Vector3d
|
|
|
36
36
|
# from math import cos, radians # from .utily
|
|
37
37
|
|
|
38
38
|
__all__ = _ALL_LAZY.ltpTuples
|
|
39
|
-
__version__ = '24.
|
|
39
|
+
__version__ = '24.08.18'
|
|
40
40
|
|
|
41
41
|
_aer_ = 'aer'
|
|
42
42
|
_alt_ = 'alt'
|
|
@@ -189,6 +189,12 @@ class _AbcBase(_NamedBase):
|
|
|
189
189
|
'''
|
|
190
190
|
return Vector3Tuple(self.x, self.y, self.z, name=self.name) # like Ecef9Tuple.xyz, Local6tuple.xyz
|
|
191
191
|
|
|
192
|
+
@property_RO
|
|
193
|
+
def xyz3(self):
|
|
194
|
+
'''Get the I{local} C{(X, Y, Z)} coordinates as C{3-tuple}.
|
|
195
|
+
'''
|
|
196
|
+
return tuple(self.xyz)
|
|
197
|
+
|
|
192
198
|
@property_RO
|
|
193
199
|
def xyz4(self): # PYCHOK no cover
|
|
194
200
|
'''I{Must be overloaded}.'''
|
pygeodesy/named.py
CHANGED
|
@@ -34,7 +34,7 @@ from pygeodesy.streprs import attrs, Fmt, lrstrip, pairs, reprs, unstr
|
|
|
34
34
|
# from pygeodesy.units import _toUnit # _MODS
|
|
35
35
|
|
|
36
36
|
__all__ = _ALL_LAZY.named
|
|
37
|
-
__version__ = '24.
|
|
37
|
+
__version__ = '24.08.13'
|
|
38
38
|
|
|
39
39
|
_COMMANL_ = _COMMA_ + _NL_
|
|
40
40
|
_COMMASPACEDOT_ = _COMMASPACE_ + _DOT_
|
|
@@ -214,8 +214,8 @@ class _Named(object):
|
|
|
214
214
|
def copy(self, deep=False, **name):
|
|
215
215
|
'''Make a shallow or deep copy of this instance.
|
|
216
216
|
|
|
217
|
-
@kwarg deep: If C{True} make a deep, otherwise
|
|
218
|
-
|
|
217
|
+
@kwarg deep: If C{True}, make a deep, otherwise a shallow
|
|
218
|
+
copy (C{bool}).
|
|
219
219
|
@kwarg name: Optional, non-empty C{B{name}=NN} (C{str}).
|
|
220
220
|
|
|
221
221
|
@return: The copy (C{This class}).
|
|
@@ -233,7 +233,8 @@ class _Named(object):
|
|
|
233
233
|
def dup(self, deep=False, **items):
|
|
234
234
|
'''Duplicate this instance, replacing some attributes.
|
|
235
235
|
|
|
236
|
-
@kwarg deep: If C{True} duplicate deep, otherwise shallow
|
|
236
|
+
@kwarg deep: If C{True}, duplicate deep, otherwise shallow
|
|
237
|
+
(C{bool}).
|
|
237
238
|
@kwarg items: Attributes to be changed (C{any}), including
|
|
238
239
|
optional C{B{name}} (C{str}).
|
|
239
240
|
|
pygeodesy/namedTuples.py
CHANGED
|
@@ -28,7 +28,7 @@ from pygeodesy.units import Band, Bearing, Degrees, Degrees2, Easting, FIx, \
|
|
|
28
28
|
Radius, Scalar, Str, INT0
|
|
29
29
|
|
|
30
30
|
__all__ = _ALL_LAZY.namedTuples
|
|
31
|
-
__version__ = '24.
|
|
31
|
+
__version__ = '24.08.18'
|
|
32
32
|
|
|
33
33
|
# __DUNDER gets mangled in class
|
|
34
34
|
_closest_ = 'closest'
|
|
@@ -676,6 +676,12 @@ class Vector3Tuple(_NamedTuple):
|
|
|
676
676
|
'''
|
|
677
677
|
return self
|
|
678
678
|
|
|
679
|
+
@property_RO
|
|
680
|
+
def xyz3(self):
|
|
681
|
+
'''Get X, Y and Z components as C{3-tuple}.
|
|
682
|
+
'''
|
|
683
|
+
return tuple(self)
|
|
684
|
+
|
|
679
685
|
|
|
680
686
|
class Vector4Tuple(_NamedTuple): # .nvector.py
|
|
681
687
|
'''4-Tuple C{(x, y, z, h)} of (geocentric) components, all
|
|
@@ -697,6 +703,13 @@ class Vector4Tuple(_NamedTuple): # .nvector.py
|
|
|
697
703
|
'''
|
|
698
704
|
return Vector3Tuple(*self[:3])
|
|
699
705
|
|
|
706
|
+
@property_RO
|
|
707
|
+
def xyz3(self):
|
|
708
|
+
'''Get X, Y and Z components as C{3-tuple}.
|
|
709
|
+
'''
|
|
710
|
+
return tuple(self[:3])
|
|
711
|
+
|
|
712
|
+
|
|
700
713
|
# **) MIT License
|
|
701
714
|
#
|
|
702
715
|
# Copyright (C) 2016-2024 -- mrJean1 at Gmail -- All Rights Reserved.
|
pygeodesy/osgr.py
CHANGED
|
@@ -53,7 +53,7 @@ from pygeodesy.utily import degrees90, degrees180, sincostan3, truncate
|
|
|
53
53
|
from math import cos, fabs, radians, sin, sqrt
|
|
54
54
|
|
|
55
55
|
__all__ = _ALL_LAZY.osgr
|
|
56
|
-
__version__ = '24.
|
|
56
|
+
__version__ = '24.08.13'
|
|
57
57
|
|
|
58
58
|
_equivalent_ = 'equivalent'
|
|
59
59
|
_OSGR_ = 'OSGR'
|
|
@@ -289,9 +289,9 @@ class Osgr(_NamedBase):
|
|
|
289
289
|
@kwarg datum: Optional datum to convert to (L{Datum},
|
|
290
290
|
L{Ellipsoid}, L{Ellipsoid2}, L{Ellipsoid2}
|
|
291
291
|
or L{a_f2Tuple}).
|
|
292
|
-
@kwarg kTM: If C{True} use I{Karney}'s Krüger method from
|
|
293
|
-
module L{ktm}, otherwise use the Ordnance
|
|
294
|
-
|
|
292
|
+
@kwarg kTM: If C{True}, use I{Karney}'s Krüger method from
|
|
293
|
+
module L{ktm}, otherwise use the Ordnance Survey
|
|
294
|
+
formulation (C{bool}).
|
|
295
295
|
@kwarg eps: Tolerance for OS convergence (C{meter}).
|
|
296
296
|
@kwarg LatLon_kwds: Optional, additional B{C{LatLon}} keyword
|
|
297
297
|
arguments, ignored if C{B{LatLon} is None}.
|
|
@@ -585,9 +585,9 @@ def toOsgr(latlon, lon=None, kTM=False, datum=_WGS84, Osgr=Osgr, # MCCABE 14
|
|
|
585
585
|
@arg latlon: Latitude (C{degrees}) or an (ellipsoidal) geodetic
|
|
586
586
|
C{LatLon} point.
|
|
587
587
|
@kwarg lon: Optional longitude in degrees (scalar or C{None}).
|
|
588
|
-
@kwarg kTM: If C{True} use I{Karney}'s Krüger method from
|
|
589
|
-
module L{ktm}, otherwise use the Ordnance
|
|
590
|
-
|
|
588
|
+
@kwarg kTM: If C{True}, use I{Karney}'s Krüger method from
|
|
589
|
+
module L{ktm}, otherwise use the Ordnance Survey
|
|
590
|
+
formulation (C{bool}).
|
|
591
591
|
@kwarg datum: Optional datum to convert B{C{lat, lon}} from
|
|
592
592
|
(L{Datum}, L{Ellipsoid}, L{Ellipsoid2} or
|
|
593
593
|
L{a_f2Tuple}).
|
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.
|
|
65
|
+
__version__ = '24.08.13'
|
|
66
66
|
|
|
67
67
|
_ilat_ = 'ilat'
|
|
68
68
|
_ilon_ = 'ilon'
|
|
@@ -217,7 +217,7 @@ class _Basequence(_Sequence): # immutable, on purpose
|
|
|
217
217
|
def copy(self, deep=False): # PYCHOK no cover
|
|
218
218
|
'''Make a shallow or deep copy of this instance.
|
|
219
219
|
|
|
220
|
-
@kwarg deep: If C{True} make a deep, otherwise a
|
|
220
|
+
@kwarg deep: If C{True}, make a deep, otherwise a
|
|
221
221
|
shallow copy (C{bool}).
|
|
222
222
|
|
|
223
223
|
@return: The copy (C{This class}).
|
pygeodesy/resections.py
CHANGED
|
@@ -34,7 +34,7 @@ from pygeodesy.vector3d import _otherV3d, Vector3d
|
|
|
34
34
|
from math import cos, atan2, degrees, fabs, radians, sin, sqrt
|
|
35
35
|
|
|
36
36
|
__all__ = _ALL_LAZY.resections
|
|
37
|
-
__version__ = '24.
|
|
37
|
+
__version__ = '24.08.18'
|
|
38
38
|
|
|
39
39
|
_concyclic_ = 'concyclic'
|
|
40
40
|
_PA_ = 'PA'
|
|
@@ -356,8 +356,8 @@ def pierlot(point1, point2, point3, alpha12, alpha23, useZ=False, eps=EPS,
|
|
|
356
356
|
def _pierlot3(B1, B2, B3, a12, a23, useZ, cot):
|
|
357
357
|
'''(INTERNAL) Shared L{pierlot} and L{pierlotx}.
|
|
358
358
|
'''
|
|
359
|
-
x1_, y1_, _ = B1.minus(B2).
|
|
360
|
-
x3_, y3_, _ = B3.minus(B2).
|
|
359
|
+
x1_, y1_, _ = B1.minus(B2).xyz3
|
|
360
|
+
x3_, y3_, _ = B3.minus(B2).xyz3
|
|
361
361
|
|
|
362
362
|
s12, c12, s23, c23 = sincos2d_(a12, a23)
|
|
363
363
|
# cot31 = (1 - cot12 * cot23) / (cot12 + cot32)
|
|
@@ -402,7 +402,7 @@ def _pierlot3(B1, B2, B3, a12, a23, useZ, cot):
|
|
|
402
402
|
x, y = _pierlotxy2(B2, -K, Y12_23, X12_23, (X31_23 * Y12_23 -
|
|
403
403
|
X12_23 * Y31_23))
|
|
404
404
|
else:
|
|
405
|
-
x, y, _ = B2.
|
|
405
|
+
x, y, _ = B2.xyz3
|
|
406
406
|
return x, y, _zidw(x, y, useZ, B1, B2, B3)
|
|
407
407
|
|
|
408
408
|
|
|
@@ -484,8 +484,8 @@ def _pierlotx3(a_z_Bs, useZ, cot, Cs):
|
|
|
484
484
|
Cs(4)
|
|
485
485
|
return _pierlot3(B1, B2, B3, a12, a23, useZ, cot)
|
|
486
486
|
|
|
487
|
-
x1_, y1_, _ = B1.minus(B3).
|
|
488
|
-
x2_, y2_, _ = B2.minus(B3).
|
|
487
|
+
x1_, y1_, _ = B1.minus(B3).xyz3
|
|
488
|
+
x2_, y2_, _ = B2.minus(B3).xyz3
|
|
489
489
|
|
|
490
490
|
K = _Fsumf_(y1_ * x2_, -x1_ * y2_)
|
|
491
491
|
if K:
|
|
@@ -508,7 +508,7 @@ def _pierlotx3(a_z_Bs, useZ, cot, Cs):
|
|
|
508
508
|
x, y = _pierlotxy2(B3, K, Y31_23, X31_23, (X31_23 * _Fsumf_(x2_, -x1_) +
|
|
509
509
|
Y31_23 * _Fsumf_(y2_, -y1_)))
|
|
510
510
|
else:
|
|
511
|
-
x, y, _ = B3.
|
|
511
|
+
x, y, _ = B3.xyz3
|
|
512
512
|
return x, y, _zidw(x, y, useZ, B1, B2, B3)
|
|
513
513
|
|
|
514
514
|
|
pygeodesy/rhumb/solve.py
CHANGED
|
@@ -21,7 +21,7 @@ from pygeodesy.solveBase import _SolveGDictBase, _SolveGDictLineBase
|
|
|
21
21
|
from pygeodesy.utily import _unrollon, _Wrap, wrap360
|
|
22
22
|
|
|
23
23
|
__all__ = _ALL_LAZY.rhumb_solve
|
|
24
|
-
__version__ = '24.
|
|
24
|
+
__version__ = '24.08.13'
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
class _RhumbSolveBase(_SolveGDictBase):
|
|
@@ -94,8 +94,8 @@ class RhumbSolve(_RhumbSolveBase):
|
|
|
94
94
|
# '''Set up a L{RhumbArea} to compute area and
|
|
95
95
|
# perimeter of a polygon.
|
|
96
96
|
#
|
|
97
|
-
# @kwarg polyline: If C{True} perimeter only,
|
|
98
|
-
#
|
|
97
|
+
# @kwarg polyline: If C{True}, compute the perimeter only,
|
|
98
|
+
# otherwise perimeter and area (C{bool}).
|
|
99
99
|
# @kwarg name: Optional C{B{name}=NN} (C{str}).
|
|
100
100
|
#
|
|
101
101
|
# @return: A L{RhumbArea} instance.
|
pygeodesy/simplify.py
CHANGED
|
@@ -86,7 +86,7 @@ from pygeodesy.units import _ALL_LAZY, _1mm, Radius_
|
|
|
86
86
|
from math import degrees, fabs, radians
|
|
87
87
|
|
|
88
88
|
__all__ = _ALL_LAZY.simplify
|
|
89
|
-
__version__ = '24.
|
|
89
|
+
__version__ = '24.08.13'
|
|
90
90
|
|
|
91
91
|
|
|
92
92
|
# try:
|
|
@@ -383,7 +383,7 @@ def simplify1(points, distance=_1mm, radius=R_M, indices=False, **options):
|
|
|
383
383
|
@arg points: Path points (C{LatLon}[]).
|
|
384
384
|
@kwarg distance: Tolerance (C{meter}, same units as B{C{radius}}).
|
|
385
385
|
@kwarg radius: Mean earth radius (C{meter}).
|
|
386
|
-
@kwarg indices: If C{True} return the simplified point indices
|
|
386
|
+
@kwarg indices: If C{True}, return the simplified point indices
|
|
387
387
|
instead of the simplified points (C{bool}).
|
|
388
388
|
@kwarg options: Optional keyword arguments passed thru to
|
|
389
389
|
function L{pygeodesy.equirectangular4}.
|
|
@@ -426,9 +426,9 @@ def simplifyRDP(points, distance=_1mm, radius=R_M, shortest=False,
|
|
|
426
426
|
@arg points: Path points (C{LatLon}[]).
|
|
427
427
|
@kwarg distance: Tolerance (C{meter}, same units as B{C{radius}}).
|
|
428
428
|
@kwarg radius: Mean earth radius (C{meter}).
|
|
429
|
-
@kwarg shortest: If C{True} use the I{shortest} otherwise the
|
|
429
|
+
@kwarg shortest: If C{True}, use the I{shortest} otherwise the
|
|
430
430
|
I{perpendicular} distance (C{bool}).
|
|
431
|
-
@kwarg indices: If C{True} return the simplified point indices
|
|
431
|
+
@kwarg indices: If C{True}, return the simplified point indices
|
|
432
432
|
instead of the simplified points (C{bool}).
|
|
433
433
|
@kwarg options: Optional keyword arguments passed thru to
|
|
434
434
|
function L{pygeodesy.equirectangular4}.
|
|
@@ -460,9 +460,9 @@ def simplifyRDPm(points, distance=_1mm, radius=R_M, shortest=False,
|
|
|
460
460
|
@arg points: Path points (C{LatLon}[]).
|
|
461
461
|
@kwarg distance: Tolerance (C{meter}, same units as B{C{radius}}).
|
|
462
462
|
@kwarg radius: Mean earth radius (C{meter}).
|
|
463
|
-
@kwarg shortest: If C{True} use the I{shortest} otherwise the
|
|
463
|
+
@kwarg shortest: If C{True}, use the I{shortest} otherwise the
|
|
464
464
|
I{perpendicular} distance (C{bool}).
|
|
465
|
-
@kwarg indices: If C{True} return the simplified point indices
|
|
465
|
+
@kwarg indices: If C{True}, return the simplified point indices
|
|
466
466
|
instead of the simplified points (C{bool}).
|
|
467
467
|
@kwarg options: Optional keyword arguments passed thru to
|
|
468
468
|
function L{pygeodesy.equirectangular4}.
|
|
@@ -491,9 +491,9 @@ def simplifyRW(points, pipe=_1mm, radius=R_M, shortest=False,
|
|
|
491
491
|
@kwarg pipe: Pipe radius, half-width (C{meter}, same units as
|
|
492
492
|
B{C{radius}}).
|
|
493
493
|
@kwarg radius: Mean earth radius (C{meter}).
|
|
494
|
-
@kwarg shortest: If C{True} use the I{shortest} otherwise the
|
|
494
|
+
@kwarg shortest: If C{True}, use the I{shortest} otherwise the
|
|
495
495
|
I{perpendicular} distance (C{bool}).
|
|
496
|
-
@kwarg indices: If C{True} return the simplified point indices
|
|
496
|
+
@kwarg indices: If C{True}, return the simplified point indices
|
|
497
497
|
instead of the simplified points (C{bool}).
|
|
498
498
|
@kwarg options: Optional keyword arguments passed thru to
|
|
499
499
|
function L{pygeodesy.equirectangular4}.
|
|
@@ -544,7 +544,7 @@ def simplifyVW(points, area=_1mm, radius=R_M, attr=None,
|
|
|
544
544
|
@kwarg radius: Mean earth radius (C{meter}).
|
|
545
545
|
@kwarg attr: Optional, points attribute to save the area value
|
|
546
546
|
(C{str}).
|
|
547
|
-
@kwarg indices: If C{True} return the simplified point indices
|
|
547
|
+
@kwarg indices: If C{True}, return the simplified point indices
|
|
548
548
|
instead of the simplified points (C{bool}).
|
|
549
549
|
@kwarg options: Optional keyword arguments passed thru to
|
|
550
550
|
function L{pygeodesy.equirectangular4}.
|
|
@@ -600,7 +600,7 @@ def simplifyVWm(points, area=_1mm, radius=R_M, attr=None,
|
|
|
600
600
|
@kwarg radius: Mean earth radius (C{meter}).
|
|
601
601
|
@kwarg attr: Optional, points attribute to save the area value
|
|
602
602
|
(C{str}).
|
|
603
|
-
@kwarg indices: If C{True} return the simplified point indices
|
|
603
|
+
@kwarg indices: If C{True}, return the simplified point indices
|
|
604
604
|
instead of the simplified points (C{bool}).
|
|
605
605
|
@kwarg options: Optional keyword arguments passed thru to
|
|
606
606
|
function L{pygeodesy.equirectangular4}.
|
pygeodesy/sphericalBase.py
CHANGED
|
@@ -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.
|
|
43
|
+
__version__ = '24.08,13'
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
class CartesianSphericalBase(CartesianBase):
|
|
@@ -210,7 +210,7 @@ class LatLonSphericalBase(LatLonBase):
|
|
|
210
210
|
B{C{point}} I{of} the (great circle) line (compass
|
|
211
211
|
C{degrees}).
|
|
212
212
|
@kwarg radius: Mean earth radius (C{meter}, conventionally).
|
|
213
|
-
@kwarg exact: If C{True} use the I{exact} rhumb methods for azimuth,
|
|
213
|
+
@kwarg exact: If C{True}, use the I{exact} rhumb methods for azimuth,
|
|
214
214
|
destination and distance, if C{False} use the basic
|
|
215
215
|
rhumb methods (C{bool}) or if C{None} use the I{great
|
|
216
216
|
circle} methods.
|
|
@@ -474,7 +474,7 @@ class LatLonSphericalBase(LatLonBase):
|
|
|
474
474
|
@arg other: An other point (this I{on} C{LatLon}) or the azimuth I{of}
|
|
475
475
|
(compass C{degrees}) the rhumb line.
|
|
476
476
|
@kwarg radius: Mean earth radius (C{meter}, conventionally).
|
|
477
|
-
@kwarg exact: If C{True} use the I{exact} rhumb methods for azimuth,
|
|
477
|
+
@kwarg exact: If C{True}, use the I{exact} rhumb methods for azimuth,
|
|
478
478
|
destination and distance, if C{False} use the basic
|
|
479
479
|
rhumb methods (C{bool}) or if C{None} use the I{great
|
|
480
480
|
circle} methods.
|
|
@@ -54,7 +54,7 @@ from pygeodesy.vector3d import sumOf, Vector3d
|
|
|
54
54
|
from math import asin, atan2, cos, degrees, fabs, radians, sin
|
|
55
55
|
|
|
56
56
|
__all__ = _ALL_LAZY.sphericalTrigonometry
|
|
57
|
-
__version__ = '24.
|
|
57
|
+
__version__ = '24.08.13'
|
|
58
58
|
|
|
59
59
|
_PI_EPS4 = PI - EPS4
|
|
60
60
|
if _PI_EPS4 >= PI:
|
|
@@ -706,7 +706,7 @@ class LatLon(LatLonSphericalBase):
|
|
|
706
706
|
@arg distance2: Distance to point2 (C{meter}, same units as B{C{radius}}).
|
|
707
707
|
@arg point3: Third center point (C{LatLon}).
|
|
708
708
|
@arg distance3: Distance to point3 (C{meter}, same units as B{C{radius}}).
|
|
709
|
-
@kwarg area: If C{True} compute the area overlap, otherwise the perimeter
|
|
709
|
+
@kwarg area: If C{True}, compute the area overlap, otherwise the perimeter
|
|
710
710
|
intersection of the circles (C{bool}).
|
|
711
711
|
@kwarg eps: The required I{minimal overlap} for C{B{area}=True} or the
|
|
712
712
|
I{intersection margin} if C{B{area}=False} (C{meter}, same
|
pygeodesy/streprs.py
CHANGED
|
@@ -22,7 +22,7 @@ from pygeodesy.lazily import _ALL_LAZY, _ALL_MODS as _MODS, _dunder_nameof
|
|
|
22
22
|
from math import fabs, log10 as _log10
|
|
23
23
|
|
|
24
24
|
__all__ = _ALL_LAZY.streprs
|
|
25
|
-
__version__ = '24.
|
|
25
|
+
__version__ = '24.08.13'
|
|
26
26
|
|
|
27
27
|
_at_ = 'at' # PYCHOK used!
|
|
28
28
|
_EN_PREC = 6 # max MGRS/OSGR precision, 1 micrometer
|
|
@@ -310,8 +310,8 @@ def fstr(floats, prec=6, fmt=Fmt.F, ints=False, sep=_COMMASPACE_, strepr=None, f
|
|
|
310
310
|
@kwarg strepr: Optional callable to format non-C{floats} (typically
|
|
311
311
|
C{repr}, C{str}) or C{None} to raise a TypeError and used
|
|
312
312
|
only if C{B{force} is not True}.
|
|
313
|
-
@kwarg force: If C{True} format all B{C{floats}} using B{C{fmt}},
|
|
314
|
-
otherwise use B{C{strepr}} for non-C{floats}.
|
|
313
|
+
@kwarg force: If C{True}, format all B{C{floats}} using B{C{fmt}},
|
|
314
|
+
otherwise use B{C{strepr}} for non-C{floats} (C{bool}).
|
|
315
315
|
|
|
316
316
|
@return: The C{sep.join(strs(floats, ...)} joined (C{str}) or single
|
|
317
317
|
C{strs((floats,), ...)} (C{str}) if B{C{floats}} is C{scalar}.
|