pygeodesy 24.6.9__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.
Files changed (84) hide show
  1. {PyGeodesy-24.6.9.dist-info → PyGeodesy-24.6.24.dist-info}/METADATA +2 -2
  2. PyGeodesy-24.6.24.dist-info/RECORD +117 -0
  3. pygeodesy/__init__.py +33 -32
  4. pygeodesy/albers.py +2 -2
  5. pygeodesy/auxilats/__init__.py +1 -1
  6. pygeodesy/auxilats/auxAngle.py +40 -39
  7. pygeodesy/auxilats/auxDLat.py +3 -2
  8. pygeodesy/auxilats/auxLat.py +16 -18
  9. pygeodesy/auxilats/auxily.py +1 -1
  10. pygeodesy/azimuthal.py +10 -10
  11. pygeodesy/basics.py +9 -1
  12. pygeodesy/booleans.py +4 -4
  13. pygeodesy/cartesianBase.py +11 -14
  14. pygeodesy/css.py +14 -18
  15. pygeodesy/datums.py +6 -6
  16. pygeodesy/deprecated/__init__.py +1 -1
  17. pygeodesy/deprecated/classes.py +16 -2
  18. pygeodesy/deprecated/datum.py +3 -3
  19. pygeodesy/deprecated/functions.py +6 -8
  20. pygeodesy/dms.py +23 -27
  21. pygeodesy/ecef.py +4 -4
  22. pygeodesy/elevations.py +4 -4
  23. pygeodesy/ellipsoidalBase.py +23 -28
  24. pygeodesy/ellipsoidalBaseDI.py +19 -23
  25. pygeodesy/ellipsoidalExact.py +3 -3
  26. pygeodesy/ellipsoidalGeodSolve.py +15 -23
  27. pygeodesy/ellipsoidalKarney.py +37 -60
  28. pygeodesy/ellipsoidalNvector.py +38 -44
  29. pygeodesy/ellipsoidalVincenty.py +11 -14
  30. pygeodesy/ellipsoids.py +107 -101
  31. pygeodesy/errors.py +100 -48
  32. pygeodesy/etm.py +32 -44
  33. pygeodesy/formy.py +55 -58
  34. pygeodesy/frechet.py +18 -20
  35. pygeodesy/fsums.py +3 -3
  36. pygeodesy/gars.py +3 -4
  37. pygeodesy/geodesici.py +909 -0
  38. pygeodesy/geodesicw.py +11 -13
  39. pygeodesy/geodesicx/__init__.py +4 -4
  40. pygeodesy/geodesicx/gx.py +18 -28
  41. pygeodesy/geodesicx/gxbases.py +20 -8
  42. pygeodesy/geodesicx/gxline.py +16 -22
  43. pygeodesy/geodsolve.py +80 -10
  44. pygeodesy/geohash.py +26 -34
  45. pygeodesy/geoids.py +28 -37
  46. pygeodesy/hausdorff.py +17 -18
  47. pygeodesy/heights.py +2 -2
  48. pygeodesy/internals.py +6 -0
  49. pygeodesy/interns.py +2 -2
  50. pygeodesy/karney.py +20 -4
  51. pygeodesy/ktm.py +13 -16
  52. pygeodesy/latlonBase.py +17 -19
  53. pygeodesy/lazily.py +7 -6
  54. pygeodesy/lcc.py +28 -31
  55. pygeodesy/ltp.py +7 -8
  56. pygeodesy/ltpTuples.py +68 -70
  57. pygeodesy/mgrs.py +8 -9
  58. pygeodesy/named.py +19 -10
  59. pygeodesy/nvectorBase.py +9 -10
  60. pygeodesy/osgr.py +9 -9
  61. pygeodesy/points.py +6 -6
  62. pygeodesy/rhumb/__init__.py +1 -1
  63. pygeodesy/rhumb/aux_.py +5 -5
  64. pygeodesy/rhumb/bases.py +30 -31
  65. pygeodesy/rhumb/ekx.py +3 -4
  66. pygeodesy/sphericalBase.py +10 -11
  67. pygeodesy/sphericalNvector.py +13 -13
  68. pygeodesy/sphericalTrigonometry.py +86 -97
  69. pygeodesy/streprs.py +4 -34
  70. pygeodesy/triaxials.py +48 -43
  71. pygeodesy/units.py +204 -271
  72. pygeodesy/unitsBase.py +115 -107
  73. pygeodesy/ups.py +26 -31
  74. pygeodesy/utily.py +8 -8
  75. pygeodesy/utm.py +35 -40
  76. pygeodesy/utmups.py +43 -46
  77. pygeodesy/utmupsBase.py +8 -9
  78. pygeodesy/vector3d.py +26 -27
  79. pygeodesy/vector3dBase.py +6 -7
  80. pygeodesy/webmercator.py +19 -21
  81. pygeodesy/wgrs.py +18 -20
  82. PyGeodesy-24.6.9.dist-info/RECORD +0 -116
  83. {PyGeodesy-24.6.9.dist-info → PyGeodesy-24.6.24.dist-info}/WHEEL +0 -0
  84. {PyGeodesy-24.6.9.dist-info → PyGeodesy-24.6.24.dist-info}/top_level.txt +0 -0
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.06.06'
65
+ __version__ = '24.06.15'
66
66
 
