pygeodesy 25.5.5__py2.py3-none-any.whl → 25.5.25__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/__init__.py +186 -186
- pygeodesy/__main__.py +2 -2
- pygeodesy/albers.py +4 -4
- pygeodesy/auxilats/_CX_Rs.py +3 -3
- pygeodesy/auxilats/auxAngle.py +2 -2
- pygeodesy/auxilats/auxDLat.py +2 -2
- pygeodesy/auxilats/auxDST.py +2 -2
- pygeodesy/auxilats/auxLat.py +2 -2
- pygeodesy/auxilats/auxily.py +2 -2
- pygeodesy/azimuthal.py +2 -2
- pygeodesy/booleans.py +2 -2
- pygeodesy/cartesianBase.py +2 -2
- pygeodesy/clipy.py +2 -2
- pygeodesy/constants.py +2 -2
- pygeodesy/datums.py +2 -2
- pygeodesy/deprecated/__init__.py +8 -8
- pygeodesy/deprecated/bases.py +2 -2
- pygeodesy/deprecated/rhumbBase.py +2 -2
- pygeodesy/deprecated/rhumbaux.py +2 -2
- pygeodesy/deprecated/rhumbsolve.py +2 -2
- pygeodesy/deprecated/rhumbx.py +2 -2
- pygeodesy/ecef.py +3 -4
- pygeodesy/ellipsoidalBase.py +2 -2
- pygeodesy/ellipsoidalBaseDI.py +7 -6
- pygeodesy/ellipsoidalExact.py +3 -3
- pygeodesy/ellipsoidalNvector.py +4 -4
- pygeodesy/ellipsoidalVincenty.py +15 -14
- pygeodesy/ellipsoids.py +4 -4
- pygeodesy/elliptic.py +2 -2
- pygeodesy/errors.py +1 -1
- pygeodesy/etm.py +2 -2
- pygeodesy/fmath.py +9 -9
- pygeodesy/formy.py +2 -2
- pygeodesy/frechet.py +5 -5
- pygeodesy/fstats.py +2 -2
- pygeodesy/fsums.py +37 -28
- pygeodesy/gars.py +2 -3
- pygeodesy/geodesici.py +4 -4
- pygeodesy/geodesicx/__init__.py +3 -3
- pygeodesy/geodesicx/gx.py +2 -2
- pygeodesy/geodesicx/gxarea.py +2 -2
- pygeodesy/geodesicx/gxline.py +2 -2
- pygeodesy/geoids.py +5 -5
- pygeodesy/hausdorff.py +4 -4
- pygeodesy/heights.py +2 -2
- pygeodesy/iters.py +1 -1
- pygeodesy/karney.py +2 -2
- pygeodesy/ktm.py +2 -2
- pygeodesy/latlonBase.py +3 -4
- pygeodesy/lazily.py +1 -1
- pygeodesy/lcc.py +2 -2
- pygeodesy/ltp.py +5 -5
- pygeodesy/mgrs.py +3 -3
- pygeodesy/namedTuples.py +3 -3
- pygeodesy/nvectorBase.py +2 -2
- pygeodesy/osgr.py +2 -2
- pygeodesy/points.py +2 -3
- pygeodesy/props.py +16 -16
- pygeodesy/resections.py +30 -24
- pygeodesy/rhumb/aux_.py +2 -2
- pygeodesy/rhumb/bases.py +3 -3
- pygeodesy/rhumb/ekx.py +3 -4
- pygeodesy/rhumb/solve.py +2 -2
- pygeodesy/simplify.py +2 -2
- pygeodesy/solveBase.py +2 -2
- pygeodesy/sphericalBase.py +6 -6
- pygeodesy/sphericalNvector.py +2 -2
- pygeodesy/sphericalTrigonometry.py +6 -5
- pygeodesy/trf.py +4 -4
- pygeodesy/triaxials.py +2 -2
- pygeodesy/units.py +7 -8
- pygeodesy/utily.py +2 -2
- pygeodesy/utmupsBase.py +2 -2
- pygeodesy/vector2d.py +13 -7
- pygeodesy/vector3d.py +3 -3
- pygeodesy/webmercator.py +2 -2
- {pygeodesy-25.5.5.dist-info → pygeodesy-25.5.25.dist-info}/METADATA +16 -16
- pygeodesy-25.5.25.dist-info/RECORD +119 -0
- pygeodesy-25.5.5.dist-info/RECORD +0 -119
- {pygeodesy-25.5.5.dist-info → pygeodesy-25.5.25.dist-info}/WHEEL +0 -0
- {pygeodesy-25.5.5.dist-info → pygeodesy-25.5.25.dist-info}/top_level.txt +0 -0
pygeodesy/azimuthal.py
CHANGED
|
@@ -40,7 +40,7 @@ altitude in Earth radii<https://WikiPedia.org/wiki/Azimuthal_equidistant_project
|
|
|
40
40
|
#/media/File:Comparison_azimuthal_projections.svg>}.
|
|
41
41
|
'''
|
|
42
42
|
# make sure int/int division yields float quotient, see .basics
|
|
43
|
-
from __future__ import division as _; del _ #
|
|
43
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
44
44
|
|
|
45
45
|
# from pygeodesy.basics import _isin, _xinstanceof # from .ellipsoidalBase
|
|
46
46
|
from pygeodesy.constants import EPS, EPS0, EPS1, NAN, isnon0, _umod_360, \
|
|
@@ -71,7 +71,7 @@ from pygeodesy.utily import asin1, atan1, atan2, atan2b, atan2d, \
|
|
|
71
71
|
from math import acos, degrees, fabs, sin, sqrt
|
|
72
72
|
|
|
73
73
|
__all__ = _ALL_LAZY.azimuthal
|
|
74
|
-
__version__ = '25.
|
|
74
|
+
__version__ = '25.05.12'
|
|
75
75
|
|
|
76
76
|
_EPS_K = _EPStol * _0_1 # Karney's eps_ or _EPSmin * _0_1?
|
|
77
77
|
_over_horizon_ = 'over horizon'
|
pygeodesy/booleans.py
CHANGED
|
@@ -15,7 +15,7 @@ C{reverse-difference}, C{sum} and C{union}.
|
|
|
15
15
|
<http://www.Inf.USI.CH/hormann/papers/Greiner.1998.ECO.pdf>}.
|
|
16
16
|
'''
|
|
17
17
|
# make sure int/int division yields float quotient, see .basics
|
|
18
|
-
from __future__ import division as _; del _ #
|
|
18
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
19
19
|
|
|
20
20
|
from pygeodesy.basics import _isin, isodd, issubclassof, map2, \
|
|
21
21
|
_xscalar, typename
|
|
@@ -45,7 +45,7 @@ from pygeodesy.utily import fabs, _unrollon, _Wrap
|
|
|
45
45
|
# from math import fabs # from .utily
|
|
46
46
|
|
|
47
47
|
__all__ = _ALL_LAZY.booleans
|
|
48
|
-
__version__ = '25.
|
|
48
|
+
__version__ = '25.05.12'
|
|
49
49
|
|
|
50
50
|
_0EPS = EPS # near-zero, positive
|
|
51
51
|
_EPS0 = -EPS # near-zero, negative
|
pygeodesy/cartesianBase.py
CHANGED
|
@@ -28,7 +28,7 @@ from pygeodesy.interns import _ellipsoidal_, _spherical_ # PYCHOK used!
|
|
|
28
28
|
from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS
|
|
29
29
|
from pygeodesy.named import _name2__, _Pass
|
|
30
30
|
from pygeodesy.namedTuples import LatLon4Tuple, _NamedTupleTo , Vector3Tuple, \
|
|
31
|
-
Vector4Tuple
|
|
31
|
+
Vector4Tuple
|
|
32
32
|
# from pygeodesy.nvectorBase import _N_vector # _MODS
|
|
33
33
|
from pygeodesy.props import deprecated_method, Property, Property_RO, property_doc_, \
|
|
34
34
|
property_RO, _update_all
|
|
@@ -44,7 +44,7 @@ from pygeodesy.vector3d import Vector3d, _xyzhdlln4
|
|
|
44
44
|
# from math import degrees, fabs, radians, sqrt # from .fmath, .utily
|
|
45
45
|
|
|
46
46
|
__all__ = _ALL_LAZY.cartesianBase
|
|
47
|
-
__version__ = '25.
|
|
47
|
+
__version__ = '25.05.07'
|
|
48
48
|
|
|
49
49
|
_r_ = 'r'
|
|
50
50
|
_resections = _MODS.into(resections=__name__)
|
pygeodesy/clipy.py
CHANGED
|
@@ -10,7 +10,7 @@ I{Greiner-Hormann} and L{clipSH} and L{clipSH3} I{Sutherland-Hodgeman}.
|
|
|
10
10
|
.
|
|
11
11
|
'''
|
|
12
12
|
# make sure int/int division yields float quotient, see .basics
|
|
13
|
-
from __future__ import division as _; del _ #
|
|
13
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
14
14
|
|
|
15
15
|
from pygeodesy.basics import len2, typename
|
|
16
16
|
from pygeodesy.constants import EPS, _0_0, _1_0
|
|
@@ -31,7 +31,7 @@ from pygeodesy.units import Bool, FIx, HeightX, Lat, Lon, Number_
|
|
|
31
31
|
# from math import fabs # from .fmath
|
|
32
32
|
|
|
33
33
|
__all__ = _ALL_LAZY.clipy
|
|
34
|
-
__version__ = '25.
|
|
34
|
+
__version__ = '25.05.12'
|
|
35
35
|
|
|
36
36
|
_fj_ = 'fj'
|
|
37
37
|
_original_ = 'original'
|
pygeodesy/constants.py
CHANGED
|
@@ -8,7 +8,7 @@ L{pygeodesy.isnear1}, L{pygeodesy.isnear90}, L{pygeodesy.isneg0}, L{pygeodesy.is
|
|
|
8
8
|
L{pygeodesy.isnon0} and L{pygeodesy.remainder}.
|
|
9
9
|
'''
|
|
10
10
|
# make sure int/int division yields float quotient, see .basics
|
|
11
|
-
from __future__ import division as _; del _ #
|
|
11
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
12
12
|
|
|
13
13
|
from pygeodesy.basics import _copysign, isbool, iscomplex, isint
|
|
14
14
|
from pygeodesy.errors import _xError, _xError2, _xkwds_get1, _xkwds_item2
|
|
@@ -26,7 +26,7 @@ except ImportError: # Python 2-
|
|
|
26
26
|
_inf, _nan = float(_INF_), float(_NAN_)
|
|
27
27
|
|
|
28
28
|
__all__ = _ALL_LAZY.constants
|
|
29
|
-
__version__ = '25.
|
|
29
|
+
__version__ = '25.05.12'
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
def _copysign_0_0(y):
|
pygeodesy/datums.py
CHANGED
|
@@ -65,7 +65,7 @@ datum, q.v. U{"A Guide to Coordinate Systems in Great Britain", Section 6
|
|
|
65
65
|
@var Transforms.WGS84: Transform(name='WGS84', tx=0.0, ty=0.0, tz=0.0, s1=1.0, rx=0.0, ry=0.0, rz=0.0, s=0.0, sx=0.0, sy=0.0, sz=0.0)
|
|
66
66
|
'''
|
|
67
67
|
# make sure int/int division yields float quotient, see .basics
|
|
68
|
-
from __future__ import division as _; del _ #
|
|
68
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
69
69
|
|
|
70
70
|
from pygeodesy.basics import _isin, islistuple, map2, neg, _xinstanceof, _zip
|
|
71
71
|
from pygeodesy.constants import R_M, _float as _F, _0_0, _1_0, _2_0, _8_0, _3600_0
|
|
@@ -94,7 +94,7 @@ from pygeodesy.units import _isRadius, Radius_, radians
|
|
|
94
94
|
# import operator as _operator # from .fmath
|
|
95
95
|
|
|
96
96
|
__all__ = _ALL_LAZY.datums
|
|
97
|
-
__version__ = '25.
|
|
97
|
+
__version__ = '25.05.12'
|
|
98
98
|
|
|
99
99
|
_a_ellipsoid_ = _UNDER_(_a_, _ellipsoid_)
|
|
100
100
|
_BD72_ = 'BD72'
|
pygeodesy/deprecated/__init__.py
CHANGED
|
@@ -10,13 +10,13 @@ bases} or C{from pygeodesy.deprecated import bases}. Likewise for C{datum} and
|
|
|
10
10
|
C{nvector}.
|
|
11
11
|
'''
|
|
12
12
|
|
|
13
|
-
from pygeodesy.deprecated.bases import * #
|
|
14
|
-
from pygeodesy.deprecated.datum import * #
|
|
15
|
-
from pygeodesy.deprecated.nvector import * #
|
|
13
|
+
from pygeodesy.deprecated.bases import * # noqa: F403 not pygeodesy.__init__
|
|
14
|
+
from pygeodesy.deprecated.datum import * # noqa: F403 not pygeodesy.__init__
|
|
15
|
+
from pygeodesy.deprecated.nvector import * # noqa: F403 not pygeodesy.__init__
|
|
16
16
|
|
|
17
|
-
from pygeodesy.deprecated.classes import * #
|
|
18
|
-
from pygeodesy.deprecated.consterns import * #
|
|
19
|
-
from pygeodesy.deprecated.functions import * #
|
|
17
|
+
from pygeodesy.deprecated.classes import * # noqa: F403
|
|
18
|
+
from pygeodesy.deprecated.consterns import * # noqa: F403
|
|
19
|
+
from pygeodesy.deprecated.functions import * # noqa: F403
|
|
20
20
|
|
|
21
21
|
from pygeodesy.lazily import _ALL_ATTRS, _ALL_DEPRECATED, _lazy_import_as, _unLazy0 # _lazy_import_star
|
|
22
22
|
|
|
@@ -27,11 +27,11 @@ __all__ = (_ALL_DEPRECATED.deprecated_bases +
|
|
|
27
27
|
_ALL_DEPRECATED.deprecated_classes +
|
|
28
28
|
_ALL_DEPRECATED.deprecated_consterns +
|
|
29
29
|
_ALL_DEPRECATED.deprecated_functions)
|
|
30
|
-
__version__ = '
|
|
30
|
+
__version__ = '25.05.12'
|
|
31
31
|
|
|
32
32
|
if _unLazy0:
|
|
33
33
|
from pygeodesy.deprecated import bases, datum, nvector, rhumbBase, \
|
|
34
|
-
rhumbaux, rhumbsolve, rhumbx # PYCHOK expected
|
|
34
|
+
rhumbaux, rhumbsolve, rhumbx # noqa: F401 PYCHOK expected
|
|
35
35
|
__all__ += _ALL_ATTRS(_ALL_DEPRECATED.deprecated) # DEPRECATED modules
|
|
36
36
|
|
|
37
37
|
else: # lazily import modules and exported attrs
|
pygeodesy/deprecated/bases.py
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
u'''DEPRECATED on 2021.02.10, use (INTERNAL) module L{pygeodesy.latlonBase} instead.
|
|
5
5
|
'''
|
|
6
6
|
|
|
7
|
-
from pygeodesy.iters import points2 #
|
|
7
|
+
from pygeodesy.iters import points2 # noqa: F401
|
|
8
8
|
from pygeodesy.latlonBase import LatLonBase as _LatLonBase
|
|
9
9
|
from pygeodesy.lazily import _ALL_DEPRECATED
|
|
10
10
|
|
|
11
11
|
__all__ = _ALL_DEPRECATED.deprecated_bases
|
|
12
|
-
__version__ = '25.
|
|
12
|
+
__version__ = '25.05.12'
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class LatLonHeightBase(_LatLonBase): # PYCHOK no cover
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
u'''DEPRECATED on 2023.11.26, use module L{pygeodesy.rhumb.bases} instead.
|
|
5
5
|
'''
|
|
6
6
|
|
|
7
|
-
from pygeodesy.rhumb.bases import * #
|
|
7
|
+
from pygeodesy.rhumb.bases import * # noqa: F403
|
|
8
8
|
|
|
9
9
|
__all__ = () # _ALL_LAZY.rhumb._bases
|
|
10
|
-
__version__ = '
|
|
10
|
+
__version__ = '25.05.12'
|
|
11
11
|
|
|
12
12
|
# **) MIT License
|
|
13
13
|
#
|
pygeodesy/deprecated/rhumbaux.py
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
u'''DEPRECATED on 2023.11.26, use module L{pygeodesy.rhumb.aux_} instead.
|
|
5
5
|
'''
|
|
6
6
|
|
|
7
|
-
from pygeodesy.rhumb.aux_ import * #
|
|
7
|
+
from pygeodesy.rhumb.aux_ import * # noqa: F403
|
|
8
8
|
from pygeodesy.lazily import _ALL_LAZY
|
|
9
9
|
|
|
10
10
|
__all__ = _ALL_LAZY.rhumb_aux_ # attrs NOT DEPRECATED
|
|
11
|
-
__version__ = '
|
|
11
|
+
__version__ = '25.05.12'
|
|
12
12
|
|
|
13
13
|
# **) MIT License
|
|
14
14
|
#
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
u'''DEPRECATED on 2023.11.26, use module L{pygeodesy.rhumb.solve} instead.
|
|
5
5
|
'''
|
|
6
6
|
|
|
7
|
-
from pygeodesy.rhumb.solve import * #
|
|
7
|
+
from pygeodesy.rhumb.solve import * # noqa: F403
|
|
8
8
|
from pygeodesy.lazily import _ALL_LAZY
|
|
9
9
|
|
|
10
10
|
__all__ = _ALL_LAZY.rhumb_solve # attrs NOT DEPRECATED
|
|
11
|
-
__version__ = '
|
|
11
|
+
__version__ = '25.05.12'
|
|
12
12
|
|
|
13
13
|
# **) MIT License
|
|
14
14
|
#
|
pygeodesy/deprecated/rhumbx.py
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
u'''DEPRECATED on 2023.11.26, use module L{pygeodesy.rhumb.ekx} instead.
|
|
5
5
|
'''
|
|
6
6
|
|
|
7
|
-
from pygeodesy.rhumb.ekx import * #
|
|
7
|
+
from pygeodesy.rhumb.ekx import * # noqa: F403
|
|
8
8
|
from pygeodesy.lazily import _ALL_LAZY
|
|
9
9
|
|
|
10
10
|
__all__ = _ALL_LAZY.rhumb_ekx # attrs NOT DEPRECATED
|
|
11
|
-
__version__ = '
|
|
11
|
+
__version__ = '25.05.12'
|
|
12
12
|
|
|
13
13
|
# **) MIT License
|
|
14
14
|
#
|
pygeodesy/ecef.py
CHANGED
|
@@ -60,9 +60,8 @@ plane} as opposed to I{geocentric} (ECEF) ones.
|
|
|
60
60
|
from pygeodesy.basics import copysign0, _isin, isscalar, issubclassof, neg, map1, \
|
|
61
61
|
_xinstanceof, _xsubclassof, typename # _args_kwds_names
|
|
62
62
|
from pygeodesy.constants import EPS, EPS0, EPS02, EPS1, EPS2, EPS_2, INT0, PI, PI_2, \
|
|
63
|
-
_0_0,
|
|
64
|
-
|
|
65
|
-
_100_0, _copysign_1_0, isnon0 # PYCHOK used!
|
|
63
|
+
_0_0, _0_5, _1_0, _1_0_1T, _2_0, _N_2_0, _3_0, _4_0, \
|
|
64
|
+
_6_0, _90_0, _N_90_0, _copysign_1_0, isnon0 # PYCHOK used!
|
|
66
65
|
from pygeodesy.datums import _ellipsoidal_datum, _WGS84, a_f2Tuple, _EWGS84
|
|
67
66
|
from pygeodesy.ecefLocals import _EcefLocal
|
|
68
67
|
# from pygeodesy.ellipsoids import a_f2Tuple, _EWGS84 # from .datums
|
|
@@ -90,7 +89,7 @@ from pygeodesy.utily import atan1, atan1d, atan2, atan2d, degrees90, degrees180,
|
|
|
90
89
|
from math import cos, degrees, fabs, radians, sqrt
|
|
91
90
|
|
|
92
91
|
__all__ = _ALL_LAZY.ecef
|
|
93
|
-
__version__ = '25.
|
|
92
|
+
__version__ = '25.05.07'
|
|
94
93
|
|
|
95
94
|
_Ecef_ = 'Ecef'
|
|
96
95
|
_prolate_ = 'prolate'
|
pygeodesy/ellipsoidalBase.py
CHANGED
|
@@ -10,7 +10,7 @@ and published under the same MIT Licence**, see for example U{latlon-ellipsoidal
|
|
|
10
10
|
<https://www.Movable-Type.co.UK/scripts/geodesy/docs/latlon-ellipsoidal.js.html>}.
|
|
11
11
|
'''
|
|
12
12
|
# make sure int/int division yields float quotient, see .basics
|
|
13
|
-
from __future__ import division as _; del _ #
|
|
13
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
14
14
|
|
|
15
15
|
# from pygeodesy.azimuthal import EquidistantExact, EquidistantKarney # _MODS
|
|
16
16
|
from pygeodesy.basics import _isin, _xinstanceof
|
|
@@ -46,7 +46,7 @@ from pygeodesy.units import Epoch, _isDegrees, Radius_, _1mm as _TOL_M
|
|
|
46
46
|
# from math import fabs # from .latlonBase
|
|
47
47
|
|
|
48
48
|
__all__ = _ALL_LAZY.ellipsoidalBase
|
|
49
|
-
__version__ = '25.
|
|
49
|
+
__version__ = '25.05.12'
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
class CartesianEllipsoidalBase(CartesianBase):
|
pygeodesy/ellipsoidalBaseDI.py
CHANGED
|
@@ -5,7 +5,7 @@ u'''(INTERNAL) Private, ellipsoidal Direct/Inverse geodesy base
|
|
|
5
5
|
class C{LatLonEllipsoidalBaseDI} and functions.
|
|
6
6
|
'''
|
|
7
7
|
# make sure int/int division yields float quotient, see .basics
|
|
8
|
-
from __future__ import division as _; del _ #
|
|
8
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
9
9
|
|
|
10
10
|
# from pygeodesy.azimuthal import _Equidistants # _MODS
|
|
11
11
|
from pygeodesy.basics import isLatLon, _xsubclassof, typename
|
|
@@ -36,7 +36,7 @@ from pygeodesy.utily import m2km, unroll180, _unrollon, _unrollon3, _Wrap, wrap3
|
|
|
36
36
|
from math import degrees, radians
|
|
37
37
|
|
|
38
38
|
__all__ = _ALL_LAZY.ellipsoidalBaseDI
|
|
39
|
-
__version__ = '25.
|
|
39
|
+
__version__ = '25.05.23'
|
|
40
40
|
|
|
41
41
|
_polar__ = 'polar?'
|
|
42
42
|
_TRIPS = 33 # _intersect3, _intersects2, _nearestOn interations, 6..9 sufficient?
|
|
@@ -115,14 +115,15 @@ class LatLonEllipsoidalBaseDI(LatLonEllipsoidalBase):
|
|
|
115
115
|
r = self._Direct2Tuple(LL, height, r)
|
|
116
116
|
return r
|
|
117
117
|
|
|
118
|
-
def _Direct2Tuple(self, LL, height, r):
|
|
118
|
+
def _Direct2Tuple(self, LL, height, r): # in .ellipsoidalVincenty.py
|
|
119
119
|
'''(INTERNAL) Helper for C{._Direct} result L{Destination2Tuple}.
|
|
120
120
|
'''
|
|
121
121
|
h = self._heigHt(height)
|
|
122
|
-
|
|
122
|
+
n = self.name
|
|
123
|
+
d = _xkwds_not(None, datum=self.datum, height=h, name=n,
|
|
123
124
|
epoch=self.epoch, reframe=self.reframe)
|
|
124
|
-
d = LL(*_Wrap.latlon(r.lat, r.lon),
|
|
125
|
-
return Destination2Tuple(d, wrap360(r.final), name=
|
|
125
|
+
d = LL(*_Wrap.latlon(r.lat, r.lon), **d)
|
|
126
|
+
return Destination2Tuple(d, wrap360(r.final), name=n)
|
|
126
127
|
|
|
127
128
|
def distanceTo(self, other, wrap=False, **unused): # radius=R_M
|
|
128
129
|
'''Compute the distance between this and an other point along
|
pygeodesy/ellipsoidalExact.py
CHANGED
|
@@ -11,12 +11,12 @@ L{GeodesicExact}, L{GeodesicAreaExact} and L{GeodesicLineExact}.
|
|
|
11
11
|
|
|
12
12
|
# from pygeodesy.datums import _WGS84 # from .ellipsoidalBase
|
|
13
13
|
from pygeodesy.ellipsoidalBase import CartesianEllipsoidalBase, \
|
|
14
|
-
_nearestOn,
|
|
14
|
+
_nearestOn, _WGS84
|
|
15
15
|
from pygeodesy.ellipsoidalBaseDI import LatLonEllipsoidalBaseDI, \
|
|
16
16
|
_intersection3, _intersections2, \
|
|
17
17
|
_TOL_M, intersecant2
|
|
18
18
|
# from pygeodesy.errors import _xkwds # from .karney
|
|
19
|
-
from pygeodesy.karney import fabs,
|
|
19
|
+
from pygeodesy.karney import _polygon, fabs, Property_RO, _xkwds
|
|
20
20
|
from pygeodesy.lazily import _ALL_LAZY, _ALL_MODS as _MODS, _ALL_OTHER
|
|
21
21
|
from pygeodesy.points import _areaError, ispolar # PYCHOK exported
|
|
22
22
|
# from pygeodesy.props import Property_RO # from .karney
|
|
@@ -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__ = '
|
|
27
|
+
__version__ = '25.05.12'
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class Cartesian(CartesianEllipsoidalBase):
|
pygeodesy/ellipsoidalNvector.py
CHANGED
|
@@ -21,7 +21,7 @@ See also I{Kenneth Gade} U{'A Non-singular Horizontal Position Representation'
|
|
|
21
21
|
The Journal of Navigation (2010), vol 63, nr 3, pp 395-417.
|
|
22
22
|
'''
|
|
23
23
|
# make sure int/int division yields float quotient, see .basics
|
|
24
|
-
from __future__ import division as _; del _ #
|
|
24
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
25
25
|
|
|
26
26
|
from pygeodesy.basics import _isin, issubclassof, map2, _xinstanceof, \
|
|
27
27
|
_xsubclassof
|
|
@@ -32,7 +32,7 @@ from pygeodesy.ellipsoidalBase import CartesianEllipsoidalBase, \
|
|
|
32
32
|
_nearestOn, LatLonEllipsoidalBase, \
|
|
33
33
|
_TOL_M, _Wrap
|
|
34
34
|
from pygeodesy.errors import _xkwds, _xkwds_pop2
|
|
35
|
-
|
|
35
|
+
from pygeodesy.fmath import fdot, fabs
|
|
36
36
|
# from pygeodesy.formy import _isequalTo # _MODS
|
|
37
37
|
from pygeodesy.interns import _Nv00_, _COMMASPACE_, _pole_ # PYCHOK used!
|
|
38
38
|
from pygeodesy.lazily import _ALL_LAZY, _ALL_MODS as _MODS, _ALL_OTHER
|
|
@@ -41,7 +41,7 @@ from pygeodesy.ltpTuples import Aer as _Aer, Ned as _Ned, Ned4Tuple, \
|
|
|
41
41
|
sincos2d_, _xnamed
|
|
42
42
|
# from pygeodesy.named import _xnamed # from .ltpTuples
|
|
43
43
|
from pygeodesy.nvectorBase import LatLonNvectorBase, NorthPole, NvectorBase, \
|
|
44
|
-
sumOf as _sumOf
|
|
44
|
+
sumOf as _sumOf
|
|
45
45
|
from pygeodesy.props import deprecated_class, deprecated_function, \
|
|
46
46
|
deprecated_method, Property_RO, property_RO
|
|
47
47
|
from pygeodesy.streprs import Fmt, fstr, _xzipairs
|
|
@@ -51,7 +51,7 @@ from pygeodesy.units import Bearing, Distance, Height, Scalar
|
|
|
51
51
|
# from math import fabs # from .nvectorBase
|
|
52
52
|
|
|
53
53
|
__all__ = _ALL_LAZY.ellipsoidalNvector
|
|
54
|
-
__version__ = '25.
|
|
54
|
+
__version__ = '25.05.12'
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
class Ned(_Ned):
|
pygeodesy/ellipsoidalVincenty.py
CHANGED
|
@@ -48,7 +48,7 @@ or by converting to anothor datum:
|
|
|
48
48
|
>>> p = p.toDatum(Datums.OSGB36)
|
|
49
49
|
'''
|
|
50
50
|
# make sure int/int division yields float quotient, see .basics
|
|
51
|
-
from __future__ import division as _; del _ #
|
|
51
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
52
52
|
|
|
53
53
|
from pygeodesy.constants import EPS, EPS0, _0_0, _1_0, _2_0, _3_0, _4_0, _6_0
|
|
54
54
|
# from pygeodesy.ecef import EcefVeness # _MODS
|
|
@@ -59,7 +59,7 @@ from pygeodesy.ellipsoidalBaseDI import LatLonEllipsoidalBaseDI, \
|
|
|
59
59
|
# from pygeodesy.ellipsoidalExact import areaOf, perimeterOf # _MODS
|
|
60
60
|
# from pygeodesy.ellipsoidalKarney import areaOf, perimeterOf # _MODS
|
|
61
61
|
from pygeodesy.errors import _and, _ValueError, _xkwds
|
|
62
|
-
from pygeodesy.fmath import Fpolynomial, hypot, hypot1
|
|
62
|
+
from pygeodesy.fmath import fdot_, Fpolynomial, hypot, hypot1
|
|
63
63
|
from pygeodesy.interns import _ambiguous_, _antipodal_, _COLONSPACE_, \
|
|
64
64
|
_to_, _SPACE_, _limit_ # PYCHOK used!
|
|
65
65
|
from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS
|
|
@@ -76,7 +76,7 @@ from pygeodesy.utily import atan2, atan2b, atan2d, sincos2, sincos2d, \
|
|
|
76
76
|
from math import cos, degrees, fabs, radians, tan as _tan
|
|
77
77
|
|
|
78
78
|
__all__ = _ALL_LAZY.ellipsoidalVincenty
|
|
79
|
-
__version__ = '25.
|
|
79
|
+
__version__ = '25.05.23'
|
|
80
80
|
|
|
81
81
|
_antipodal_to_ = _SPACE_(_antipodal_, _to_)
|
|
82
82
|
|
|
@@ -230,13 +230,13 @@ class LatLon(LatLonEllipsoidalBaseDI):
|
|
|
230
230
|
t = self._no_convergence(e)
|
|
231
231
|
raise VincentyError(t, txt=repr(self)) # self.toRepr()
|
|
232
232
|
|
|
233
|
-
t = s1
|
|
233
|
+
t = fdot_(s1, ss, -c1, cs * cb)
|
|
234
234
|
# final bearing (reverse azimuth +/- 180)
|
|
235
235
|
d = atan2b(sa, -t)
|
|
236
236
|
if llr:
|
|
237
237
|
b = cb * ss
|
|
238
|
-
a = atan2d(s1
|
|
239
|
-
b = atan2d(sb * ss, -s1
|
|
238
|
+
a = atan2d(fdot_(s1, cs, c1, b), hypot(sa, t) * E.b_a)
|
|
239
|
+
b = atan2d(sb * ss, fdot_(-s1, b, c1, cs)) + self.lon \
|
|
240
240
|
- degrees(_Dl(f, ca2, sa, s, cs, ss, c2sm))
|
|
241
241
|
t = Destination3Tuple(a, wrap180(b), d)
|
|
242
242
|
r = self._Direct2Tuple(self.classof, height, t)
|
|
@@ -349,6 +349,13 @@ def _c2sm2(c2sm):
|
|
|
349
349
|
return c2sm**2 * _2_0 - _1_0
|
|
350
350
|
|
|
351
351
|
|
|
352
|
+
def _ellipsoidal(): # helper for areaOf and perimeterOf
|
|
353
|
+
try:
|
|
354
|
+
return _MODS.ellipsoidalKarney
|
|
355
|
+
except ImportError:
|
|
356
|
+
return _MODS.ellipsoidalExact
|
|
357
|
+
|
|
358
|
+
|
|
352
359
|
def _Dl(f, ca2, sa, s, cs, ss, c2sm, dl=_0_0):
|
|
353
360
|
# C{Dl}
|
|
354
361
|
if f and sa:
|
|
@@ -399,10 +406,7 @@ def _sincostan3r(a, f):
|
|
|
399
406
|
def areaOf(points, **datum_wrap):
|
|
400
407
|
'''DEPRECATED, use function L{ellipsoidalExact.areaOf} or L{ellipsoidalKarney.areaOf}.
|
|
401
408
|
'''
|
|
402
|
-
|
|
403
|
-
return _MODS.ellipsoidalKarney.areaOf(points, **datum_wrap)
|
|
404
|
-
except ImportError:
|
|
405
|
-
return _MODS.ellipsoidalExact.areaOf(points, **datum_wrap)
|
|
409
|
+
return _ellipsoidal().areaOf(points, **datum_wrap)
|
|
406
410
|
|
|
407
411
|
|
|
408
412
|
def intersection3(start1, end1, start2, end2, height=None, wrap=False, # was=True
|
|
@@ -558,10 +562,7 @@ def nearestOn(point, point1, point2, within=True, height=None, wrap=False,
|
|
|
558
562
|
def perimeterOf(points, **closed_datum_wrap):
|
|
559
563
|
'''DEPRECATED, use function L{ellipsoidalExact.perimeterOf} or L{ellipsoidalKarney.perimeterOf}.
|
|
560
564
|
'''
|
|
561
|
-
|
|
562
|
-
return _MODS.ellipsoidalKarney.perimeterOf(points, **closed_datum_wrap)
|
|
563
|
-
except ImportError:
|
|
564
|
-
return _MODS.ellipsoidalExact.perimeterOf(points, **closed_datum_wrap)
|
|
565
|
+
return _ellipsoidal().perimeterOf(points, **closed_datum_wrap)
|
|
565
566
|
|
|
566
567
|
|
|
567
568
|
__all__ += _ALL_DOCS(Cartesian, LatLon, intersecant2, # from .ellipsoidalBaseDI
|
pygeodesy/ellipsoids.py
CHANGED
|
@@ -62,7 +62,7 @@ Following is the list of predefined L{Ellipsoid}s, all instantiated lazily.
|
|
|
62
62
|
@var Ellipsoids.WGS84_NGS: Ellipsoid(name='WGS84_NGS', a=6378137, f=0.00335281, f_=298.2572221, b=6356752.31414035)
|
|
63
63
|
'''
|
|
64
64
|
# make sure int/int division yields float quotient, see .basics
|
|
65
|
-
from __future__ import division as _; del _ #
|
|
65
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
66
66
|
|
|
67
67
|
# from pygeodesy.albers import AlbersEqualAreaCylindrical # _MODS
|
|
68
68
|
from pygeodesy.basics import copysign0, isbool, _isin, isint, typename
|
|
@@ -95,7 +95,7 @@ from pygeodesy.utily import atan1, atan1d, atan2b, degrees90, m2radians, radians
|
|
|
95
95
|
from math import asinh, atan, atanh, cos, degrees, exp, fabs, radians, sin, sinh, sqrt, tan # as _tan
|
|
96
96
|
|
|
97
97
|
__all__ = _ALL_LAZY.ellipsoids
|
|
98
|
-
__version__ = '25.
|
|
98
|
+
__version__ = '25.05.12'
|
|
99
99
|
|
|
100
100
|
_f_0_0 = Float(f =_0_0) # zero flattening
|
|
101
101
|
_f__0_0 = Float(f_=_0_0) # zero inverse flattening
|
|
@@ -398,7 +398,7 @@ class Ellipsoid(_NamedEnumItem):
|
|
|
398
398
|
def AlphaKs(self):
|
|
399
399
|
'''Get the I{Krüger} U{Alpha series coefficients<https://GeographicLib.SourceForge.io/C++/doc/tmseries30.html>} (C{KsOrder}C{-tuple}).
|
|
400
400
|
'''
|
|
401
|
-
return self._Kseries( # XXX int/int quotients may require from __future__ import division as _; del _ #
|
|
401
|
+
return self._Kseries( # XXX int/int quotients may require from __future__ import division as _; del _ # noqa: E702 ;
|
|
402
402
|
# n n**2 n**3 n**4 n**5 n**6 n**7 n**8
|
|
403
403
|
_T(1/2, -2/3, 5/16, 41/180, -127/288, 7891/37800, 72161/387072, -18975107/50803200),
|
|
404
404
|
_T(13/48, -3/5, 557/1440, 281/630, -1983433/1935360, 13769/28800, 148003883/174182400), # PYCHOK unaligned
|
|
@@ -617,7 +617,7 @@ class Ellipsoid(_NamedEnumItem):
|
|
|
617
617
|
def BetaKs(self):
|
|
618
618
|
'''Get the I{Krüger} U{Beta series coefficients<https://GeographicLib.SourceForge.io/C++/doc/tmseries30.html>} (C{KsOrder}C{-tuple}).
|
|
619
619
|
'''
|
|
620
|
-
return self._Kseries( # XXX int/int quotients may require from __future__ import division as _; del _ #
|
|
620
|
+
return self._Kseries( # XXX int/int quotients may require from __future__ import division as _; del _ # noqa: E702 ;
|
|
621
621
|
# n n**2 n**3 n**4 n**5 n**6 n**7 n**8
|
|
622
622
|
_T(1/2, -2/3, 37/96, -1/360, -81/512, 96199/604800, -5406467/38707200, 7944359/67737600),
|
|
623
623
|
_T(1/48, 1/15, -437/1440, 46/105, -1118711/3870720, 51841/1209600, 24749483/348364800), # PYCHOK unaligned
|
pygeodesy/elliptic.py
CHANGED
|
@@ -73,7 +73,7 @@ The notation follows U{NIST Digital Library of Mathematical Functions
|
|
|
73
73
|
U{22<https://DLMF.NIST.gov/22>}.
|
|
74
74
|
'''
|
|
75
75
|
# make sure int/int division yields float quotient, see .basics
|
|
76
|
-
from __future__ import division as _; del _ #
|
|
76
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
77
77
|
|
|
78
78
|
from pygeodesy.basics import copysign0, map2, neg, neg_, typename
|
|
79
79
|
from pygeodesy.constants import EPS, INF, NAN, PI, PI_2, PI_4, _0_0, \
|
|
@@ -99,7 +99,7 @@ from math import asin, asinh, atan, ceil, cosh, fabs, floor, radians, \
|
|
|
99
99
|
sin, sinh, sqrt, tan, tanh # tan as _tan
|
|
100
100
|
|
|
101
101
|
__all__ = _ALL_LAZY.elliptic
|
|
102
|
-
__version__ = '25.
|
|
102
|
+
__version__ = '25.05.12'
|
|
103
103
|
|
|
104
104
|
_TolRD = zqrt(EPS * 0.002)
|
|
105
105
|
_TolRF = zqrt(EPS * 0.030)
|
pygeodesy/errors.py
CHANGED
|
@@ -27,7 +27,7 @@ from pygeodesy.lazily import _ALL_LAZY, _ALL_MODS as _MODS, _PYTHON_X_DEV
|
|
|
27
27
|
from copy import copy as _copy
|
|
28
28
|
|
|
29
29
|
__all__ = _ALL_LAZY.errors # _ALL_DOCS('_InvalidError', '_IsnotError') _under
|
|
30
|
-
__version__ = '25.
|
|
30
|
+
__version__ = '25.05.19'
|
|
31
31
|
|
|
32
32
|
_argument_ = 'argument'
|
|
33
33
|
_basics = _MODS.into(basics=__name__)
|
pygeodesy/etm.py
CHANGED
|
@@ -61,7 +61,7 @@ control round-off. For example, C{atanh(sin(phi))} is replaced by C{asinh(tan(p
|
|
|
61
61
|
which maintains accuracy near C{phi = pi/2}. Such changes are noted in the code.
|
|
62
62
|
'''
|
|
63
63
|
# make sure int/int division yields float quotient, see .basics
|
|
64
|
-
from __future__ import division as _; del _ #
|
|
64
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
65
65
|
|
|
66
66
|
from pygeodesy.basics import _isin, map1, neg, neg_, _xinstanceof
|
|
67
67
|
from pygeodesy.constants import EPS, EPS02, PI_2, PI_4, _K0_UTM, \
|
|
@@ -93,7 +93,7 @@ from pygeodesy.utm import _cmlon, _LLEB, _parseUTM5, _toBand, _toXtm8, \
|
|
|
93
93
|
from math import asinh, degrees, radians, sinh, sqrt
|
|
94
94
|
|
|
95
95
|
__all__ = _ALL_LAZY.etm
|
|
96
|
-
__version__ = '25.
|
|
96
|
+
__version__ = '25.05.12'
|
|
97
97
|
|
|
98
98
|
_OVERFLOW = _1_EPS**2 # ~2e+31
|
|
99
99
|
_TAYTOL = pow(EPS, 0.6)
|
pygeodesy/fmath.py
CHANGED
|
@@ -5,7 +5,7 @@ u'''Utilities for precision floating point summation, multiplication,
|
|
|
5
5
|
C{fused-multiply-add}, polynomials, roots, etc.
|
|
6
6
|
'''
|
|
7
7
|
# make sure int/int division yields float quotient, see .basics
|
|
8
|
-
from __future__ import division as _; del _ #
|
|
8
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
9
9
|
|
|
10
10
|
from pygeodesy.basics import _copysign, copysign0, isbool, isint, isscalar, \
|
|
11
11
|
len2, map1, _xiterable, typename
|
|
@@ -19,13 +19,13 @@ from pygeodesy.fsums import _2float, Fsum, fsum, _isFsum_2Tuple, Fmt, unstr
|
|
|
19
19
|
from pygeodesy.interns import MISSING, _negative_, _not_scalar_
|
|
20
20
|
from pygeodesy.lazily import _ALL_LAZY, _ALL_MODS as _MODS
|
|
21
21
|
# from pygeodesy.streprs import Fmt, unstr # from .fsums
|
|
22
|
-
from pygeodesy.units import Int_, _isHeight, _isRadius
|
|
22
|
+
from pygeodesy.units import Int_, _isHeight, _isRadius
|
|
23
23
|
|
|
24
24
|
from math import fabs, sqrt # pow
|
|
25
25
|
import operator as _operator # in .datums, .trf, .utm
|
|
26
26
|
|
|
27
27
|
__all__ = _ALL_LAZY.fmath
|
|
28
|
-
__version__ = '25.
|
|
28
|
+
__version__ = '25.05.12'
|
|
29
29
|
|
|
30
30
|
# sqrt(2) - 1 <https://WikiPedia.org/wiki/Square_root_of_2>
|
|
31
31
|
_0_4142 = 0.41421356237309504880 # ~ 3_730_904_090_310_553 / 9_007_199_254_740_992
|
|
@@ -37,7 +37,7 @@ class Fdot(Fsum):
|
|
|
37
37
|
'''Precision dot product.
|
|
38
38
|
'''
|
|
39
39
|
def __init__(self, a, *b, **start_name_f2product_nonfinites_RESIDUAL):
|
|
40
|
-
'''New L{Fdot} precision dot product M{sum(a[i] * b[i] for i=0..len(a)-1)}.
|
|
40
|
+
'''New L{Fdot} precision dot product M{start + sum(a[i] * b[i] for i=0..len(a)-1)}.
|
|
41
41
|
|
|
42
42
|
@arg a: Iterable of values (each C{scalar}, an L{Fsum} or L{Fsum2Tuple}).
|
|
43
43
|
@arg b: Other values (each C{scalar}, an L{Fsum} or L{Fsum2Tuple}), all
|
|
@@ -70,7 +70,7 @@ class Fdot_(Fdot):
|
|
|
70
70
|
'''Precision dot product.
|
|
71
71
|
'''
|
|
72
72
|
def __init__(self, *xys, **start_name_f2product_nonfinites_RESIDUAL):
|
|
73
|
-
'''New L{Fdot_} precision dot product M{sum(xys[i] * xys[i+1] for i in
|
|
73
|
+
'''New L{Fdot_} precision dot product M{start + sum(xys[i] * xys[i+1] for i in
|
|
74
74
|
range(0, len(xys), B{2}))}.
|
|
75
75
|
|
|
76
76
|
@arg xys: Pairwise values (each C{scalar}, an L{Fsum} or L{Fsum2Tuple}),
|
|
@@ -439,7 +439,7 @@ def favg(a, b, f=_0_5, nonfinites=True):
|
|
|
439
439
|
|
|
440
440
|
|
|
441
441
|
def fdot(xs, *ys, **start_f2product_nonfinites):
|
|
442
|
-
'''Return the precision dot product M{sum(xs[i] * ys[i] for i in range(len(xs)))}.
|
|
442
|
+
'''Return the precision dot product M{start + sum(xs[i] * ys[i] for i in range(len(xs)))}.
|
|
443
443
|
|
|
444
444
|
@arg xs: Iterable of values (each C{scalar}, an L{Fsum} or L{Fsum2Tuple}).
|
|
445
445
|
@arg ys: Other values (each C{scalar}, an L{Fsum} or L{Fsum2Tuple}), all positional.
|
|
@@ -460,7 +460,7 @@ def fdot(xs, *ys, **start_f2product_nonfinites):
|
|
|
460
460
|
|
|
461
461
|
|
|
462
462
|
def fdot_(*xys, **start_f2product_nonfinites):
|
|
463
|
-
'''Return the (precision) dot product M{sum(xys[i] * xys[i+1] for i in range(0, len(xys), B{2}))}.
|
|
463
|
+
'''Return the (precision) dot product M{start + sum(xys[i] * xys[i+1] for i in range(0, len(xys), B{2}))}.
|
|
464
464
|
|
|
465
465
|
@arg xys: Pairwise values (each C{scalar}, an L{Fsum} or L{Fsum2Tuple}), all positional.
|
|
466
466
|
|
|
@@ -987,7 +987,7 @@ def _powers(x, n):
|
|
|
987
987
|
|
|
988
988
|
|
|
989
989
|
def _root(x, p, where):
|
|
990
|
-
'''(INTERNAL) Raise C{x} to power C{0
|
|
990
|
+
'''(INTERNAL) Raise C{x} to power C{0 <= p < 1}.
|
|
991
991
|
'''
|
|
992
992
|
try:
|
|
993
993
|
if x > 0:
|
|
@@ -997,7 +997,7 @@ def _root(x, p, where):
|
|
|
997
997
|
raise ValueError(_negative_)
|
|
998
998
|
except Exception as X:
|
|
999
999
|
raise _xError(X, unstr(where, x))
|
|
1000
|
-
return _0_0 if p else _1_0
|
|
1000
|
+
return _0_0 if p else _1_0 # x == 0
|
|
1001
1001
|
|
|
1002
1002
|
|
|
1003
1003
|
def sqrt0(x, Error=None):
|
pygeodesy/formy.py
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
u'''Formulary of basic geodesy functions and approximations.
|
|
5
5
|
'''
|
|
6
6
|
# make sure int/int division yields float quotient, see .basics
|
|
7
|
-
from __future__ import division as _; del _ #
|
|
7
|
+
from __future__ import division as _; del _ # noqa: E702 ;
|
|
8
8
|
|
|
9
9
|
from pygeodesy.basics import _copysign, _isin # _args_kwds_count2
|
|
10
10
|
# from pygeodesy.cartesianBase import CartesianBase # _MODS
|
|
@@ -42,7 +42,7 @@ from contextlib import contextmanager
|
|
|
42
42
|
from math import atan, cos, degrees, fabs, radians, sin, sqrt # pow
|
|
43
43
|
|
|
44
44
|
__all__ = _ALL_LAZY.formy
|
|
45
|
-
__version__ = '25.
|
|
45
|
+
__version__ = '25.05.12'
|
|
46
46
|
|
|
47
47
|
_RADIANS2 = radians(_1_0)**2 # degree to radians-squared
|
|
48
48
|
_ratio_ = 'ratio'
|