pygeodesy 24.6.9__py2.py3-none-any.whl → 24.7.7__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.7.7.dist-info}/METADATA +2 -2
- PyGeodesy-24.7.7.dist-info/RECORD +117 -0
- pygeodesy/__init__.py +39 -32
- pygeodesy/__main__.py +6 -1
- 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 +16 -4
- 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 +25 -4
- 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 +109 -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 +1696 -0
- pygeodesy/geodesicw.py +15 -15
- pygeodesy/geodesicx/__init__.py +4 -4
- pygeodesy/geodesicx/gx.py +34 -55
- pygeodesy/geodesicx/gxbases.py +20 -8
- pygeodesy/geodesicx/gxline.py +93 -88
- pygeodesy/geodsolve.py +108 -59
- pygeodesy/geohash.py +26 -34
- pygeodesy/geoids.py +28 -37
- pygeodesy/hausdorff.py +17 -18
- pygeodesy/heights.py +2 -2
- pygeodesy/internals.py +46 -13
- pygeodesy/interns.py +2 -2
- pygeodesy/karney.py +78 -15
- pygeodesy/ktm.py +13 -16
- pygeodesy/latlonBase.py +17 -19
- pygeodesy/lazily.py +28 -25
- pygeodesy/lcc.py +28 -31
- pygeodesy/ltp.py +7 -8
- pygeodesy/ltpTuples.py +71 -73
- 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/rhumb/solve.py +21 -22
- pygeodesy/solveBase.py +177 -123
- 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 +208 -275
- 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.7.7.dist-info}/WHEEL +0 -0
- {PyGeodesy-24.6.9.dist-info → PyGeodesy-24.7.7.dist-info}/top_level.txt +0 -0
pygeodesy/utmups.py
CHANGED
|
@@ -31,7 +31,7 @@ from pygeodesy.utmupsBase import Fmt, _to4lldn, _to3zBhp, _UPS_ZONE, \
|
|
|
31
31
|
_UTMUPS_ZONE_MAX, _WGS84
|
|
32
32
|
|
|
33
33
|
__all__ = _ALL_LAZY.utmups
|
|
34
|
-
__version__ = '24.
|
|
34
|
+
__version__ = '24.06.11'
|
|
35
35
|
|
|
36
36
|
_MGRS_TILE = _100km # in .mgrs.Mgrs.tile
|
|
37
37
|
|
|
@@ -111,32 +111,31 @@ def toUtmUps8(latlon, lon=None, datum=None, falsed=True, Utm=Utm, Ups=Ups,
|
|
|
111
111
|
|
|
112
112
|
@arg latlon: Latitude (C{degrees}) or an (ellipsoidal)
|
|
113
113
|
geodetic C{LatLon} point.
|
|
114
|
-
@kwarg lon:
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
@kwarg
|
|
119
|
-
|
|
120
|
-
@kwarg Ups: Optional class to return the UPS coordinate (L{Ups})
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
(C{
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
value is missing of B{C{datum}} is invalid.
|
|
114
|
+
@kwarg lon: Longitude (C{degrees}), required if B{C{latlon}} is C{degrees},
|
|
115
|
+
ignored otherwise.
|
|
116
|
+
@kwarg datum: Optional datum to use this UTM coordinate, overriding the
|
|
117
|
+
B{C{latlon}}'s datum (C{Datum}).
|
|
118
|
+
@kwarg falsed: If C{True}, false both easting and northing (C{bool}).
|
|
119
|
+
@kwarg Utm: Optional class to return the UTM coordinate (L{Utm}) or C{None}.
|
|
120
|
+
@kwarg Ups: Optional class to return the UPS coordinate (L{Ups}) or C{None}.
|
|
121
|
+
@kwarg pole: Optional top/center of UPS (stereographic) projection (C{str},
|
|
122
|
+
C{'N[orth]'} or C{'S[outh]'}).
|
|
123
|
+
@kwarg name_cmoff: Optional C{B{name}=NN} (C{str}) and DEPRECATED keyword
|
|
124
|
+
argument C{B{cmoff}=True} to offset the longitude from the zone's
|
|
125
|
+
central meridian (C{bool}), use B{C{falsed}} instead and I{for
|
|
126
|
+
UTM only}.
|
|
127
|
+
|
|
128
|
+
@return: The UTM or UPS coordinate (B{C{Utm}} respectively B{C{Ups}}) or a
|
|
129
|
+
L{UtmUps8Tuple}C{(zone, hemipole, easting, northing, band, datum,
|
|
130
|
+
gamma, scale)} if B{C{Utm}} respectively C{B{Ups} is None} or if
|
|
131
|
+
C{B{falsed} is False}.
|
|
132
|
+
|
|
133
|
+
@raise RangeError: If B{C{lat}} outside the valid UTM or UPS bands or if
|
|
134
|
+
B{C{lat}} or B{C{lon}} outside the valid range and
|
|
135
|
+
L{rangerrors<pygeodesy.rangerrors>} is C{True}.
|
|
136
|
+
|
|
137
|
+
@raise TypeError: If B{C{latlon}} is not ellipsoidal or B{C{lon}} is missing
|
|
138
|
+
or B{C{datum}} is invalid.
|
|
140
139
|
|
|
141
140
|
@raise UTMUPSError: UTM or UPS validation failed.
|
|
142
141
|
|
|
@@ -154,21 +153,20 @@ def toUtmUps8(latlon, lon=None, datum=None, falsed=True, Utm=Utm, Ups=Ups,
|
|
|
154
153
|
return u
|
|
155
154
|
|
|
156
155
|
|
|
157
|
-
def UtmUps(zone, hemipole, easting, northing, band=NN, datum=_WGS84,
|
|
158
|
-
falsed=True, **name):
|
|
156
|
+
def UtmUps(zone, hemipole, easting, northing, band=NN, datum=_WGS84, falsed=True, **name):
|
|
159
157
|
'''Class-like function to create a UTM/UPS coordinate.
|
|
160
158
|
|
|
161
159
|
@kwarg zone: The UTM zone with/-out I{longitudinal} Band or UPS zone C{0}
|
|
162
160
|
or C{"00"} with/-out I{polar} Band (C{str} or C{int}).
|
|
163
|
-
@kwarg hemipole: UTM hemisphere or UPS top/center of projection
|
|
164
|
-
|
|
161
|
+
@kwarg hemipole: UTM hemisphere or UPS top/center of projection (C{str},
|
|
162
|
+
C{'N[orth]'} or C{'S[outh]'}).
|
|
165
163
|
@arg easting: Easting, see B{C{falsed}} (C{meter}).
|
|
166
164
|
@arg northing: Northing, see B{C{falsed}} (C{meter}).
|
|
167
165
|
@kwarg band: Optional, UTM I{latitudinal} C{'C'|'D'|..|'W'|'X'} or UPS
|
|
168
166
|
I{polar} Band letter C{'A'|'B'|'Y'|'Z'} Band letter (C{str}).
|
|
169
167
|
@kwarg datum: The coordinate's datum (L{Datum}).
|
|
170
|
-
@kwarg falsed: If C{True}, both B{C{easting}} and B{C{northing}} are
|
|
171
|
-
|
|
168
|
+
@kwarg falsed: If C{True}, both B{C{easting}} and B{C{northing}} are falsed
|
|
169
|
+
(C{bool}).
|
|
172
170
|
@kwarg name: Optional L{Utm} or L{Ups} C{B{name}=NN} (C{str}).
|
|
173
171
|
|
|
174
172
|
@return: New UTM or UPS instance (L{Utm} or L{Ups}).
|
|
@@ -182,17 +180,16 @@ def UtmUps(zone, hemipole, easting, northing, band=NN, datum=_WGS84,
|
|
|
182
180
|
'''
|
|
183
181
|
z, B, hp = _to3zBhp(zone, band, hemipole=hemipole)
|
|
184
182
|
U = Ups if z in (_UPS_ZONE, _UPS_ZONE_STR) else Utm
|
|
185
|
-
return U(z, hp, easting, northing, band=B, datum=datum,
|
|
186
|
-
falsed=falsed, **name)
|
|
183
|
+
return U(z, hp, easting, northing, band=B, datum=datum, falsed=falsed, **name)
|
|
187
184
|
|
|
188
185
|
|
|
189
186
|
def utmupsValidate(coord, falsed=False, MGRS=False, Error=UTMUPSError):
|
|
190
187
|
'''Check a UTM or UPS coordinate.
|
|
191
188
|
|
|
192
|
-
@arg coord: The UTM or UPS coordinate (L{Utm}, L{Etm}, L{Ups}
|
|
193
|
-
|
|
194
|
-
@kwarg falsed: C{
|
|
195
|
-
(C{bool}), ignored otherwise.
|
|
189
|
+
@arg coord: The UTM or UPS coordinate (L{Utm}, L{Etm}, L{Ups} or
|
|
190
|
+
C{5+Tuple}).
|
|
191
|
+
@kwarg falsed: If C{True}, easting and northing are falsed in the
|
|
192
|
+
C{B{coord} 5+Tuple} (C{bool}), ignored otherwise.
|
|
196
193
|
@kwarg MGRS: Increase easting and northing ranges (C{bool}).
|
|
197
194
|
@kwarg Error: Optional error to raise, overriding the default
|
|
198
195
|
(L{UTMUPSError}).
|
|
@@ -253,8 +250,8 @@ def utmupsValidateOK(coord, falsed=False, ok=True):
|
|
|
253
250
|
'''Check a UTM or UPS coordinate.
|
|
254
251
|
|
|
255
252
|
@arg coord: The UTM or UPS coordinate (L{Utm}, L{Ups} or C{5+Tuple}).
|
|
256
|
-
@kwarg falsed:
|
|
257
|
-
|
|
253
|
+
@kwarg falsed: If C{True}, easting and northing are falsed in the
|
|
254
|
+
C{B{coord} 5+Tuple} (C{bool}), ignored otherwise.
|
|
258
255
|
@kwarg ok: Result to return if validation passed (B{C{ok}}).
|
|
259
256
|
|
|
260
257
|
@return: B{C{ok}} if validation passed, otherwise the L{UTMUPSError}.
|
|
@@ -263,9 +260,9 @@ def utmupsValidateOK(coord, falsed=False, ok=True):
|
|
|
263
260
|
'''
|
|
264
261
|
try:
|
|
265
262
|
utmupsValidate(coord, falsed=falsed)
|
|
266
|
-
return ok
|
|
267
263
|
except UTMUPSError as x:
|
|
268
264
|
return x
|
|
265
|
+
return ok
|
|
269
266
|
|
|
270
267
|
|
|
271
268
|
def utmupsZoneBand5(lat, lon, cmoff=False, **name):
|
|
@@ -280,11 +277,11 @@ def utmupsZoneBand5(lat, lon, cmoff=False, **name):
|
|
|
280
277
|
|
|
281
278
|
@return: A L{UtmUpsLatLon5Tuple}C{(zone, band, hemipole, lat, lon)}
|
|
282
279
|
where C{hemipole} is C{'N'|'S'}, the UTM hemisphere or UPS
|
|
283
|
-
pole,
|
|
280
|
+
pole, projection top/center.
|
|
284
281
|
|
|
285
|
-
@raise RangeError: If B{C{lat}} outside the valid UTM or UPS bands
|
|
286
|
-
|
|
287
|
-
|
|
282
|
+
@raise RangeError: If B{C{lat}} outside the valid UTM or UPS bands or
|
|
283
|
+
if B{C{lat}} or B{C{lon}} outside the valid range
|
|
284
|
+
and L{rangerrors<pygeodesy.rangerrors>} is C{True}.
|
|
288
285
|
|
|
289
286
|
@raise ValueError: Invalid B{C{lat}} or B{C{lon}}.
|
|
290
287
|
|
pygeodesy/utmupsBase.py
CHANGED
|
@@ -12,22 +12,22 @@ from pygeodesy.datums import _ellipsoidal_datum, _WGS84
|
|
|
12
12
|
from pygeodesy.dms import degDMS, parseDMS2
|
|
13
13
|
from pygeodesy.ellipsoidalBase import LatLonEllipsoidalBase as _LLEB
|
|
14
14
|
from pygeodesy.errors import _or, ParseError, _parseX, _ValueError, \
|
|
15
|
-
_xkwds, _xkwds_not
|
|
15
|
+
_xattrs, _xkwds, _xkwds_not
|
|
16
16
|
# from pygeodesy.internals import _name__, _under # from .named
|
|
17
17
|
from pygeodesy.interns import NN, _A_, _B_, _COMMA_, _Error_, \
|
|
18
18
|
_gamma_, _n_a_, _not_, _N_, _NS_, _PLUS_, \
|
|
19
19
|
_S_, _scale_, _SPACE_, _Y_, _Z_
|
|
20
20
|
from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS
|
|
21
|
-
from pygeodesy.named import
|
|
21
|
+
from pygeodesy.named import _name__, _NamedBase, _under
|
|
22
22
|
from pygeodesy.namedTuples import EasNor2Tuple, LatLonDatum5Tuple
|
|
23
23
|
from pygeodesy.props import deprecated_method, property_doc_, _update_all, \
|
|
24
24
|
deprecated_property_RO, Property_RO, property_RO
|
|
25
|
-
from pygeodesy.streprs import Fmt, fstr, _fstrENH2,
|
|
25
|
+
from pygeodesy.streprs import Fmt, fstr, _fstrENH2, _xzipairs
|
|
26
26
|
from pygeodesy.units import Band, Easting, Northing, Scalar, Zone
|
|
27
27
|
from pygeodesy.utily import _Wrap, wrap360
|
|
28
28
|
|
|
29
29
|
__all__ = _ALL_LAZY.utmupsBase
|
|
30
|
-
__version__ = '24.06.
|
|
30
|
+
__version__ = '24.06.12'
|
|
31
31
|
|
|
32
32
|
_UPS_BANDS = _A_, _B_, _Y_, _Z_ # UPS polar bands SE, SW, NE, NW
|
|
33
33
|
# _UTM_BANDS = _MODS.utm._Bands
|
|
@@ -210,13 +210,12 @@ class UtmUpsBase(_NamedBase):
|
|
|
210
210
|
ll = self._latlon
|
|
211
211
|
if LatLon is None:
|
|
212
212
|
r = LatLonDatum5Tuple(ll.lat, ll.lon, ll.datum,
|
|
213
|
-
ll.gamma, ll.scale)
|
|
213
|
+
ll.gamma, ll.scale, name=ll.name)
|
|
214
214
|
else:
|
|
215
215
|
_xsubclassof(_LLEB, LatLon=LatLon)
|
|
216
|
-
|
|
217
|
-
r = _xattrs(
|
|
218
|
-
|
|
219
|
-
return _xnamed(r, ll.name)
|
|
216
|
+
r = LatLon(ll.lat, ll.lon, **_xkwds(LatLon_kwds, datum=ll.datum, name=ll.name))
|
|
217
|
+
r = _xattrs(r, ll, _under(_gamma_), _under(_scale_))
|
|
218
|
+
return r
|
|
220
219
|
|
|
221
220
|
def _latlon5args(self, ll, g, k, _toBand, unfalse, *other):
|
|
222
221
|
'''(INTERNAL) See C{._toLLEB} methods, functions C{ups.toUps8} and C{utm._toXtm8}
|
pygeodesy/vector3d.py
CHANGED
|
@@ -31,7 +31,7 @@ from pygeodesy.vector3dBase import Vector3dBase
|
|
|
31
31
|
# from math import fabs, sqrt # from .fmath
|
|
32
32
|
|
|
33
33
|
__all__ = _ALL_LAZY.vector3d
|
|
34
|
-
__version__ = '24.06.
|
|
34
|
+
__version__ = '24.06.18'
|
|
35
35
|
|
|
36
36
|
_vector2d = _MODS.into(vector2d=__name__)
|
|
37
37
|
|
|
@@ -475,7 +475,8 @@ def _intersect3d3(start1, end1, start2, end2, eps=EPS, useZ=False): # MCCABE 16
|
|
|
475
475
|
t = cb.dot(ab)
|
|
476
476
|
o1 = 0 if b1 else _outside(t, ab2, 1)
|
|
477
477
|
v = s1.plus(a.times(t / ab2))
|
|
478
|
-
|
|
478
|
+
t = v.minus(s2).dot(b)
|
|
479
|
+
o2 = 0 if b2 else _outside(t, b.length2, 2)
|
|
479
480
|
return v, o1, o2
|
|
480
481
|
|
|
481
482
|
|
|
@@ -541,16 +542,15 @@ def intersections2(center1, radius1, center2, radius2, sphere=True, **Vector_and
|
|
|
541
542
|
intersection points and optional, additional B{C{Vector}}
|
|
542
543
|
keyword arguments, otherwise B{C{center1}}'s (sub-)class.
|
|
543
544
|
|
|
544
|
-
@return: If B{
|
|
545
|
-
|
|
546
|
-
|
|
545
|
+
@return: If C{B{sphere} is True}, a 2-tuple of the C{center} and C{radius} of the
|
|
546
|
+
intersection of the I{spheres}. For abutting circles, C{radius} is C{0.0}
|
|
547
|
+
and C{center} is the I{radical center}.
|
|
547
548
|
|
|
548
|
-
If B{
|
|
549
|
-
|
|
550
|
-
the
|
|
549
|
+
If C{B{sphere} is False}, a 2-tuple with the two intersection points of the
|
|
550
|
+
I{circles}. For abutting circles, both points are the same instance, aka
|
|
551
|
+
the I{radical center}.
|
|
551
552
|
|
|
552
|
-
@raise IntersectionError: Concentric, invalid or non-intersecting spheres
|
|
553
|
-
or circles.
|
|
553
|
+
@raise IntersectionError: Concentric, invalid or non-intersecting spheres or circles.
|
|
554
554
|
|
|
555
555
|
@raise TypeError: Invalid B{C{center1}} or B{C{center2}}.
|
|
556
556
|
|
|
@@ -637,8 +637,8 @@ def iscolinearWith(point, point1, point2, eps=EPS, useZ=True):
|
|
|
637
637
|
@kwarg eps: Tolerance (C{scalar}), same units as C{x}, C{y} and C{z}.
|
|
638
638
|
@kwarg useZ: If C{True}, use the Z components, otherwise force C{z=INT0} (C{bool}).
|
|
639
639
|
|
|
640
|
-
@return: C{True} if B{C{point}} is colinear B{C{point1}} and B{C{point2}},
|
|
641
|
-
|
|
640
|
+
@return: C{True} if B{C{point}} is colinear B{C{point1}} and B{C{point2}}, C{False}
|
|
641
|
+
otherwise.
|
|
642
642
|
|
|
643
643
|
@raise TypeError: Invalid B{C{point}}, B{C{point1}} or B{C{point2}}.
|
|
644
644
|
|
|
@@ -661,8 +661,8 @@ def nearestOn(point, point1, point2, within=True, useZ=True, Vector=None, **Vect
|
|
|
661
661
|
points, otherwise the closest point on the extended line
|
|
662
662
|
through both points (C{bool}).
|
|
663
663
|
@kwarg useZ: If C{True}, use the Z components, otherwise force C{z=INT0} (C{bool}).
|
|
664
|
-
@kwarg Vector: Class to return closest point (C{Cartesian}, L{Vector3d}
|
|
665
|
-
|
|
664
|
+
@kwarg Vector: Class to return closest point (C{Cartesian}, L{Vector3d} or
|
|
665
|
+
C{Vector3Tuple}) or C{None}.
|
|
666
666
|
@kwarg Vector_kwds: Optional, additional B{C{Vector}} keyword arguments,
|
|
667
667
|
ignored if C{B{Vector} is None}.
|
|
668
668
|
|
|
@@ -766,23 +766,22 @@ def nearestOn6(point, points, closed=False, useZ=True, **Vector_and_kwds): # ep
|
|
|
766
766
|
return NearestOn6Tuple(v, sqrt(c2), f, j, s, e)
|
|
767
767
|
|
|
768
768
|
|
|
769
|
-
def _nVc(v, clas=None, Vector=None, **
|
|
769
|
+
def _nVc(v, clas=None, Vector=None, **name_Vector_kwds): # in .vector2d
|
|
770
770
|
# return a named C{Vector} or C{clas} instance
|
|
771
|
-
name,
|
|
771
|
+
name, kwds = _name2__(**name_Vector_kwds)
|
|
772
772
|
if Vector is not None:
|
|
773
|
-
v = Vector(v.x, v.y, v.z, **
|
|
773
|
+
v = Vector(v.x, v.y, v.z, **kwds)
|
|
774
774
|
elif clas is not None:
|
|
775
775
|
v = clas(v.x, v.y, v.z) # ignore Vector_kwds
|
|
776
776
|
return _xnamed(v, name) if name else v
|
|
777
777
|
|
|
778
778
|
|
|
779
|
-
def _otherV3d(useZ=True, NN_OK=True, i=None, **
|
|
779
|
+
def _otherV3d(useZ=True, NN_OK=True, i=None, **name_vector):
|
|
780
780
|
# check named vector instance, return Vector3d
|
|
781
|
-
n, v = _xkwds_item2(
|
|
781
|
+
n, v = _xkwds_item2(name_vector)
|
|
782
|
+
n = Fmt.INDEX(n, i)
|
|
782
783
|
if useZ and isinstance(v, Vector3dBase):
|
|
783
|
-
return v if NN_OK or v.name else v.copy(name=
|
|
784
|
-
|
|
785
|
-
n = Fmt.INDEX(n, i)
|
|
784
|
+
return v if NN_OK or v.name else v.copy(name=n)
|
|
786
785
|
try:
|
|
787
786
|
return Vector3d(v.x, v.y, (v.z if useZ else INT0), name=n)
|
|
788
787
|
except AttributeError: # no .x, .y or .z attr
|
|
@@ -799,7 +798,7 @@ def parse3d(str3d, sep=_COMMA_, Vector=Vector3d, **Vector_kwds):
|
|
|
799
798
|
@kwarg Vector_kwds: Optional B{C{Vector}} keyword arguments,
|
|
800
799
|
ignored if C{B{Vector} is None}.
|
|
801
800
|
|
|
802
|
-
@return: A B{C{Vector}} instance or if B{
|
|
801
|
+
@return: A B{C{Vector}} instance or if C{B{Vector} is None},
|
|
803
802
|
a named L{Vector3Tuple}C{(x, y, z)}.
|
|
804
803
|
|
|
805
804
|
@raise VectorError: Invalid B{C{str3d}}.
|
|
@@ -820,11 +819,11 @@ def sumOf(vectors, Vector=Vector3d, **Vector_kwds):
|
|
|
820
819
|
|
|
821
820
|
@arg vectors: Vectors to be added (L{Vector3d}[]).
|
|
822
821
|
@kwarg Vector: Optional class for the vectorial sum (L{Vector3d}).
|
|
823
|
-
@kwarg Vector_kwds: Optional B{C{Vector}} keyword arguments,
|
|
824
|
-
|
|
822
|
+
@kwarg Vector_kwds: Optional B{C{Vector}} keyword arguments, ignored
|
|
823
|
+
if C{B{Vector} is None}.
|
|
825
824
|
|
|
826
|
-
@return: Vectorial sum as B{C{Vector}} or if B{C{Vector}
|
|
827
|
-
|
|
825
|
+
@return: Vectorial sum as B{C{Vector}} or if B{C{Vector} is None},
|
|
826
|
+
a named L{Vector3Tuple}C{(x, y, z)}.
|
|
828
827
|
|
|
829
828
|
@raise VectorError: No B{C{vectors}}.
|
|
830
829
|
'''
|
pygeodesy/vector3dBase.py
CHANGED
|
@@ -30,7 +30,7 @@ from pygeodesy.units import Float, Scalar
|
|
|
30
30
|
from math import atan2, ceil, fabs, floor, trunc
|
|
31
31
|
|
|
32
32
|
__all__ = _ALL_LAZY.vector3dBase
|
|
33
|
-
__version__ = '24.06.
|
|
33
|
+
__version__ = '24.06.11'
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
class Vector3dBase(_NamedBase): # sync __methods__ with .fsums.Fsum
|
|
@@ -491,15 +491,14 @@ class Vector3dBase(_NamedBase): # sync __methods__ with .fsums.Fsum
|
|
|
491
491
|
'''Compute the cross product of this and an other vector.
|
|
492
492
|
|
|
493
493
|
@arg other: The other vector (L{Vector3d}).
|
|
494
|
-
@kwarg raiser: Optional, L{CrossError} label if raised (C{str},
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
C{x}, C{y}, and C{z}.
|
|
494
|
+
@kwarg raiser: Optional, L{CrossError} label if raised (C{str}, non-L{NN}).
|
|
495
|
+
@kwarg eps0: Near-zero tolerance (C{scalar}), same units as C{x}, C{y} and
|
|
496
|
+
C{z}.
|
|
498
497
|
|
|
499
498
|
@return: Cross product (L{Vector3d}).
|
|
500
499
|
|
|
501
|
-
@raise CrossError: Zero or near-zero cross product and
|
|
502
|
-
|
|
500
|
+
@raise CrossError: Zero or near-zero cross product and if B{C{raiser}} and
|
|
501
|
+
L{crosserrors<pygeodesy.crosserrors>} are both C{True}.
|
|
503
502
|
|
|
504
503
|
@raise TypeError: Incompatible B{C{other}} C{type}.
|
|
505
504
|
'''
|
pygeodesy/webmercator.py
CHANGED
|
@@ -36,7 +36,7 @@ from pygeodesy.utily import degrees90, degrees180
|
|
|
36
36
|
from math import atan, atanh, exp, radians, sin, tanh
|
|
37
37
|
|
|
38
38
|
__all__ = _ALL_LAZY.webmercator
|
|
39
|
-
__version__ = '24.
|
|
39
|
+
__version__ = '24.06.11'
|
|
40
40
|
|
|
41
41
|
# _FalseEasting = 0 # false Easting (C{meter})
|
|
42
42
|
# _FalseNorthing = 0 # false Northing (C{meter})
|
|
@@ -283,8 +283,8 @@ def parseWM(strWM, radius=R_MA, Wm=Wm, **name):
|
|
|
283
283
|
or C{None}.
|
|
284
284
|
@kwarg name: Optional C{B{name}=NN} (C{str}).
|
|
285
285
|
|
|
286
|
-
@return: The WM coordinate (B{C{Wm}}) or if B{
|
|
287
|
-
|
|
286
|
+
@return: The WM coordinate (B{C{Wm}}) or if C{B{Wm} is None}, an
|
|
287
|
+
L{EasNorRadius3Tuple}C{(easting, northing, radius)}.
|
|
288
288
|
|
|
289
289
|
@raise WebMercatorError: Invalid B{C{strWM}}.
|
|
290
290
|
'''
|
|
@@ -307,27 +307,25 @@ def parseWM(strWM, radius=R_MA, Wm=Wm, **name):
|
|
|
307
307
|
def toWm(latlon, lon=None, earth=R_MA, Wm=Wm, **name_Wm_kwds_radius):
|
|
308
308
|
'''Convert a lat-/longitude point to a WM coordinate.
|
|
309
309
|
|
|
310
|
-
@arg latlon: Latitude (C{degrees}) or an (ellipsoidal or
|
|
311
|
-
|
|
310
|
+
@arg latlon: Latitude (C{degrees}) or an (ellipsoidal or spherical)
|
|
311
|
+
geodetic C{LatLon} point.
|
|
312
312
|
@kwarg lon: Optional longitude (C{degrees} or C{None}).
|
|
313
|
-
@kwarg earth: Earth radius (C{meter}), datum or ellipsoid
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
@kwarg
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
@return: The WM coordinate (B{C{Wm}}) or if B{C{Wm}} is C{None} an
|
|
313
|
+
@kwarg earth: Earth radius (C{meter}), datum or ellipsoid (L{Datum},
|
|
314
|
+
L{a_f2Tuple}, L{Ellipsoid} or L{Ellipsoid2}), overridden
|
|
315
|
+
by B{C{latlon}}'s datum if present.
|
|
316
|
+
@kwarg Wm: Optional class to return the WM coordinate (L{Wm}) or C{None}.
|
|
317
|
+
@kwarg name_Wm_kwds_radius: Optional C{B{name}=NN} (C{str}), optional,
|
|
318
|
+
additional B{C{Wm}} keyword arguments, ignored if C{B{Wm} is
|
|
319
|
+
None} and DEPRECATED keyword argument C{B{radius}=earth},
|
|
320
|
+
use B{C{earth}}.
|
|
321
|
+
|
|
322
|
+
@return: The WM coordinate (B{C{Wm}}) or if C{B{Wm} is None}, an
|
|
325
323
|
L{EasNorRadius3Tuple}C{(easting, northing, radius)}.
|
|
326
324
|
|
|
327
|
-
@raise ValueError: If B{C{
|
|
328
|
-
scalar, if B{C{latlon}} is beyond
|
|
329
|
-
and L{pygeodesy.rangerrors}
|
|
330
|
-
|
|
325
|
+
@raise ValueError: If B{C{earth}} is invalid, if B{C{lon}} value is missing,
|
|
326
|
+
if B{C{latlon}} is not scalar, or if B{C{latlon}} is beyond
|
|
327
|
+
the valid WM range and L{rangerrrors<pygeodesy.rangerrors>}
|
|
328
|
+
is C{True}.
|
|
331
329
|
'''
|
|
332
330
|
name, kwds = _name2__(name_Wm_kwds_radius)
|
|
333
331
|
R, kwds = _xkwds_pop2(kwds, radius=earth)
|
pygeodesy/wgrs.py
CHANGED
|
@@ -16,22 +16,22 @@ also U{World Geographic Reference System
|
|
|
16
16
|
from pygeodesy.constants import INT0, _float, _off90, _0_001, \
|
|
17
17
|
_0_5, _1_0, _2_0, _60_0, _1000_0
|
|
18
18
|
from pygeodesy.dms import parse3llh # parseDMS2
|
|
19
|
-
from pygeodesy.errors import _ValueError, _xattr,
|
|
19
|
+
from pygeodesy.errors import _ValueError, _xattr, _xStrError
|
|
20
20
|
from pygeodesy.interns import NN, _0to9_, _AtoZnoIO_, _COMMA_, \
|
|
21
21
|
_height_, _radius_, _SPACE_
|
|
22
22
|
from pygeodesy.lazily import _ALL_LAZY, _ALL_OTHER
|
|
23
|
-
from pygeodesy.named import nameof, isstr, Property_RO
|
|
23
|
+
from pygeodesy.named import _name2__, nameof, isstr, Property_RO
|
|
24
24
|
from pygeodesy.namedTuples import LatLon2Tuple, LatLonPrec3Tuple
|
|
25
25
|
# from pygeodesy.props import Property_RO # from .named
|
|
26
26
|
from pygeodesy.streprs import Fmt, _0wd
|
|
27
27
|
from pygeodesy.units import Height, Int, Lat, Lon, Precision_, \
|
|
28
|
-
Radius, Scalar_, Str
|
|
28
|
+
Radius, Scalar_, Str
|
|
29
29
|
from pygeodesy.utily import ft2m, m2ft, m2NM
|
|
30
30
|
|
|
31
31
|
from math import floor
|
|
32
32
|
|
|
33
33
|
__all__ = _ALL_LAZY.wgrs
|
|
34
|
-
__version__ = '
|
|
34
|
+
__version__ = '24.06.15'
|
|
35
35
|
|
|
36
36
|
_Base = 10
|
|
37
37
|
_BaseLen = 4
|
|
@@ -207,27 +207,25 @@ class Georef(Str):
|
|
|
207
207
|
'''
|
|
208
208
|
return self._decoded5.radius
|
|
209
209
|
|
|
210
|
-
def toLatLon(self, LatLon=None, height=None, **
|
|
211
|
-
'''Return (the center of) this georef cell as
|
|
212
|
-
of the supplied C{LatLon} class.
|
|
210
|
+
def toLatLon(self, LatLon=None, height=None, **name_LatLon_kwds):
|
|
211
|
+
'''Return (the center of) this georef cell as a C{LatLon}.
|
|
213
212
|
|
|
214
213
|
@kwarg LatLon: Class to use (C{LatLon}) or C{None}.
|
|
215
|
-
@kwarg height: Optional height (C{meter}).
|
|
216
|
-
@kwarg
|
|
217
|
-
|
|
214
|
+
@kwarg height: Optional height (C{meter}), overriding this height.
|
|
215
|
+
@kwarg name_LatLon_kwds: Optional C{B{name}=NN} (C{str}) and optional,
|
|
216
|
+
additional B{C{LatLon}} keyword arguments, ignored if
|
|
217
|
+
C{B{LatLon} is None}.
|
|
218
218
|
|
|
219
|
-
@return: This georef location (B{C{LatLon}}) or if B{
|
|
220
|
-
|
|
219
|
+
@return: This georef location (B{C{LatLon}}) or if C{B{LatLon} is None},
|
|
220
|
+
a L{LatLon3Tuple}C{(lat, lon, height)}.
|
|
221
221
|
|
|
222
|
-
@raise TypeError: Invalid B{C{LatLon}} or B{C{
|
|
222
|
+
@raise TypeError: Invalid B{C{LatLon}} or B{C{name_LatLon_kwds}}.
|
|
223
223
|
'''
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
r = LatLon(*self.latlon, height=h, **_xkwds(LatLon_kwds, name=self.name))
|
|
230
|
-
return r
|
|
224
|
+
n, kwds = _name2__(name_LatLon_kwds, _or_nameof=self)
|
|
225
|
+
h = (self.height or INT0) if height is None else height # _heigHt
|
|
226
|
+
r = self.latlon.to3Tuple(h) if LatLon is None else LatLon(
|
|
227
|
+
*self.latlon, height=h, **kwds)
|
|
228
|
+
return r.renamed(n) if n else r
|
|
231
229
|
|
|
232
230
|
|
|
233
231
|
def decode3(georef, center=True):
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
pygeodesy/LICENSE,sha256=YfgAiyxOwY6P9Kkb1_5XN81nueTLrpb3Ffkv3EuPgFU,1144
|
|
2
|
-
pygeodesy/__init__.py,sha256=MliQ7bvn1U4dND9REeqtweBQF8d_LWeWIliPvZwBkeg,41046
|
|
3
|
-
pygeodesy/__main__.py,sha256=UmTd6Qw20g_pgnQjdaHePm-xuOEBi1tUNRLO0eL0-rU,4593
|
|
4
|
-
pygeodesy/albers.py,sha256=2t8EjmoFWmkdTb4DUHMlECkwTPDS1wpNf92WD_UWXds,31081
|
|
5
|
-
pygeodesy/azimuthal.py,sha256=RQdZbHoLlHSamhnJ4GMrrRU6UrYmTpa1yK59nYB-A4o,50252
|
|
6
|
-
pygeodesy/basics.py,sha256=Ez1tApjFnk6vNsYXeZzi28hYsa5AhUYobLS1Anna2g0,29381
|
|
7
|
-
pygeodesy/booleans.py,sha256=_19jhaMqcPdaOfKdSElh50y2JQemXcu9Xcx0CqJ90ZE,73533
|
|
8
|
-
pygeodesy/cartesianBase.py,sha256=-n3g68SO-3399cqyzgDXAolQnQfyOhzFYixhATpWZVI,47216
|
|
9
|
-
pygeodesy/clipy.py,sha256=3ysIEWQ89HjvLnSlZm0nZAt9EN5AQxIs1sLLM8yF9zM,27675
|
|
10
|
-
pygeodesy/constants.py,sha256=-weWOuHwE-qI6pYRLcTucI0KNcNJm6vPNzxwrJzACKs,19192
|
|
11
|
-
pygeodesy/css.py,sha256=RXlLh76tVDFClVh7L1U3FFrLZvjBPFASDf3vq8dHecE,25778
|
|
12
|
-
pygeodesy/datums.py,sha256=GYbtvPyzDChHYgnNleBqsM-MNwLNQqrO2_MMV4Z9kmI,34006
|
|
13
|
-
pygeodesy/dms.py,sha256=VujWxk1L2Kp6OMfnu0XPI-j8bnyJ33sFmtB9_MbHqSU,44455
|
|
14
|
-
pygeodesy/ecef.py,sha256=35lTlGfCM4t45IFpjfXHSUXJSyGUEjuqUK-YWRRplLs,59680
|
|
15
|
-
pygeodesy/elevations.py,sha256=1qZM2w0rDF7jHunydpTEmdLwOwF81KUL9L6RALJC7K4,10807
|
|
16
|
-
pygeodesy/ellipsoidalBase.py,sha256=ljWfrFENRFFWxhyvptfipEWM8xKeTs329F2OP4lZvKI,55297
|
|
17
|
-
pygeodesy/ellipsoidalBaseDI.py,sha256=lPUPP5lVsCzI5RIukxmJ5MH6j2Mb7mdvftQ0tsvsW6g,38585
|
|
18
|
-
pygeodesy/ellipsoidalExact.py,sha256=a_2C6S6hGRumavy5giRoC9QAhnjqpujiXyu92od6nKo,16951
|
|
19
|
-
pygeodesy/ellipsoidalGeodSolve.py,sha256=nzT6KOubBOxXRHYafOo5ByQ90VOY1zvaS7byhnwaFqE,16830
|
|
20
|
-
pygeodesy/ellipsoidalKarney.py,sha256=m07XlZKWvBnOzIKV6P7RNttk8G5s2JRBH2RVF_lg0_k,19243
|
|
21
|
-
pygeodesy/ellipsoidalNvector.py,sha256=kRmWclV0NFnEJv3m3TxBNJMu7wyrZZO2iUrNrr-_m9g,30261
|
|
22
|
-
pygeodesy/ellipsoidalVincenty.py,sha256=Uk93B8GFcMnWiwKUOA84TlLwbBlvzVnsAXAx0cU7cn4,26004
|
|
23
|
-
pygeodesy/ellipsoids.py,sha256=_fbQy9k_k40Li6jAOlHcSlEPPUnliZsqjIR2be3h2QI,120238
|
|
24
|
-
pygeodesy/elliptic.py,sha256=-80MbZvRPk-TeA_ggkfXhjuPv07MzsB4HxNF7gbdhB4,42501
|
|
25
|
-
pygeodesy/epsg.py,sha256=oWHX_QVChE5roktAyXUmPmX49XHiryYmXTHxQzrAprE,8222
|
|
26
|
-
pygeodesy/errors.py,sha256=3GPp5Axnbnch93VWO-E7uEAAfVnRzbByafNCtKR6g_I,28443
|
|
27
|
-
pygeodesy/etm.py,sha256=DeX0mZQcHK0KbmOZodp2iv2TEFtRjYziSL9oUEV2YxU,44952
|
|
28
|
-
pygeodesy/fmath.py,sha256=EOHD0uZ8VULZtXAk8tVeuPaSTozPDCN8GJcemCo-jqg,33709
|
|
29
|
-
pygeodesy/formy.py,sha256=JKFqC7OlxBvB9sOH9OaWJX4bLkf0dMqW3LcVrwdnt7A,75121
|
|
30
|
-
pygeodesy/frechet.py,sha256=GL4R26drObd1qFyg4hV-L9btdXaIj7xzrKjQUA-7JKc,34342
|
|
31
|
-
pygeodesy/fstats.py,sha256=4eIhzSCMnn-2nVP3Q-5cCWCI-rvH0CE-zkk9hp3Pvn8,28642
|
|
32
|
-
pygeodesy/fsums.py,sha256=35PAG1f5DO1KgnEWujH5TSbaas6a6eETAeeJxGcUW1A,80453
|
|
33
|
-
pygeodesy/gars.py,sha256=gVnLQIEofyf_dA8dhpLrmhtIxGhBHZVRw8PbWgYUnnY,11400
|
|
34
|
-
pygeodesy/geodesicw.py,sha256=PwUO5jCGExhMt6cKkQwVnPTHMMVadkTrd6pV4UWZYNY,27064
|
|
35
|
-
pygeodesy/geodsolve.py,sha256=lC-81_56RUpgyJPDTXv0ih73tEuMNp3evDvyP4CDKSs,21974
|
|
36
|
-
pygeodesy/geohash.py,sha256=hAgcl8p4DSswBdrNj-SzmWYMU2q6h5yczeLKtpRvmZA,32080
|
|
37
|
-
pygeodesy/geoids.py,sha256=ztWLvRLpOPqC_52sxJVzVk7_g4o2REVxx5d3hh7jZ8g,80887
|
|
38
|
-
pygeodesy/hausdorff.py,sha256=bhxy8_3dAoR1syc-X90AbANNrulMFdwRyvNxjYfcw6I,34713
|
|
39
|
-
pygeodesy/heights.py,sha256=3-4ESUw7s7fggRRTXIR1YpV3K-Qk8x3nlt7BkNa54lw,43191
|
|
40
|
-
pygeodesy/internals.py,sha256=0y4Wwx7bGife4-quIyAf7l6MR91Tmfjrie1FuqNSM5Y,19354
|
|
41
|
-
pygeodesy/interns.py,sha256=njF6hxFJRhhWLsrfx21XX8V3ZvS59ujfzk2spWBGSBM,23258
|
|
42
|
-
pygeodesy/iters.py,sha256=xPH0ytomvJeKHu717Fjzi3QbRrEikO6n7vqkY_IDz1k,20311
|
|
43
|
-
pygeodesy/karney.py,sha256=iGoi32hDPdaMR39i6pypcbY2hqvHFVPFROYcjjA-Jrw,35121
|
|
44
|
-
pygeodesy/ktm.py,sha256=itQElJegrfhpAuMujAWFTcyuMSeKIgSyw5qkkHFs7vE,27519
|
|
45
|
-
pygeodesy/latlonBase.py,sha256=EK7hM0GrLrpfCrtYc0frdS_hF1UxSo8KkqP0Bg5nq24,79072
|
|
46
|
-
pygeodesy/lazily.py,sha256=b6x3Dfob6HCoiwHaF8lhtnFQei3w2qW8yoMURPdr7tA,46519
|
|
47
|
-
pygeodesy/lcc.py,sha256=H6HTbruMKwboVxAnM1EsieBJHKqWhdd47bCYDzTIioE,25746
|
|
48
|
-
pygeodesy/ltp.py,sha256=oFuGZgWFKI7YjldlyTNhbLLOS7AVixLf5iemEhHhRbA,50857
|
|
49
|
-
pygeodesy/ltpTuples.py,sha256=VFJWeGJ96NUPaxwc1JT82dMYgE3NpnUwzu0osaaHfVE,58414
|
|
50
|
-
pygeodesy/mgrs.py,sha256=cKYnLKUorr_27Rca4V5I1-R6RPGnTlzrlYFuENnnjnI,29707
|
|
51
|
-
pygeodesy/named.py,sha256=oZEqvA1rORBY44J8oi2I6XpBchCnyi_QgAvd-zlx25A,51885
|
|
52
|
-
pygeodesy/namedTuples.py,sha256=UDmL4kCihvf8tIUVXzGzRLzL_1BLuyqm04pite6YUuk,28495
|
|
53
|
-
pygeodesy/nvectorBase.py,sha256=jT_tmA7JW_C66h7zbgP4mKxcYnmLVVpv6j-ZTvZC3NI,28744
|
|
54
|
-
pygeodesy/osgr.py,sha256=g-uCTy735aUNh5odTp27PY8CLDnTaquc1_oTs8Qv6zg,30827
|
|
55
|
-
pygeodesy/points.py,sha256=whMm-9Nzlhr19nPNVkXB0nIg52iMvQ4q2Xg_Eor_Yz0,64415
|
|
56
|
-
pygeodesy/props.py,sha256=8dGmTpdEABnLbBngmaOIpM0h4NYiBteMOHc_r4iNpAg,21988
|
|
57
|
-
pygeodesy/resections.py,sha256=nkfBxYrsEdyq2JqAbPrRWKplJBzFkIXLvEZGB4gPu_A,43550
|
|
58
|
-
pygeodesy/simplify.py,sha256=NybC-pfze0ObEm4ZCz6ZQrjJlQ-QyA83E6mSJqCuKq4,25223
|
|
59
|
-
pygeodesy/solveBase.py,sha256=FGuvHvloiyBdE0H50o8rOxtD_n6gCx1Gp31Ckn-N7hk,16852
|
|
60
|
-
pygeodesy/sphericalBase.py,sha256=eIvQz573LR9xPFZK4t5Z0TEVz4aPKI9MdMtgFDbm7Zo,32284
|
|
61
|
-
pygeodesy/sphericalNvector.py,sha256=TBs_nid_DTcox7bBegh_Djv4zZRGRY4mH6dd1xIHGms,56963
|
|
62
|
-
pygeodesy/sphericalTrigonometry.py,sha256=SqkFi2_Cy1LOzlZvvO4tpwxkS-AEBhdfRTgopXFTISw,64208
|
|
63
|
-
pygeodesy/streprs.py,sha256=jZigK7DeHAFi2HTbvA5sXE1bJ8jeyJC1spBnzz7nTSs,24018
|
|
64
|
-
pygeodesy/trf.py,sha256=CRFHmu0lFNtc41fddXavEkHmgnTFWEqR4RTFodcFKsw,119022
|
|
65
|
-
pygeodesy/triaxials.py,sha256=klirzOo6yxTmd-eQM4PHMnszUo71JR0VKIUy9mYUam8,62860
|
|
66
|
-
pygeodesy/units.py,sha256=gHmNw5HO78zeG3zUPfwf3wrV9LKQxBLOPPzbLivMiWA,38196
|
|
67
|
-
pygeodesy/unitsBase.py,sha256=9WC7GgLJWc9MMKX1xFIlgXNKGpK9k0Do1lA6vAkLE8s,13539
|
|
68
|
-
pygeodesy/ups.py,sha256=p9F49qQ9tGGf18fnFWJ5DdqQA-FdNe_BcuIGAi5tIoE,23419
|
|
69
|
-
pygeodesy/utily.py,sha256=u5yGJvNKiNtafrokDaydHzBPe8vAGuy7WXrPP7yNSnk,36149
|
|
70
|
-
pygeodesy/utm.py,sha256=ZxBvDcCkdnmTRzMOHyhADHdZJSUo0U0xBAsg0rEeTHk,31148
|
|
71
|
-
pygeodesy/utmups.py,sha256=_GCrF3TljW4k5W9uKwilO1ivPLAbOArxlzi7jPJ4rbc,13226
|
|
72
|
-
pygeodesy/utmupsBase.py,sha256=rRTSGgBbZiIp_C1v2elAjHKEIjYN1rt27lECXc55hH8,18764
|
|
73
|
-
pygeodesy/vector2d.py,sha256=zJq5PB777_mFJpKD-rt_T0Vm4SNbVwF7pc3KxX8uCT8,34994
|
|
74
|
-
pygeodesy/vector3d.py,sha256=t1MVIYCfnP-EdHiV3PAuVDcjLrDNZ3E48UOW-2rw5js,44953
|
|
75
|
-
pygeodesy/vector3dBase.py,sha256=R6rQlqoO8pvzhfjz6jK1llL74c9SldafPXHbdBrPCIA,35732
|
|
76
|
-
pygeodesy/webmercator.py,sha256=J89VAROczHNpD34AuIWD3vxfogk3ZKoYj1w0lXOCkYA,14968
|
|
77
|
-
pygeodesy/wgrs.py,sha256=AKUrYRCC67lOeJ6vUDAiGb_mY6R3ZwflXpOaP3wauOg,14774
|
|
78
|
-
pygeodesy/auxilats/_CX_4.py,sha256=U41njj8Pu8cHMGuoUUVA20QIvRJAq-VGCnyoKJl0Ylo,8662
|
|
79
|
-
pygeodesy/auxilats/_CX_6.py,sha256=x4hrHxunjqqkEsZbVW1dyn3R5mR8EWYOuX77RzDEyh4,14856
|
|
80
|
-
pygeodesy/auxilats/_CX_8.py,sha256=t-OO48t4cCOsOgMi1FoyPw2DQqybVZFsgQMqAYP-jKY,25304
|
|
81
|
-
pygeodesy/auxilats/__init__.py,sha256=tj9fglSENe7whplLC9YCl--EQNyMNd1g26BPLT2JNr0,2881
|
|
82
|
-
pygeodesy/auxilats/__main__.py,sha256=Vuj1YSp1LV0zejVzi6EYauka1Dv8kwOHI_aeHxQEVYk,2899
|
|
83
|
-
pygeodesy/auxilats/auxAngle.py,sha256=rljkFpqLhCMZVMo9u0xNBmGZV0KxsmIbI41d5itcZ3E,16740
|
|
84
|
-
pygeodesy/auxilats/auxDLat.py,sha256=U3BHF6AkW5--nrwH9whL5wZVIZLH_keRLfUz6c6KBx4,10950
|
|
85
|
-
pygeodesy/auxilats/auxDST.py,sha256=bdNEh3TdABWH7qW6ngZx5SnzDM3B5rtPLvYhvCnFsKc,10497
|
|
86
|
-
pygeodesy/auxilats/auxLat.py,sha256=GUpK5_rcL8IHjC209dhIibYYBJudFU0Yk7JD-KUApbc,32529
|
|
87
|
-
pygeodesy/auxilats/auxily.py,sha256=ZiCFedYcr32O6TWQ_dcnwMrc9TgogyuhNSbR77WMDpg,8240
|
|
88
|
-
pygeodesy/deprecated/__init__.py,sha256=ZRGqgwSdvtKSYZdw09-LPuGa_i0jMHWKIwrPG3r1hHs,2815
|
|
89
|
-
pygeodesy/deprecated/bases.py,sha256=nxUtxscAg5cb7HEzTSmPJFafLc9Ad2SL5ovwkYaU5z8,1655
|
|
90
|
-
pygeodesy/deprecated/classes.py,sha256=PXgss-2kEu3bzaxvSeVZJGdcRqsdi_6_aRqsESyUQKQ,11662
|
|
91
|
-
pygeodesy/deprecated/consterns.py,sha256=W-rQiw443_zCFEUzjCGykGND-i5P_ghEIyJUSGg7-Nc,1908
|
|
92
|
-
pygeodesy/deprecated/datum.py,sha256=KfuMA64LYGMj1voW2uai2RGcugtWdpvlOL6UHJvpTeQ,1875
|
|
93
|
-
pygeodesy/deprecated/functions.py,sha256=nwYgLqw9Wy6ieDxQGZJ-dIeBaF4IvmNBFx9AcHwiBlE,13907
|
|
94
|
-
pygeodesy/deprecated/nvector.py,sha256=_dZf84RdmPr7e7i8Yi683R-8Mqn0ipTqIsDhNl29hGo,2117
|
|
95
|
-
pygeodesy/deprecated/rhumbBase.py,sha256=d7YKW--dnRpobB2CSvhFsntWF0B5-HYJqID2pv5lD5k,1375
|
|
96
|
-
pygeodesy/deprecated/rhumbaux.py,sha256=n29xazYMbVG4MJkLjAGu8B88bbcFF5xnvuj9xSxjfIk,1428
|
|
97
|
-
pygeodesy/deprecated/rhumbsolve.py,sha256=QprjRfo5T1_C4ovaa1cffAcmNczzkhGIfmybAup9a9w,1431
|
|
98
|
-
pygeodesy/deprecated/rhumbx.py,sha256=OS0p_meaoVrpZe5UhK6qZljjlrGpL0pCHWw8gofw7ks,1425
|
|
99
|
-
pygeodesy/geodesicx/_C4_24.py,sha256=kS4XMR9m7iBs01V8K0Oz9qTYmjN-icIQGpc_8iwVhig,90750
|
|
100
|
-
pygeodesy/geodesicx/_C4_27.py,sha256=bPbj2Ckrn9WJglm3SNTXyMkULNwANM0tCQ-LKxP1L58,134258
|
|
101
|
-
pygeodesy/geodesicx/_C4_30.py,sha256=QZO8p971ztJwDGLOaJYgIhklztz9GlqbtS-xRP_E7o4,201964
|
|
102
|
-
pygeodesy/geodesicx/__init__.py,sha256=0_wTYAkvfJ2xVTzw5Zo9qQlSQIT7Q_PUwC_IqFQkrWA,2446
|
|
103
|
-
pygeodesy/geodesicx/__main__.py,sha256=JnKrYmg1q9J5wRRqUy-dQ9abj2-2jpWtrolMMaFfWiY,3176
|
|
104
|
-
pygeodesy/geodesicx/gx.py,sha256=Luu-bmgX9WAJ7sVNkeLRuWUUj-ndp4FGafe71xC3H2k,61650
|
|
105
|
-
pygeodesy/geodesicx/gxarea.py,sha256=-Kwe6spe2MSQbeLFDd6UN2NOi4JOjYhHAEzonOU3u4A,19409
|
|
106
|
-
pygeodesy/geodesicx/gxbases.py,sha256=nSQpDPuRQFkkzvjOaalBTHOQCYT1fhSOb5uy-5NvvSA,5215
|
|
107
|
-
pygeodesy/geodesicx/gxline.py,sha256=GP7BXfpsePLZy0SLLiIO6ytWKFpBLuPsOaL2Z_-45iU,27373
|
|
108
|
-
pygeodesy/rhumb/__init__.py,sha256=70qKVuNKkddfqMSxZ9c0VCZM1w0_Ka_nBWwtpfxxh2o,2207
|
|
109
|
-
pygeodesy/rhumb/aux_.py,sha256=UJEnoam_MLx2dBxgzjn_zU59f9wwDDNotdsV3ccWZFU,16652
|
|
110
|
-
pygeodesy/rhumb/bases.py,sha256=J8fXg42CcAI1VR4Hz-MctOwUs029PWRTRIo6sSZYo8I,54089
|
|
111
|
-
pygeodesy/rhumb/ekx.py,sha256=GZLJOqAEy_120q27rdt7kyEvkuoBPk6LOhOzjPOTOr8,24084
|
|
112
|
-
pygeodesy/rhumb/solve.py,sha256=EDlLpbnw2FiNANOTau0emk29AEAaJpmckjK_cprvLNA,24035
|
|
113
|
-
PyGeodesy-24.6.9.dist-info/METADATA,sha256=9j-xNRochKcXdPvnUAMAvuX3teuN-uBTTweCnqr7af0,19411
|
|
114
|
-
PyGeodesy-24.6.9.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
|
|
115
|
-
PyGeodesy-24.6.9.dist-info/top_level.txt,sha256=cEQPatCXzKZqrivpULC5V5fuy9_V_bAwaP_gUGid7pQ,10
|
|
116
|
-
PyGeodesy-24.6.9.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|