67
67
  _ilat_ = 'ilat'
68
68
  _ilon_ = 'ilon'
@@ -391,7 +391,7 @@ class _Array2LatLon(_Basequence): # immutable, on purpose
391
391
  # check the attr indices
392
392
  for n, (ai, i) in enumerate(ais):
393
393
  if not isint(i):
394
- raise _IsnotError(int.__name__, **{ai: i})
394
+ raise _IsnotError(int, **{ai: i})
395
395
  i = int(i)
396
396
  if not 0 <= i < shape[1]:
397
397
  raise _ValueError(ai, i)
@@ -959,8 +959,8 @@ def areaOf(points, adjust=True, radius=R_M, wrap=True):
959
959
  the B{C{points}} (C{bool}).
960
960
 
961
961
  @return: Approximate area (I{square} C{meter}, same units as
962
- B{C{radius}} or C{radians} I{squared} if B{C{radius}}
963
- is C{None}).
962
+ B{C{radius}} or C{radians} I{squared} if C{B{radius}
963
+ is None}).
964
964
 
965
965
  @raise PointsError: Insufficient number of B{C{points}}
966
966
 
@@ -992,8 +992,8 @@ def boundsOf(points, wrap=False, LatLon=None): # was=True
992
992
  @kwarg LatLon: Optional class to return the C{bounds}
993
993
  corners (C{LatLon}) or C{None}.
994
994
 
995
- @return: A L{Bounds2Tuple}C{(latlonSW, latlonNE)} as
996
- B{C{LatLon}}s if B{C{LatLon}} is C{None} a
995
+ @return: A L{Bounds2Tuple}C{(latlonSW, latlonNE)}, each
996
+ a B{C{LatLon}} or if C{B{LatLon} is None}, a
997
997
  L{Bounds4Tuple}C{(latS, lonW, latN, lonE)}.
998
998
 
999
999
  @raise PointsError: Insufficient number of B{C{points}}
