pygeodesy 24.6.1__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.1.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 +53 -66
- pygeodesy/cartesianBase.py +143 -155
- 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 +49 -55
- pygeodesy/elevations.py +4 -4
- pygeodesy/ellipsoidalBase.py +28 -70
- pygeodesy/ellipsoidalBaseDI.py +19 -23
- pygeodesy/ellipsoidalExact.py +3 -3
- pygeodesy/ellipsoidalGeodSolve.py +15 -23
- pygeodesy/ellipsoidalKarney.py +37 -60
- pygeodesy/ellipsoidalNvector.py +44 -50
- pygeodesy/ellipsoidalVincenty.py +11 -14
- pygeodesy/ellipsoids.py +107 -101
- pygeodesy/errors.py +101 -49
- pygeodesy/etm.py +32 -44
- pygeodesy/formy.py +55 -58
- pygeodesy/frechet.py +20 -23
- pygeodesy/fsums.py +4 -4
- 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 +102 -34
- pygeodesy/geohash.py +39 -60
- pygeodesy/geoids.py +28 -37
- pygeodesy/hausdorff.py +21 -23
- pygeodesy/heights.py +15 -28
- pygeodesy/internals.py +19 -12
- pygeodesy/interns.py +4 -10
- pygeodesy/iters.py +2 -2
- pygeodesy/karney.py +20 -4
- pygeodesy/ktm.py +13 -16
- pygeodesy/latlonBase.py +202 -191
- pygeodesy/lazily.py +96 -59
- pygeodesy/lcc.py +29 -32
- pygeodesy/ltp.py +43 -24
- pygeodesy/ltpTuples.py +190 -183
- pygeodesy/mgrs.py +35 -9
- pygeodesy/named.py +106 -72
- pygeodesy/namedTuples.py +43 -14
- pygeodesy/nvectorBase.py +23 -27
- pygeodesy/osgr.py +9 -9
- pygeodesy/points.py +7 -7
- 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 +8 -61
- pygeodesy/solveBase.py +22 -19
- pygeodesy/sphericalBase.py +26 -21
- pygeodesy/sphericalNvector.py +13 -13
- pygeodesy/sphericalTrigonometry.py +86 -97
- pygeodesy/streprs.py +8 -36
- pygeodesy/trf.py +3 -3
- pygeodesy/triaxials.py +117 -91
- pygeodesy/units.py +229 -321
- pygeodesy/unitsBase.py +116 -108
- pygeodesy/ups.py +26 -31
- pygeodesy/utily.py +12 -11
- pygeodesy/utm.py +35 -40
- pygeodesy/utmups.py +43 -46
- pygeodesy/utmupsBase.py +9 -10
- pygeodesy/vector3d.py +59 -62
- pygeodesy/vector3dBase.py +17 -15
- pygeodesy/webmercator.py +19 -21
- pygeodesy/wgrs.py +18 -20
- PyGeodesy-24.6.1.dist-info/RECORD +0 -116
- {PyGeodesy-24.6.1.dist-info → PyGeodesy-24.6.24.dist-info}/WHEEL +0 -0
- {PyGeodesy-24.6.1.dist-info → PyGeodesy-24.6.24.dist-info}/top_level.txt +0 -0
pygeodesy/internals.py
CHANGED
|
@@ -31,8 +31,14 @@ def _dunder_nameof(inst, *dflt):
|
|
|
31
31
|
return dflt[0] if dflt else inst.__class__.__name__
|
|
32
32
|
|
|
33
33
|
|
|
34
|
+
def _dunder_nameof_(*names__): # in .errors._IsnotError
|
|
35
|
+
'''(INTERNAL) Yield the _dunder_nameof or name.
|
|
36
|
+
'''
|
|
37
|
+
return map(_dunder_nameof, names__, names__)
|
|
38
|
+
|
|
39
|
+
|
|
34
40
|
def _Property_RO(method):
|
|
35
|
-
'''(INTERNAL) Can't
|
|
41
|
+
'''(INTERNAL) Can't I{recursively} import L{props.property_RO}.
|
|
36
42
|
'''
|
|
37
43
|
name = _dunder_nameof(method)
|
|
38
44
|
|
|
@@ -53,7 +59,7 @@ def _Property_RO(method):
|
|
|
53
59
|
return property(_get, _set, _del)
|
|
54
60
|
|
|
55
61
|
|
|
56
|
-
class
|
|
62
|
+
class _MODS_Base(object):
|
|
57
63
|
'''(INTERNAL) Base-class for C{lazily._ALL_MODS}.
|
|
58
64
|
'''
|
|
59
65
|
def __delattr__(self, attr): # PYCHOK no cover
|
|
@@ -207,7 +213,7 @@ class _ALL_MODS_Base(object):
|
|
|
207
213
|
from pygeodesy import streprs # DON'T _lazy_import2
|
|
208
214
|
return streprs
|
|
209
215
|
|
|
210
|
-
_MODS =
|
|
216
|
+
_MODS = _MODS_Base() # PYCHOK overwritten by .lazily
|
|
211
217
|
|
|
212
218
|
|
|
213
219
|
def _caller3(up): # in .lazily, .named
|
|
@@ -217,8 +223,9 @@ def _caller3(up): # in .lazily, .named
|
|
|
217
223
|
# sys._getframe(1) ... 'importlib._bootstrap' line 1032,
|
|
218
224
|
# may throw a ValueError('call stack not deep enough')
|
|
219
225
|
f = _sys._getframe(up + 1)
|
|
220
|
-
|
|
221
|
-
|
|
226
|
+
c = f.f_code
|
|
227
|
+
return (c.co_name, # caller name
|
|
228
|
+
_os_path.basename(c.co_filename), # file name .py
|
|
222
229
|
f.f_lineno) # line number
|
|
223
230
|
|
|
224
231
|
|
|
@@ -359,7 +366,7 @@ def _plural(noun, n):
|
|
|
359
366
|
return NN(noun, _s_) if n > 1 else (noun if n else NN)
|
|
360
367
|
|
|
361
368
|
|
|
362
|
-
def print_(*args, **
|
|
369
|
+
def print_(*args, **nl_nt_prec_prefix__end_file_flush_sep__kwds): # PYCHOK no cover
|
|
363
370
|
'''Python 3+ C{print}-like formatting and printing.
|
|
364
371
|
|
|
365
372
|
@arg args: Values to be converted to C{str} and joined by B{C{sep}},
|
|
@@ -367,16 +374,16 @@ def print_(*args, **nl_nt_prec_prefix__end_file_flush_sep_kwds): # PYCHOK no co
|
|
|
367
374
|
|
|
368
375
|
@see: Function L{printf} for further details.
|
|
369
376
|
'''
|
|
370
|
-
return printf(NN, *args, **
|
|
377
|
+
return printf(NN, *args, **nl_nt_prec_prefix__end_file_flush_sep__kwds)
|
|
371
378
|
|
|
372
379
|
|
|
373
|
-
def printf(fmt, *args, **
|
|
380
|
+
def printf(fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep__kwds):
|
|
374
381
|
'''C{Printf-style} and Python 3+ C{print}-like formatting and printing.
|
|
375
382
|
|
|
376
383
|
@arg fmt: U{Printf-style<https://Docs.Python.org/3/library/stdtypes.html#
|
|
377
384
|
printf-style-string-formatting>} format specification (C{str}).
|
|
378
385
|
@arg args: Arguments to be formatted (any C{type}, all positional).
|
|
379
|
-
@kwarg
|
|
386
|
+
@kwarg nl_nt_prec_prefix__end_file_flush_sep__kwds: Optional keyword arguments
|
|
380
387
|
C{B{nl}=0} for the number of leading blank lines (C{int}), C{B{nt}=0}
|
|
381
388
|
the number of trailing blank lines (C{int}), C{B{prefix}=NN} to be
|
|
382
389
|
inserted before the formatted text (C{str}) and Python 3+ C{print}
|
|
@@ -387,7 +394,7 @@ def printf(fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep_kwds):
|
|
|
387
394
|
|
|
388
395
|
@return: Number of bytes written.
|
|
389
396
|
'''
|
|
390
|
-
b, e, f, fl, p, s, kwds = _print7(**
|
|
397
|
+
b, e, f, fl, p, s, kwds = _print7(**nl_nt_prec_prefix__end_file_flush_sep__kwds)
|
|
391
398
|
try:
|
|
392
399
|
if args:
|
|
393
400
|
t = (fmt % args) if fmt else s.join(map(str, args))
|
|
@@ -399,7 +406,7 @@ def printf(fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep_kwds):
|
|
|
399
406
|
except Exception as x:
|
|
400
407
|
_E, s = _MODS.errors._xError2(x)
|
|
401
408
|
unstr = _MODS.streprs.unstr
|
|
402
|
-
t = unstr(printf, fmt, *args, **
|
|
409
|
+
t = unstr(printf, fmt, *args, **nl_nt_prec_prefix__end_file_flush_sep__kwds)
|
|
403
410
|
raise _E(s, txt=t, cause=x)
|
|
404
411
|
try:
|
|
405
412
|
n = f.write(NN(b, t, e))
|
|
@@ -543,7 +550,7 @@ def _version_ints(vs):
|
|
|
543
550
|
|
|
544
551
|
|
|
545
552
|
__all__ = tuple(map(_dunder_nameof, (machine, print_, printf)))
|
|
546
|
-
__version__ = '24.05
|
|
553
|
+
__version__ = '24.06.05'
|
|
547
554
|
|
|
548
555
|
if _dunder_ismain(__name__): # PYCHOK no cover
|
|
549
556
|
|
pygeodesy/interns.py
CHANGED
|
@@ -10,8 +10,8 @@ except NameError: # Python 3+
|
|
|
10
10
|
_intern = _sys.intern
|
|
11
11
|
|
|
12
12
|
_COMMASPACE_ = ', ' # overriden below
|
|
13
|
-
|
|
14
|
-
# ... make._dist, MANIFEST, setup.setup, test.bases,
|
|
13
|
+
_SUB_PACKAGES = 'auxilats', 'deprecated', 'geodesicx', 'rhumb' # PYCHOK in ...
|
|
14
|
+
# ... .lazily, make._dist, MANIFEST, setup.setup, test.bases, .testModules
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class _Dash(str):
|
|
@@ -32,7 +32,7 @@ class _Int(int):
|
|
|
32
32
|
class Str_(str):
|
|
33
33
|
'''Extended, I{callable} C{str} class, not nameable.
|
|
34
34
|
|
|
35
|
-
@see: Nameable and callable class L{pygeodesy.Str}.
|
|
35
|
+
@see: Nameable and callable class L{Str<pygeodesy.unitsBase.Str>}.
|
|
36
36
|
'''
|
|
37
37
|
def join_(self, *args):
|
|
38
38
|
'''Join all positional B{C{args}} like C{self.join(B{args})}.
|
|
@@ -145,7 +145,6 @@ _and_ = 'and' # PYCHOK OK
|
|
|
145
145
|
# _AND_ = _AMPERSAND_ # PYCHOK OK
|
|
146
146
|
_angle_ = 'angle' # PYCHOK OK
|
|
147
147
|
_antipodal_ = 'antipodal' # PYCHOK OK
|
|
148
|
-
_areaOf_ = 'areaOf' # PYCHOK OK
|
|
149
148
|
_arg_ = 'arg' # PYCHOK OK
|
|
150
149
|
# _ASTERISK_ = _STAR_ # PYCHOK OK
|
|
151
150
|
_AT_ = Str_('@') # PYCHOK OK
|
|
@@ -214,7 +213,6 @@ _ELLIPSIS4_ = Str_('....') # PYCHOK OK
|
|
|
214
213
|
# _ELLIPSISPACED_ = Str_(' ... ') # PYCHOK <https://www.ThePunctuationGuide.com/ellipses.html>
|
|
215
214
|
_ellipsoid_ = 'ellipsoid' # PYCHOK OK
|
|
216
215
|
_ellipsoidal_ = 'ellipsoidal' # PYCHOK OK
|
|
217
|
-
_enabled_ = 'enabled' # PYCHOK OK
|
|
218
216
|
_encode_ = 'encode' # PYCHOK OK
|
|
219
217
|
_end_ = 'end' # PYCHOK OK
|
|
220
218
|
_epoch_ = 'epoch' # PYCHOK OK
|
|
@@ -254,8 +252,6 @@ _intersection_ = 'intersection' # PYCHOK OK
|
|
|
254
252
|
_Intl1924_ = 'Intl1924' # PYCHOK OK
|
|
255
253
|
_invalid_ = 'invalid' # PYCHOK OK
|
|
256
254
|
_invokation_ = 'invokation' # PYCHOK OK
|
|
257
|
-
_isclockwise_ = 'isclockwise' # PYCHOK OK
|
|
258
|
-
_ispolar_ = 'ispolar' # PYCHOK OK
|
|
259
255
|
_j_ = 'j' # PYCHOK OK
|
|
260
256
|
_k0_ = 'k0' # PYCHOK OK
|
|
261
257
|
_keyword_ = 'keyword' # PYCHOK OK
|
|
@@ -317,7 +313,6 @@ _NLHASH_ = Str_(_NL_ + '# ') # PYCHOK OK
|
|
|
317
313
|
_NN_ = 'NN' # PYCHOK OK
|
|
318
314
|
_no_ = _Prefix('no') # PYCHOK OK
|
|
319
315
|
_northing_ = 'northing' # PYCHOK OK
|
|
320
|
-
_NorthPole_ = 'NorthPole' # PYCHOK OK
|
|
321
316
|
_not_ = _Prefix('not') # PYCHOK OK
|
|
322
317
|
_NOTEQUAL_ = _BANG_ + _EQUAL_ # PYCHOK OK
|
|
323
318
|
_not_finite_ = 'not finite' # PYCHOK _not_(_finite_), _infinite_
|
|
@@ -385,7 +380,6 @@ _SLASH_ = Str_('/') # PYCHOK OK
|
|
|
385
380
|
_small_ = 'small' # PYCHOK OK
|
|
386
381
|
_Sphere_ = 'Sphere' # PYCHOK OK
|
|
387
382
|
_spherical_ = 'spherical' # PYCHOK OK
|
|
388
|
-
_SouthPole_ = 'SouthPole' # PYCHOK OK
|
|
389
383
|
_SPACE_ = Str_(' ') # PYCHOK OK
|
|
390
384
|
_specified_ = 'specified' # PYCHOK OK
|
|
391
385
|
_STAR_ = Str_('*') # PYCHOK OK
|
|
@@ -447,7 +441,7 @@ _LR_PAIRS = {_LANGLE_: _RANGLE_,
|
|
|
447
441
|
|
|
448
442
|
__all__ = (_NN_, # NOT MISSING!
|
|
449
443
|
Str_.__name__) # classes
|
|
450
|
-
__version__ = '24.
|
|
444
|
+
__version__ = '24.06.14'
|
|
451
445
|
|
|
452
446
|
if __name__ == '__main__':
|
|
453
447
|
|
pygeodesy/iters.py
CHANGED
|
@@ -26,7 +26,7 @@ from pygeodesy.units import Int, Radius
|
|
|
26
26
|
from pygeodesy.utily import degrees2m, _Wrap, _1_0
|
|
27
27
|
|
|
28
28
|
__all__ = _ALL_LAZY.iters
|
|
29
|
-
__version__ = '24.
|
|
29
|
+
__version__ = '24.06.09'
|
|
30
30
|
|
|
31
31
|
_items_ = 'items'
|
|
32
32
|
_iterNumpy2len = 1 # adjustable for testing purposes
|
|
@@ -83,7 +83,7 @@ class _BaseIter(_Named):
|
|
|
83
83
|
try:
|
|
84
84
|
self._loop = tuple(self.next for _ in range(loop))
|
|
85
85
|
if self.loop != loop:
|
|
86
|
-
raise RuntimeError # force Error
|
|
86
|
+
raise RuntimeError() # force Error
|
|
87
87
|
except (RuntimeError, StopIteration):
|
|
88
88
|
raise self._Error(self.name, self.loop, txt=_too_(_few_))
|
|
89
89
|
|
pygeodesy/karney.py
CHANGED
|
@@ -160,7 +160,7 @@ from pygeodesy.utily import atan2d, sincos2d, tand, _unrollon, fabs
|
|
|
160
160
|
# from math import fabs # from .utily
|
|
161
161
|
|
|
162
162
|
__all__ = _ALL_LAZY.karney
|
|
163
|
-
__version__ = '24.
|
|
163
|
+
__version__ = '24.06.27'
|
|
164
164
|
|
|
165
165
|
_K_2_0 = _getenv('PYGEODESY_GEOGRAPHICLIB', _2_) == _2_
|
|
166
166
|
_perimeter_ = 'perimeter'
|
|
@@ -213,7 +213,7 @@ class Caps(object): # PYCHOK
|
|
|
213
213
|
EMPTY = 0 # formerly aka NONE
|
|
214
214
|
_CAP_1 = 1 << 0 # for goedesicw only
|
|
215
215
|
_CAP_1p = 1 << 1 # for goedesicw only
|
|
216
|
-
|
|
216
|
+
_CAP_2 = 1 << 2
|
|
217
217
|
_CAP_3 = 1 << 3 # for goedesicw only
|
|
218
218
|
# _CAP_4 = 1 << 4
|
|
219
219
|
# _CAP_ALL = 0x1F
|
|
@@ -233,7 +233,9 @@ class Caps(object): # PYCHOK
|
|
|
233
233
|
_DIRECT3 = AZIMUTH | LATITUDE | LONGITUDE | _CAP_3 # for goedesicw only
|
|
234
234
|
_INVERSE3 = AZIMUTH | DISTANCE | _CAP_1 # for goedesicw only
|
|
235
235
|
_STD = STANDARD | _CAP_3 | _CAP_1 # for goedesicw only
|
|
236
|
-
_STD_LINE = _STD | _CAP_1p
|
|
236
|
+
_STD_LINE = _STD | _CAP_2 | _CAP_1p # for goedesici and -w
|
|
237
|
+
|
|
238
|
+
LINE_CAPS = _STD_LINE | REDUCEDLENGTH | GEODESICSCALE # .geodesici only
|
|
237
239
|
|
|
238
240
|
LINE_OFF = 1 << 15 # Line without updates from parent geodesic or rhumb
|
|
239
241
|
LONG_UNROLL = 1 << 16 # unroll C{lon2} in .Direct and .Position
|
|
@@ -308,6 +310,10 @@ and C{ALL} - all of the above.
|
|
|
308
310
|
|
|
309
311
|
C{STANDARD} = C{AZIMUTH | DISTANCE | DISTANCE_IN | LATITUDE | LONGITUDE}'''
|
|
310
312
|
|
|
313
|
+
_KEY2Caps = dict(m12=Caps.REDUCEDLENGTH, # see GDict._unCaps
|
|
314
|
+
M12=Caps.GEODESICSCALE,
|
|
315
|
+
M21=Caps.GEODESICSCALE, S12=Caps.AREA)
|
|
316
|
+
|
|
311
317
|
|
|
312
318
|
class _CapsBase(_NamedBase): # in .auxilats, .geodesicx.gxbases
|
|
313
319
|
'''(INTERNAL) Base class for C{[_]Geodesic*Exact}.
|
|
@@ -320,11 +326,13 @@ class _CapsBase(_NamedBase): # in .auxilats, .geodesicx.gxbases
|
|
|
320
326
|
EMPTY = Caps.EMPTY # aka NONE
|
|
321
327
|
GEODESICSCALE = Caps.GEODESICSCALE
|
|
322
328
|
LATITUDE = Caps.LATITUDE
|
|
329
|
+
LINE_CAPS = Caps.LINE_CAPS
|
|
323
330
|
LINE_OFF = Caps.LINE_OFF
|
|
324
331
|
LONGITUDE = Caps.LONGITUDE
|
|
325
332
|
LONG_UNROLL = Caps.LONG_UNROLL
|
|
326
333
|
REDUCEDLENGTH = Caps.REDUCEDLENGTH
|
|
327
334
|
STANDARD = Caps.STANDARD
|
|
335
|
+
_STD_LINE = Caps._STD_LINE # for geodesici
|
|
328
336
|
|
|
329
337
|
_caps = 0 # None
|
|
330
338
|
_debug = 0 # or Caps._DEBUG_...
|
|
@@ -453,6 +461,14 @@ class GDict(ADict): # XXX _NamedDict
|
|
|
453
461
|
t = tuple(_g(self, n, dflt) for n in nTuple._Names_)
|
|
454
462
|
return nTuple(t, iteration=self._iteration)
|
|
455
463
|
|
|
464
|
+
def _unCaps(self, outmask): # in .geodsolve
|
|
465
|
+
'''(INTERNAL) Remove superfluous items.
|
|
466
|
+
'''
|
|
467
|
+
for k, m in _KEY2Caps.items():
|
|
468
|
+
if k in self and not (outmask & m):
|
|
469
|
+
self.pop(k) # delattr(self, k)
|
|
470
|
+
return self
|
|
471
|
+
|
|
456
472
|
|
|
457
473
|
class Inverse10Tuple(_GTuple):
|
|
458
474
|
'''10-Tuple C{(a12, s12, salp1, calp1, salp2, calp2, m12, M12, M21, S12)} with arc length
|
|
@@ -882,7 +898,7 @@ def _unroll2(lon1, lon2, wrap=False): # see .ellipsoidalBaseDI._intersects2
|
|
|
882
898
|
'''Unroll B{C{lon2 - lon1}} like C{geodesic.Geodesic.Inverse}.
|
|
883
899
|
|
|
884
900
|
@return: 2-Tuple C{(B{lon2} - B{lon1}, B{lon2})} with B{C{lon2}}
|
|
885
|
-
unrolled if B{
|
|
901
|
+
unrolled if C{B{wrap} is True}, normalized otherwise.
|
|
886
902
|
'''
|
|
887
903
|
if wrap:
|
|
888
904
|
d, t = _diff182(lon1, lon2)
|
pygeodesy/ktm.py
CHANGED
|
@@ -67,7 +67,7 @@ from cmath import polar
|
|
|
67
67
|
from math import atan2, asinh, cos, cosh, degrees, fabs, sin, sinh, sqrt, tanh
|
|
68
68
|
|
|
69
69
|
__all__ = _ALL_LAZY.ktm
|
|
70
|
-
__version__ = '24.
|
|
70
|
+
__version__ = '24.06.11'
|
|
71
71
|
|
|
72
72
|
|
|
73
73
|
class KTMError(_ValueError):
|
|
@@ -119,18 +119,16 @@ class KTransverseMercator(_NamedBase):
|
|
|
119
119
|
raiser=False, **TMorder_name):
|
|
120
120
|
'''New L{KTransverseMercator}.
|
|
121
121
|
|
|
122
|
-
@kwarg a_earth: This rhumb's earth (L{Ellipsoid}, L{Ellipsoid2},
|
|
123
|
-
L{
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
is a C{scalar}, ignored otherwise.
|
|
122
|
+
@kwarg a_earth: This rhumb's earth (L{Ellipsoid}, L{Ellipsoid2}, L{a_f2Tuple},
|
|
123
|
+
L{Datum}, 2-tuple (C{a, f})) or the equatorial radius (C{meter}).
|
|
124
|
+
@kwarg f: The ellipsoid's flattening (C{scalar}), required if B{C{a_earth}} is
|
|
125
|
+
is C{meter}, ignored otherwise.
|
|
127
126
|
@kwarg lon0: The central meridian (C{degrees180}).
|
|
128
127
|
@kwarg k0: Central scale factor (C{scalar}).
|
|
129
|
-
@kwarg raiser: If C{True}, throw a L{KTMError} for C{forward}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
this L{KTransverseMercator}, see property C{TMorder}.
|
|
128
|
+
@kwarg raiser: If C{True}, throw a L{KTMError} for C{forward} singularities (C{bool}).
|
|
129
|
+
@kwarg TMorder_name: Optional C{B{name}=NN} (C{str}) and optional keyword argument
|
|
130
|
+
C{B{TMorder}=6} for the order of this L{KTransverseMercator}, see
|
|
131
|
+
property C{TMorder}.
|
|
134
132
|
|
|
135
133
|
@raise KTMError: Invalid B{C{a_earth}}, B{C{f}} or B{C{TMorder}}.
|
|
136
134
|
'''
|
|
@@ -229,14 +227,13 @@ class KTransverseMercator(_NamedBase):
|
|
|
229
227
|
@arg lon0: Central meridian of the projection (C{degrees180}).
|
|
230
228
|
@kwarg name: Optional C{B{name}=NN} (C{str}).
|
|
231
229
|
|
|
232
|
-
@return: L{Forward4Tuple}C{(easting, northing, gamma, scale)}
|
|
233
|
-
|
|
230
|
+
@return: L{Forward4Tuple}C{(easting, northing, gamma, scale)} with
|
|
231
|
+
C{easting} and C{northing} in C{meter}, unfalsed, the
|
|
234
232
|
meridian convergence C{gamma} at point in C{degrees180}
|
|
235
233
|
and the C{scale} of projection at point C{scalar}. Any
|
|
236
234
|
value may be C{NAN}, C{NINF} or C{INF} for singularities.
|
|
237
235
|
|
|
238
|
-
@raise KTMError: For singularities, iff property C{raiser} is
|
|
239
|
-
C{True}.
|
|
236
|
+
@raise KTMError: For singularities, iff property C{raiser} is C{True}.
|
|
240
237
|
'''
|
|
241
238
|
lat, _lat = _unsigned2(_fix90(lat - self._lat0))
|
|
242
239
|
lon, _ = _diff182((self.lon0 if lon0 is None else lon0), lon)
|
|
@@ -343,7 +340,7 @@ class KTransverseMercator(_NamedBase):
|
|
|
343
340
|
@arg lat0: Latitude of the central parallel (C{degrees90}).
|
|
344
341
|
@arg lon0: Longitude of the central parallel (C{degrees180}).
|
|
345
342
|
|
|
346
|
-
@return: 2-Tuple C{(lat0, lon0)}
|
|
343
|
+
@return: 2-Tuple C{(lat0, lon0)} with the previous central
|
|
347
344
|
parallel and meridian.
|
|
348
345
|
|
|
349
346
|
@raise KTMError: Invalid B{C{lat0}} or B{C{lon0}}.
|