@@ -9,7 +9,7 @@ u'''Package of lazily imported C{rhumb} modules L{rhumb.aux_}, L{rhumb.ekx} and
9
9
  from pygeodesy.lazily import _ALL_LAZY, _ALL_OTHER, _lazy_import_as, _unLazy0
10
10
 
11
11
  __all__ = _ALL_LAZY.rhumb
12
- __version__ = '24.05.24'
12
+ __version__ = '24.06.18'
13
13
 
14
14
  if _unLazy0: # or _isfrozen
15
15
  from pygeodesy.rhumb.aux_ import RhumbAux, RhumbLineAux
pygeodesy/rhumb/aux_.py CHANGED
@@ -47,7 +47,7 @@ from pygeodesy.rhumb.bases import RhumbBase, RhumbLineBase, \
47
47
  from math import ceil as _ceil, fabs, radians
48
48
 
49
49
  __all__ = _ALL_LAZY.rhumb_aux_
50
- __version__ = '24.05.29'
50
+ __version__ = '24.06.11'
51
51
 
52
52
  # DIGITS = (sizeof(real) * 8) bits
53
53
  # = (ctypes.sizeof(ctypes.c_double(1.0)) * 8) bits
@@ -74,14 +74,14 @@ class RhumbAux(RhumbBase):
74
74
  @kwarg a_earth: This rhumb's earth model (L{Datum}, L{Ellipsoid},
75
75
  L{Ellipsoid2}, L{a_f2Tuple}, 2-tuple C{(a, f)}) or
76
76
  the (equatorial) radius (C{meter}, conventionally).
77
- @kwarg f: The ellipsoid's flattening (C{scalar}), iff B{C{a_earth}} is
78
- C{scalar}, ignored otherwise.
77
+ @kwarg f: The ellipsoid's flattening (C{scalar}), required if B{C{a_earth}}
78
+ is C{scalar}, ignored otherwise.
79
79
  @kwarg exact: If C{True}, use the exact expressions for the I{Auxiliary
80
80
  Latitudes}, otherwise use the I{Fourier} series expansion
81
81
  (C{bool}), see also property C{exact}.
82
82
  @kwarg TMorder_name: Optional C{B{name}=NN} (C{str}) and optional
83
- keyword argument C{B{TMorder}=6} for the order of
84
- the L{KTransverseMercator}, see property C{TMorder}.
83
+ keyword argument C{B{TMorder}=6}, the order of the
84
+ L{KTransverseMercator}, see property C{TMorder}.
85
85
 
86
86
  @raise ImportError: Package C{numpy} not found or not installed, only
87
87
  required for area C{S12} when C{B{exact} is True}.
pygeodesy/rhumb/bases.py CHANGED
@@ -52,11 +52,11 @@ from pygeodesy.vector3d import _intersect3d3, Vector3d # in .Intersection below
52
52
  from math import cos, fabs
53
53
 
54
54
  __all__ = ()
55
- __version__ = '24.05.29'
55
+ __version__ = '24.06.18'
56
56
 
57
57
  _anti_ = _Dash('anti')
58
58
  _rls = [] # instances of C{RbumbLine...} to be updated
59
- _TRIPS = 65 # .Intersection, .PlumbTo, 19+
59
+ _TRIPS = 129 # .Intersection, .PlumbTo, 19+
60
60
 
61
61
 
62
62
  class _Lat(Lat):
@@ -716,7 +716,7 @@ class RhumbLineBase(_CapsBase):
716
716
  t = _xTMr(v.x, v.y, lon0=p.lon) # PYCHOK Reverse4Tuple
717
717
  d = _diff(t.lon - p.lon, t.lat) # PYCHOK t.lat + p.lat - p.lat
718
718
  p = _LL2T(t.lat + p.lat, t.lon) # PYCHOK t.lon + p.lon = lon0
719
- if d < tol: # 19 trips
719
+ if d < tol: # 19+ trips
720
720
  break
721
721
  else:
722
722
  raise ValueError(Fmt.no_convergence(d, tol))
@@ -724,7 +724,7 @@ class RhumbLineBase(_CapsBase):
724
724
  P = GDict(lat1=self.lat1, lat2=p.lat, lat0=other.lat1,
725
725
  lon1=self.lon1, lon2=p.lon, lon0=other.lon1,
726
726
  name=_dunder_nameof(self.Intersection, self.name))
727
- r = self.Inverse( p.lat, p.lon, outmask=Caps.DISTANCE)
727
+ r = self.Inverse(p.lat, p.lon, outmask=Caps.DISTANCE)
728
728
  t = other.Inverse(p.lat, p.lon, outmask=Caps.DISTANCE)
729
729
  P.set_(azi12= self.azi12, a12=r.a12, s12=r.s12,
730
730
  azi02=other.azi12, a02=t.a12, s02=t.s12,
@@ -824,9 +824,9 @@ class RhumbLineBase(_CapsBase):
824
824
  @kwarg exact: If C{None}, use a rhumb line perpendicular to this rhumb line,
825
825
  otherwise use an I{exact} C{Geodesic...} from the given point
826
826
  perpendicular to this rhumb line (C{bool} or C{Geodesic...}),
827
- see method L{Ellipsoid.geodesic_}.
828
- @kwarg eps: Optional tolerance for L{pygeodesy.intersection3d3} (C{EPS}),
829
- used only if C{B{exact} is None}.
827
+ see method L{geodesic_<pygeodesy.Ellipsoid.geodesic_>}.
828
+ @kwarg eps: Optional tolerance (C{EPS}), used only if C{B{exact} is None},
829
+ see function L{intersection3d3<pygeodesy.intersection3d3>}.
830
830
  @kwarg est: Optionally, an initial estimate for the distance C{s12} of the
831
831
  intersection I{along} this rhumb line (C{meter}), used only if
832
832
  C{B{exact} is not None}.
@@ -849,11 +849,11 @@ class RhumbLineBase(_CapsBase):
849
849
  <https://PyPI.org/project/geographiclib>}
850
850
  package not found or not installed.
851
851
 
852
- @raise IntersectionError: No convergence for this B{C{eps}} or no
853
- intersection for some other reason.
852
+ @raise IntersectionError: No convergence for this B{C{eps}} or B{C{tol}} or
853
+ no intersection for some other reason.
854
854
 
855
- @see: Methods C{distance2}, C{Intersecant2} and C{Intersection}
856
- and function L{pygeodesy.intersection3d3}.
855
+ @see: Methods C{distance2}, C{Intersecant2} and C{Intersection} and function
856
+ L{intersection3d3<pygeodesy.intersection3d3>}.
857
857
  '''
858
858
  Cs, tol = Caps, Float_(tol=tol, low=EPS, high=None)
859
859
 
@@ -899,7 +899,7 @@ class RhumbLineBase(_CapsBase):
899
899
  lat0=lat0, lon0=lon0, iteration=i, at=r.azi2 - self.azi12,
900
900
  name=_dunder_nameof(self.PlumbTo, self.name))
901
901
  except Exception as x: # Fsum(NAN) Value-, ZeroDivisionError
902
- raise IntersectionError(lat0, lon0, tol=tol, exact=exact,
902
+ raise IntersectionError(lat0=lat0, lon0=lon0, tol=tol, exact=exact,
903
903
  eps=eps, est=est, iteration=i, cause=x)
904
904
 
905
905
  return P
@@ -907,29 +907,28 @@ class RhumbLineBase(_CapsBase):
907
907
  def Position(self, s12, outmask=Caps.LATITUDE_LONGITUDE):
908
908
  '''Compute a point at a given distance on this rhumb line.
909
909
 
910
- @arg s12: The distance along this rhumb line from its origin to
911
- the point (C{meters}), can be negative.
912
- @kwarg outmask: Bit-or'ed combination of L{Caps} values specifying
913
- the quantities to be returned.
910
+ @arg s12: The distance along this rhumb line from its origin to the point
911
+ (C{meters}), can be negative.
912
+ @kwarg outmask: Bit-or'ed combination of L{Caps} values specifying the
913
+ quantities to be returned.
914
914
 
915
- @return: L{GDict} with 4 to 8 items C{azi12, a12, s12, S12, lat2,
916
- lat1, lon2, lon1} with latitude C{lat2} and longitude
917
- C{lon2} of the point in C{degrees}, the rhumb angle C{a12}
918
- in C{degrees} from the start point of and the area C{S12}
919
- under this rhumb line in C{meter} I{squared}.
915
+ @return: L{GDict} with 4 to 8 items C{azi12, a12, s12, S12, lat2, lat1,
916
+ lon2, lon1} with latitude C{lat2} and longitude C{lon2} of the
917
+ point in C{degrees}, the rhumb angle C{a12} in C{degrees} from
918
+ the start point of and the area C{S12} under this rhumb line
919
+ in C{meter} I{squared}.
920
920
 
921
- @raise ImportError: Package C{numpy} not found or not installed,
922
- only required for L{RhumbLineAux} area C{S12}
923
- when C{B{exact} is True}.
921
+ @raise ImportError: Package C{numpy} not found or not installed, required
922
+ only for L{RhumbLineAux} area C{S12} when C{B{exact}
923
+ is True}.
924
924
 
925
- @note: If B{C{s12}} is large enough that the rhumb line crosses a
926
- pole, the longitude of the second point is indeterminate and
927
- C{NAN} is returned for C{lon2} and area C{S12}.
925
+ @note: If B{C{s12}} is large enough that the rhumb line crosses a pole, the
926
+ longitude of the second point is indeterminate and C{NAN} is returned
927
+ for C{lon2} and area C{S12}.
928
928
 
929
- If the first point is a pole, the cosine of its latitude is
930
- taken to be C{sqrt(L{EPS})}. This position is extremely
931
- close to the actual pole and allows the calculation to be
932
- carried out in finite terms.
929
+ If the first point is a pole, the cosine of its latitude is taken to
930
+ be C{sqrt(L{EPS})}. This position is extremely close to the actual
931
+ pole and allows the calculation to be carried out in finite terms.
933
932
  '''
934
933
  return self._Position(self.m2degrees(s12), s12, outmask)
935
934
 
pygeodesy/rhumb/ekx.py CHANGED
@@ -43,7 +43,7 @@ from pygeodesy.utily import atan1, sincos2_
43
43
  from math import asinh, atan, cos, cosh, radians, sin, sinh, sqrt, tan
44
44
 
45
45
  __all__ = _ALL_LAZY.rhumb_ekx
46
- __version__ = '24.05.30'
46
+ __version__ = '24.06.11'
47
47
 
48
48
 
49
49
  class Rhumb(RhumbBase):
@@ -61,13 +61,12 @@ class Rhumb(RhumbBase):
61
61
  @kwarg a_earth: This rhumb's earth model (L{Datum}, L{Ellipsoid},
62
62
  L{Ellipsoid2}, L{a_f2Tuple}, 2-tuple C{(a, f)}) or
63
63
  the (equatorial) radius (C{meter}, conventionally).
64
- @kwarg f: The ellipsoid's flattening (C{scalar}), iff B{C{a_earth}} is
65
- C{scalar}, ignored otherwise.
64
+ @kwarg f: The ellipsoid's flattening (C{scalar}), required if B{C{a_earth}}
65
+ is C{scalar}, ignored otherwise.
66
66
  @kwarg exact: If C{True}, use an addition theorem for elliptic integrals
67
67
  to compute I{Divided differences}, otherwise use the I{Krüger}
68
68
  series expansion (C{bool} or C{None}), see also properties
69
69
  C{exact} and C{TMorder}.
70
- @kwarg name: Optional name (C{str}).
71
70
  @kwarg RA_TMorder_name: Optional C{B{name}=NN} (C{str}) and optional keyword
72
71
  arguments B{C{RAorder}=6} and B{C{TMorder}=6} to set the respective
73
72
  C{order}, see properties C{RAorder} and C{TMorder}.
@@ -19,7 +19,7 @@ from pygeodesy.constants import EPS, EPS0, PI, PI2, PI_2, R_M, \
19
19
  _over, isnear0, isnon0
20
20
  from pygeodesy.datums import Datums, _earth_ellipsoid, _spherical_datum
21
21
  from pygeodesy.errors import IntersectionError, _ValueError, \
22
- _xattr, _xError
22
+ _xattr, _xattrs, _xError
23
23
  from pygeodesy.fmath import favg, fdot, hypot, sqrt_a
24
24
  from pygeodesy.interns import _COMMA_, _concentric_, _datum_, _distant_, \
25
25
  _exceed_PI_radians_, _name_, _near_, \
@@ -27,10 +27,10 @@ from pygeodesy.interns import _COMMA_, _concentric_, _datum_, _distant_, \
27
27
  from pygeodesy.latlonBase import LatLonBase, _trilaterate5 # PYCHOK passed
28
28
  from pygeodesy.lazily import _ALL_DOCS, _ALL_LAZY, _ALL_MODS as _MODS
29
29
  # from pygeodesy.namedTuples import Bearing2Tuple # from .cartesianBase
30
- from pygeodesy.nvectorBase import NvectorBase, Fmt, _xattrs
30
+ from pygeodesy.nvectorBase import NvectorBase, Fmt
31
31
  from pygeodesy.props import deprecated_method, property_doc_, property_RO, \
32
32
  _update_all
33
- # from pygeodesy.streprs import Fmt, _xattrs # from .nvectorBase
33
+ # from pygeodesy.streprs import Fmt # from .nvectorBase
34
34
  from pygeodesy.units import Bearing, Bearing_, _isRadius, Radians_, Radius, \
35
35
  Radius_, Scalar_, _100km
36
36
  from pygeodesy.utily import acos1, asin1, atan2b, atan2d, degrees90, \
@@ -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.06.06'
43
+ __version__ = '24.06.12'
44
44
 
45
45
 
46
46
  class CartesianSphericalBase(CartesianBase):
@@ -443,8 +443,8 @@ class LatLonSphericalBase(LatLonBase):
443
443
  @kwarg wrap: If C{True}, wrap or I{normalize} and unroll the
444
444
  B{C{other}} point (C{bool}).
445
445
 
446
- @return: Distance (C{meter}, the same units as B{C{radius}}
447
- or C{radians} if B{C{radius}} is C{None}).
446
+ @return: Distance (C{meter}, the same units as B{C{radius}} or
447
+ C{radians} if C{B{radius} is None}).
448
448
 
449
449
  @raise TypeError: The B{C{other}} point is incompatible.
450
450
 
@@ -576,12 +576,11 @@ class LatLonSphericalBase(LatLonBase):
576
576
  '''Convert this point to C{Nvector} components, I{including
577
577
  height}.
578
578
 
579
- @kwarg Nvector_kwds: Optional, additional B{C{Nvector}}
580
- keyword arguments, ignored if
581
- C{B{Nvector} is None}.
579
+ @kwarg Nvector_kwds: Optional, additional B{C{Nvector}} keyword
580
+ arguments, ignored if C{B{Nvector} is None}.
582
581
 
583
- @return: An B{C{Nvector}} or a L{Vector4Tuple}C{(x, y, z, h)}
584
- if B{C{Nvector}} is C{None}.
582
+ @return: An B{C{Nvector}} or a L{Vector4Tuple}C{(x, y, z, h)} if
583
+ B{C{Nvector} is None}.
585
584
 
586
585
  @raise TypeError: Invalid B{C{Nvector}} or B{C{Nvector_kwds}}.
587
586
  '''
@@ -61,7 +61,7 @@ from pygeodesy.utily import atan2, degrees360, fabs, sincos2, sincos2_, \
61
61
  # from math import atan2, fabs # from utily
62
62
 
63
63
  __all__ = _ALL_LAZY.sphericalNvector
64
- __version__ = '24.04.07'
64
+ __version__ = '24.06.11'
65
65
 
66
66
  _lines_ = 'lines'
67
67
 
@@ -226,7 +226,7 @@ class LatLon(LatLonNvectorBase, LatLonSphericalBase):
226
226
 
227
227
  @return: Distance between this and the B{C{other}} point
228
228
  (C{meter}, same units as B{C{radius}} or C{radians}
229
- if B{C{radius}} is C{None}).
229
+ if C{B{radius} is None}).
230
230
 
231
231
  @raise TypeError: Invalid B{C{other}} point.
232
232
  '''
@@ -303,14 +303,14 @@ class LatLon(LatLonNvectorBase, LatLonSphericalBase):
303
303
  to an other point.
304
304
 
305
305
  @arg other: The other point (L{LatLon}).
306
- @kwarg wrap: If C{True}, wrap or I{normalize} and unroll
307
- the B{C{other}} point (C{bool}).
306
+ @kwarg wrap: If C{True}, wrap or I{normalize} and unroll the
307
+ B{C{other}} point (C{bool}).
308
308
 
309
309
  @return: Initial bearing (compass C{degrees360}).
310
310
 
311
311
  @raise Crosserror: This point coincides with the B{C{other}}
312
- point or the C{NorthPole}, provided
313
- L{pygeodesy.crosserrors} is C{True}.
312
+ point or the C{NorthPole} and L{crosserrors
313
+ <pygeodesy.crosserrors>} is C{True}.
314
314
 
315
315
  @raise TypeError: The B{C{other}} point is not L{LatLon}.
316
316
  '''
@@ -660,8 +660,8 @@ class LatLon(LatLonNvectorBase, LatLonSphericalBase):
660
660
  the C{closest} point (L{LatLon}), the C{distance}
661
661
  between this and the C{closest} point in C{meter},
662
662
  same units as B{C{radius}} or in C{radians} if
663
- B{C{radius}} is C{None} and the C{angle} from this
664
- to the C{closest} point in compass C{degrees360}.
663
+ C{B{radius} is None} and the C{angle} from this to
664
+ the C{closest} point in compass C{degrees360}.
665
665
 
666
666
  @raise TypeError: Some B{C{points}} are not C{LatLon}.
667
667
 
@@ -707,7 +707,7 @@ class LatLon(LatLonNvectorBase, LatLonSphericalBase):
707
707
  Specify C{B{Nvector}=...} to override this C{Nvector}
708
708
  class or use C{B{Nvector}=None}.
709
709
 
710
- @return: An C{Nvector} or if B{C{Nvector}} is C{None}, a L{Vector4Tuple}C{(x, y, z, h)}.
710
+ @return: An C{Nvector} or if C{B{Nvector} is None}, a L{Vector4Tuple}C{(x, y, z, h)}.
711
711
 
712
712
  @raise TypeError: Invalid C{Nvector} or other B{C{Nvector_and_kwds}} item.
713
713
  '''
@@ -810,8 +810,8 @@ def areaOf(points, radius=R_M, wrap=False):
810
810
  @kwarg wrap: If C{True}, wrap or I{normalize} and unroll the
811
811
  B{C{points}} (C{bool}).
812
812
 
813
- @return: Polygon area (C{meter} I{squared} , same units as
814
- B{C{radius}}, or C{radians} if B{C{radius}} is C{None}).
813
+ @return: Polygon area (C{meter} I{squared}, same units as
814
+ B{C{radius}}, or C{radians} if C{B{radius} is None}).
815
815
 
816
816
  @raise PointsError: Insufficient number of B{C{points}}.
817
817
 
@@ -1085,7 +1085,7 @@ def nearestOn3(point, points, closed=False, radius=R_M, height=None, wrap=False)
1085
1085
  C{distance} and the C{angle} between the C{closest}
1086
1086
  and the given B{C{point}}. The C{distance} is in
1087
1087
  C{meter}, same units as B{C{radius}} or in C{radians}
1088
- if B{C{radius}} is C{None}, the C{angle} is in compass
1088
+ if C{B{radius} is None}, the C{angle} is in compass
1089
1089
  C{degrees360}.
1090
1090
 
1091
1091
  @raise PointsError: Insufficient number of B{C{points}}.
@@ -1109,7 +1109,7 @@ def perimeterOf(points, closed=False, radius=R_M, wrap=False):
1109
1109
  B{C{points}} (C{bool}).
1110
1110
 
1111
1111
  @return: Polygon perimeter (C{meter}, same units as B{C{radius}}
1112
- or C{radians} if B{C{radius}} is C{None}).
1112
+ or C{radians} if C{B{radius} is None}).
1113
1113
 
1114
1114
  @raise PointsError: Insufficient number of B{C{points}}.
1115
1115