Package pygeodesy :: Module latlonBase :: Class LatLonBase |
[frames] | no frames]

# Class LatLonBase

      object --+
               |
    named._Named --+
                   |
    named._NamedBase --+
                       |
                      LatLonBase

Known Subclasses:
  - nvectorBase.LatLonNvectorBase
  - , ellipsoidalBase.LatLonEllipsoidalBase
  - , sphericalBase.LatLonSphericalBase

(INTERNAL) Base class for `LatLon` points on spherical or ellipsoidal earth models.

Instance Methods
PointsIter(self, points, loop=0, dedup=False) Return a `PointsIter` iterator. |
__eq__(self, other) |
__init__(self, lat, lon, height=0, name='') New `LatLon`. |
__ne__(self, other) |
__str__(self) Default `str(self)`. |
antipode(self, height=None) Return the antipode, the point diametrically opposite to this point. |
bounds(self, wide, tall, radius=6371008.771415) DEPRECATED, use method `boundsOf`. |
boundsOf(self, wide, tall, radius=6371008.771415, height=None) Return the SW and NE lat-/longitude of a great circle bounding box centered at this location. |
chordTo(self, other, height=None) Compute the length of the chord through the earth between this and an other point. |
circin6(self, point2, point3, eps=8.881784197001252e-16) Return the radius and center of the inscribed aka In-circle of the (planar) triangle formed by this and two other points. |
circum3(self, point2, point3, circum=True, eps=8.881784197001252e-16) Return the radius and center of the smallest circle through or containing this and two other points. |
circum4_(self, *points) Best-fit a sphere through this and two or more other points. |
compassAngle(self, other, adjust=True, wrap=False) DEPRECATED, use method compassAngleTo. |
compassAngleTo(self, other, adjust=True, wrap=False) Return the angle from North for the direction vector between this and an other point. |
cosineAndoyerLambertTo(self, other, wrap=False) Compute the distance between this and an other point using the Andoyer-Lambert correction of the Law of Cosines formula. |
cosineForsytheAndoyerLambertTo(self, other, wrap=False) Compute the distance between this and an other point using the Forsythe-Andoyer-Lambert correction of the Law of Cosines formula. |
cosineLawTo(self, other, radius=None, wrap=False) Compute the distance between this and an other point using the spherical Law of Cosines formula. |
destinationXyz(self, delta, LatLon=None, **LatLon_kwds) Calculate the destination using a local delta from this point. |
equals(self, other, eps=None) DEPRECATED, use method isequalTo. |
equals3(self, other, eps=None) DEPRECATED, use method isequalTo3. |
equirectangularTo(self, other, radius=None, **options) Compute the distance between this and an other point using the Equirectangular Approximation / Projection. |
euclideanTo(self, other, radius=None, **options) Approximate the `Euclidian` distance between this and an other point. |
flatLocalTo(self, other, radius=None, wrap=False) Compute the distance between this and an other point using the ellipsoidal Earth to plane projection aka Hubeny formula. |
flatPolarTo(self, other, radius=None, wrap=False) Compute the distance between this and an other point using the polar coordinate flat-Earthformula. |
hartzell(self, los=None, earth=None) Compute the intersection of a Line-Of-Sight (los) from this Point-Of-View (pov) with this point's ellipsoid surface. |
haversineTo(self, other, radius=None, wrap=False) Compute the distance between this and an other point using the Haversine formula. |
height4(self, earth=None, normal=True, LatLon=None, **LatLon_kwds) Compute the height above or below and the projection on this datum's ellipsoid surface. |
heightStr(self, prec=-2, m=`'``m``'`) Return this `height` as `str`ing. |
hubenyTo(self, other, radius=None, wrap=False) Compute the distance between this and an other point using the ellipsoidal Earth to plane projection aka Hubeny formula. |
isantipode(self, other, eps=2.220446049250313e-16) DEPRECATED, use method isantipodeTo. |
isantipodeTo(self, other, eps=2.220446049250313e-16) Check whether this and an other point are antipodal, on diametrically opposite sides of the earth. |
isequalTo(self, other, eps=None) Compare this point with an other point, ignoring height. |
isequalTo3(self, other, eps=None) Compare this point with an other point, including height. |
latlon2(self, ndigits=0) Return this point's lat- and longitude in `degrees`, rounded. |
latlon2round(self, ndigits=0) DEPRECATED, use method latlon2. |
latlon_(self, ndigits=0) DEPRECATED, use method latlon2. |
nearestOn6(self, points, closed=False, height=None, wrap=False) Locate the point on a path or polygon closest to this point. |
normal(self) Normalize this point to `abs(lat) <= 90` and `abs(lon) <= 180`. |
philam2(self, ndigits=0) Return this point's lat- and longitude in `radians`, rounded. |
points(self, points, closed=True) DEPRECATED, use method points2. |
points2(self, points, closed=True) Check a path or polygon represented by points. |
radii11(self, point2, point3) Return the radii of the `Circum-`, `In-`, Soddy and `Tangent` circles of a (planar) triangle formed by this and two other points. |
rhumbAzimuthTo(self, other, exact=False, radius=None) Return the azimuth (bearing) of a rhumb line (loxodrome) between this and an other (ellipsoidal) point. |
rhumbDestination(self, distance, azimuth, exact=False, radius=None, height=None) Return the destination point having travelled the given distance from this point along a rhumb line (loxodrome) at the given azimuth. |
rhumbDistanceTo(self, other, exact=False, radius=None) Return the distance from this to an other point along a rhumb line (loxodrome). |
rhumbLine(self, azimuth_other, exact=False, radius=None, name='', **caps) Get a rhumb line through this point at a given azimuth or through this and an other point. |
rhumbMidpointTo(self, other, exact=False, radius=None, height=None, fraction=0.5) Return the (loxodromic) midpoint on the rhumb line between this and an other point. |
thomasTo(self, other, wrap=False) Compute the distance between this and an other point using Thomas' formula. |
to2ab(self) DEPRECATED, use property philam. |
to3llh(self, height=None) DEPRECATED, use property latlonheight or `latlon.to3Tuple(height)`. |
to3xyz(self) DEPRECATED, use property xyz or method toNvector, toVector, toVector3d or perhaps (geocentric) toEcef. |
toCartesian(self, height=None, Cartesian=None, **Cartesian_kwds) Convert this point to cartesian, geocentric coordinates, also known as Earth-Centered, Earth-Fixed (ECEF). |
toEcef(self, height=None, M=False) Convert this point to geocentric coordinates, also known as Earth-Centered, Earth-Fixed (ECEF). |
toLocal(self, Xyz=None, ltp=None, **Xyz_kwds) Convert this geodetic point to local `X`, `Y` and `Z`. |
toLtp(self, Ecef=None) Return the local tangent plane (LTP) for this point. |
toNvector(self, h=None, Nvector=None, **Nvector_kwds) Convert this point to `n-vector` (normal to the earth's surface) components, including height. |
toStr(self, form=`'``dms``'`, joined=', ', m=`'``m``'`, **prec_sep_s_D_M_S) Convert this point to a "lat, lon[, +/-height]" string, formatted in the given `format`. |
toVector(self, Vector=None, **Vector_kwds) Convert this point to `n-vector` (normal to the earth's surface) components, ignoring height. |
toVector3d(self) Convert this point to `n-vector` (normal to the earth's surface) components, ignoring height. |
vincentysTo(self, other, radius=None, wrap=False) Compute the distance between this and an other point using Vincenty's spherical formula. |
Inherited from `named._NamedBase`: `__repr__`, `others`, `toRepr` Inherited from `named._Named`: `__imatmul__`, `__matmul__`, `__rmatmul__`, `attrs`, `classof`, `copy`, `dup`, `methodname`, `rename`, `toStr2` Inherited from `object`: `__delattr__`, `__format__`, `__getattribute__`, `__hash__`, `__new__`, `__reduce__`, `__reduce_ex__`, `__setattr__`, `__sizeof__`, `__subclasshook__`

Properties
| Ecef Get the ECEF class (EcefKarney), lazily.
| datum (INTERNAL) Must be overloaded, see function `notOverloaded`.
| height Get the height (`meter`).
| isEllipsoidal Check whether this point is ellipsoidal (`bool` or `None` if unknown).
| isEllipsoidalLatLon Get `LatLon` base.
| isSpherical Check whether this point is spherical (`bool` or `None` if unknown).
| isnormal Return `True` if this point is normal (`bool`), meaning `abs(lat) <= 90` and `abs(lon) <= 180`.
| lam Get the longitude (`radians`).
| lat Get the latitude (`degrees90`).
| latlon Get the lat- and longitude (LatLon2Tuple`(lat, lon)`).
| latlonheight Get the lat-, longitude and height (LatLon3Tuple`(lat, lon, height)`).
| lon Get the longitude (`degrees180`).
| phi Get the latitude (`radians`).
| philam Get the lat- and longitude (PhiLam2Tuple`(phi, lam)`).
| philamheight Get the lat-, longitude in `radians` and height (PhiLam3Tuple`(phi, lam, height)`).
| xyz Get the `n-vector` X, Y and Z components (Vector3Tuple`(x, y, z)`)
| xyzh Get the `n-vector` X, Y, Z and H components (Vector4Tuple`(x, y, z, h)`)
Inherited from `named._Named`: `classname`, `classnaming`, `iteration`, `name`, `named`, `named2`, `named3`, `named4` Inherited from `object`: `__class__`

Method Details

### PointsIter (self, points, loop=0, dedup=False) |
Return a `PointsIter` iterator. Arguments: `points` - The path or polygon points (`LatLon`[]) `loop` - Number of loop-back points (non-negative `int`). `dedup` - Skip duplicate points (`bool`). Returns: A new `PointsIter` iterator. Raises: `PointsError` - Insufficient number of `points`.

### __init__ (self, lat, lon, height=0, name='') (Constructor) |
New `LatLon`. Arguments: `lat` - Latitude (`degrees` or DMS `str` with N or S suffix). `lon` - Longitude (`degrees` or DMS `str` with E or W suffix). `height` - Optional height (`meter` above or below the earth surface). `name` - Optional name (`str`). Returns: New instance (`LatLon`). Raises: `RangeError` - Value of `lat` or `lon` outside the valid range and `rangerrors` set to `True`. `UnitError` - Invalid `lat`, `lon` or `height`. Overrides: object.__init__ Example:
    >>> p = LatLon(50.06632, -5.71475)
    >>> q = LatLon('50°03′59″N', """005°42'53"W""")

### __str__ (self) (Informal representation operator) |
Default `str(self)`. Overrides: object.__str__ (inherited documentation)

### antipode (self, height=None) |
Return the antipode, the point diametrically opposite to this point. Arguments: `height` - Optional height of the antipode (`meter`), this point's height otherwise. Returns: The antipodal point (`LatLon`).

### bounds (self, wide, tall, radius=6371008.771415) |
DEPRECATED, use method `boundsOf`. Decorators: `@deprecated_method`

### boundsOf (self, wide, tall, radius=6371008.771415, height=None) |
Return the SW and NE lat-/longitude of a great circle bounding box centered at this location. Arguments: `wide` - Longitudinal box width (`meter`, same units as `radius` or `degrees` if `radius` is `None`). `tall` - Latitudinal box size (`meter`, same units as `radius` or `degrees` if `radius` is `None`). `radius` - Mean earth radius (`meter`). `height` - Height for `latlonSW` and `latlonNE` (`meter`), overriding the point's height. Returns: A Bounds2Tuple`(latlonSW, latlonNE)`, the lower-left and upper-right corner (`LatLon`). See Also: https://www.Movable-Type.co.UK/scripts/latlong-db.html

### chordTo (self, other, height=None) |
Compute the length of the chord through the earth between this and an other point. Arguments: `other` - The other point (`LatLon`). `height` - Overriding height for both points (`meter`) or `None` for each point's height. Returns: The chord length (conventionally `meter`). Raises: `TypeError` - The `other` point is not `LatLon`.

### circin6 (self, point2, point3, eps=8.881784197001252e-16) |
Return the radius and center of the inscribed aka In-circle of the (planar) triangle formed by this and two other points. Arguments: `point2` - Second point (`LatLon`). `point3` - Third point (`LatLon`). `eps` - Tolerance for function pygeodesy.trilaterate3d2. Returns: Circin6Tuple`(radius, center, deltas, cA, cB, cC)`. The `center` and contact points `cA`, `cB` and `cC`, each an instance of this (sub-)class, are co-planar with this and the two given points, see the Note below. Raises: `ImportError` - Package `numpy` not found, not installed or older than version 1.10. `IntersectionError` - Near-coincident or -colinear points or a trilateration or `numpy` issue. `TypeError` - Invalid `point2` or `point3`. Note: The `center` is trilaterated in cartesian (ECEF) space and converted back to geodetic lat-, longitude and height. The latter, conventionally in `meter` indicates whether the `center` is above, below or on the surface of the earth model. If `deltas` is `None`, the `center` is unambigous. Otherwise `deltas` is a LatLon3Tuple`(lat, lon, height)` representing the differences between both results from pygeodesy.trilaterate3d2 and `center` is the mean thereof. See Also: Function pygeodesy.circin6, method circum3, Incircle and Contact Triangle.

### circum3 (self, point2, point3, circum=True, eps=8.881784197001252e-16) |
Return the radius and center of the smallest circle through or containing this and two other points. Arguments: `point2` - Second point (`LatLon`). `point3` - Third point (`LatLon`). `circum` - If `True` return the `circumradius` and `circumcenter`, always, ignoring the Meeus' Type I case (`bool`). `eps` - Tolerance for function pygeodesy.trilaterate3d2. Returns: A Circum3Tuple`(radius, center, deltas)`. The `center`, an instance of this (sub-)class, is co-planar with this and the two given points. If `deltas` is `None`, the `center` is unambigous. Otherwise `deltas` is a LatLon3Tuple`(lat, lon, height)` representing the difference between both results from pygeodesy.trilaterate3d2 and `center` is the mean thereof. Raises: `ImportError` - Package `numpy` not found, not installed or older than version 1.10. `IntersectionError` - Near-concentric, -coincident or -colinear points, incompatible `Ecef` classes or a trilateration or `numpy` issue. `TypeError` - Invalid `point2` or `point3`. Note: The `center` is trilaterated in cartesian (ECEF) space and converted back to geodetic lat-, longitude and height. The latter, conventionally in `meter` indicates whether the `center` is above, below or on the surface of the earth model. If `deltas` is `None`, the `center` is unambigous. Otherwise `deltas` is a LatLon3Tuple`(lat, lon, height)` representing the difference between both results from pygeodesy.trilaterate3d2 and `center` is the mean thereof. See Also: Function pygeodesy.circum3 and methods circin6 and circum4_.

### circum4_ (self, *points) |
Best-fit a sphere through this and two or more other points. Arguments: `points` - The other points (each a `LatLon`). Returns: Circum4Tuple`(radius, center, rank, residuals)` with `center` an instance of this (sub-)class. Raises: `ImportError` - Package `numpy` not found, not installed or older than version 1.10. `NumPyError` - Some `numpy` issue. `TypeError` - One of the `points` invalid. `ValueError` - Too few `points`. See Also: Function pygeodesy.circum4_ and circum3.

### compassAngle (self, other, adjust=True, wrap=False) |
DEPRECATED, use method compassAngleTo. Decorators: `@deprecated_method`

### compassAngleTo (self, other, adjust=True, wrap=False) |
Return the angle from North for the direction vector between this and an other point. Suitable only for short, non-near-polar vectors up to a few hundred Km or Miles. Use method `initialBearingTo` for larger distances. Arguments: `other` - The other point (`LatLon`). `adjust` - Adjust the longitudinal delta by the cosine of the mean latitude (`bool`). `wrap` - Wrap and pygeodesy.unroll180 longitudes and longitudinal delta (`bool`). Returns: Compass angle from North (`degrees360`). Raises: `TypeError` - The `other` point is not `LatLon`. Note: Courtesy of Martin Schultz. See Also: Local, flat earth approximation.

### cosineAndoyerLambertTo (self, other, wrap=False) |
Compute the distance between this and an other point using the Andoyer-Lambert correction of the Law of Cosines formula. Arguments: `other` - The other point (`LatLon`). `wrap` - Wrap and pygeodesy.unroll180 longitudes (`bool`). Returns: Distance (`meter`, same units as the axes of this point's datum ellipsoid). Raises: `TypeError` - The `other` point is not `LatLon`. See Also: Function pygeodesy.cosineAndoyerLambert and methods cosineForsytheAndoyerLambertTo, cosineLawTo, `distanceTo*`, equirectangularTo, euclideanTo, flatLocalTo/hubenyTo, flatPolarTo, haversineTo, thomasTo and vincentysTo.

### cosineForsytheAndoyerLambertTo (self, other, wrap=False) |
Compute the distance between this and an other point using the Forsythe-Andoyer-Lambert correction of the Law of Cosines formula. Arguments: `other` - The other point (`LatLon`). `wrap` - Wrap and pygeodesy.unroll180 longitudes (`bool`). Returns: Distance (`meter`, same units as the axes of this point's datum ellipsoid). Raises: `TypeError` - The `other` point is not `LatLon`. See Also: Function pygeodesy.cosineForsytheAndoyerLambert and methods cosineAndoyerLambertTo, cosineLawTo, `distanceTo*`, equirectangularTo, euclideanTo, flatLocalTo/hubenyTo, flatPolarTo, haversineTo, thomasTo and vincentysTo.

### cosineLawTo (self, other, radius=None, wrap=False) |
Compute the distance between this and an other point using the spherical Law of Cosines formula. Arguments: `other` - The other point (`LatLon`). `radius` - Mean earth radius (`meter`) or `None` for the mean radius of this point's datum ellipsoid. `wrap` - Wrap and pygeodesy.unroll180 longitudes (`bool`). Returns: Distance (`meter`, same units as `radius`). Raises: `TypeError` - The `other` point is not `LatLon`. See Also: Function pygeodesy.cosineLaw and methods cosineAndoyerLambertTo, cosineForsytheAndoyerLambertTo, `distanceTo*`, equirectangularTo, euclideanTo, flatLocalTo/hubenyTo, flatPolarTo, haversineTo, thomasTo and vincentysTo.

### destinationXyz (self, delta, LatLon=None, **LatLon_kwds) |
Calculate the destination using a local delta from this point. Arguments: `delta` - Local delta to the destination (XyzLocal, Enu, Ned or Local9Tuple). `LatLon` - Optional (geodetic) class to return the destination or `None`. `LatLon_kwds` - Optional, additional `LatLon` keyword arguments, ignored if `LatLon is None`. Returns: Destination as a `LatLon(lat, lon, **LatLon_kwds)` instance or if `LatLon is None`, a LatLon3Tuple`(lat, lon, height)` respectively LatLon4Tuple`(lat, lon, height, datum)` depending on whether a `datum` keyword is un-/specified. Raises: `TypeError` - Invalid `delta`, `LatLon` or `LatLon_kwds`.

### equals (self, other, eps=None) |
DEPRECATED, use method isequalTo. Decorators: `@deprecated_method`

### equals3 (self, other, eps=None) |
DEPRECATED, use method isequalTo3. Decorators: `@deprecated_method`

### equirectangularTo (self, other, radius=None, **options) |
Compute the distance between this and an other point using the Equirectangular Approximation / Projection. Suitable only for short, non-near-polar distances up to a few hundred Km or Miles. Use method haversineTo or `distanceTo*` for more accurate and/or larger distances. See function pygeodesy.equirectangular_ for more details, the available `options` and errors raised. Arguments: `other` - The other point (`LatLon`). `radius` - Mean earth radius (`meter`) or `None` for the mean radius of this point's datum ellipsoid. `options` - Optional keyword arguments for function pygeodesy.equirectangular. Returns: Distance (`meter`, same units as `radius`). Raises: `TypeError` - The `other` point is not `LatLon`. See Also: Function pygeodesy.equirectangular and methods cosineAndoyerLambertTo, cosineForsytheAndoyerLambertTo, cosineLawTo, `distanceTo*`, `euclideanTo`, flatLocalTo/hubenyTo, flatPolarTo, haversineTo, thomasTo and vincentysTo.

### euclideanTo (self, other, radius=None, **options) |
Approximate the `Euclidian` distance between this and an other point. See function pygeodesy.euclidean for the available `options`. Arguments: `other` - The other point (`LatLon`). `radius` - Mean earth radius (`meter`) or `None` for the mean radius of this point's datum ellipsoid. `options` - Optional keyword arguments for function pygeodesy.euclidean. Returns: Distance (`meter`, same units as `radius`). Raises: `TypeError` - The `other` point is not `LatLon`. See Also: Function pygeodesy.euclidean and methods cosineAndoyerLambertTo, cosineForsytheAndoyerLambertTo, cosineLawTo, `distanceTo*`, equirectangularTo, flatLocalTo/hubenyTo, flatPolarTo, haversineTo, thomasTo and vincentysTo.

### flatLocalTo (self, other, radius=None, wrap=False) |
Compute the distance between this and an other point using the ellipsoidal Earth to plane projection aka Hubeny formula. Arguments: `other` - The other point (`LatLon`). `radius` - Mean earth radius (`meter`) or `None` for the equatorial radius of this point's datum/ellipsoid. `wrap` - Wrap and pygeodesy.unroll180 longitudes (`bool`). Returns: Distance (`meter`, same units as `radius`). Raises: `TypeError` - The `other` point is not `LatLon`. `ValueError` - Invalid `radius`. See Also: Function pygeodesy.flatLocal/pygeodesy.hubeny, methods cosineAndoyerLambertTo, cosineForsytheAndoyerLambertTo, cosineLawTo, `distanceTo*`, equirectangularTo, euclideanTo, flatPolarTo, haversineTo, thomasTo and vincentysTo and local, flat Earth approximation.

### flatPolarTo (self, other, radius=None, wrap=False) |
Compute the distance between this and an other point using the polar coordinate flat-Earthformula. Arguments: `other` - The other point (`LatLon`). `radius` - Mean earth radius (`meter`) or `None` for the mean radius of this point's datum ellipsoid. `wrap` - Wrap and pygeodesy.unroll180 longitudes (`bool`). Returns: Distance (`meter`, same units as `radius`). Raises: `TypeError` - The `other` point is not `LatLon`. See Also: Function pygeodesy.flatPolar and methods cosineAndoyerLambertTo, cosineForsytheAndoyerLambertTo, cosineLawTo, `distanceTo*`, equirectangularTo, euclideanTo, flatLocalTo/hubenyTo, haversineTo, thomasTo and vincentysTo.

### hartzell (self, los=None, earth=None) |
Compute the intersection of a Line-Of-Sight (los) from this Point-Of-View (pov) with this point's ellipsoid surface. Arguments: `los` - Line-Of-Sight, direction to earth (Vector3d) or `None` to point to the ellipsoid's center. `earth` - The earth model (Datum, Ellipsoid, Ellipsoid2, a_f2Tuple or `scalar` radius in `meter`) overriding this point's `datum` ellipsoid. Returns: The ellipsoid intersection (`LatLon`) or this very instance if this `pov's height` is `0`. Raises: `IntersectionError` - Null `pov` or `los` vector, this `pov's height` is negative or `los` points outside the ellipsoid or in an opposite direction. `TypeError` - Invalid `los`. See Also: Function `hartzell` for further details.

### haversineTo (self, other, radius=None, wrap=False) |
Compute the distance between this and an other point using the Haversine formula. Arguments: `other` - The other point (`LatLon`). `radius` - Mean earth radius (`meter`) or `None` for the mean radius of this point's datum ellipsoid. `wrap` - Wrap and pygeodesy.unroll180 longitudes (`bool`). Returns: Distance (`meter`, same units as `radius`). Raises: `TypeError` - The `other` point is not `LatLon`. See Also: Function pygeodesy.haversine and methods cosineAndoyerLambertTo, cosineForsytheAndoyerLambertTo, cosineLawTo, `distanceTo*`, equirectangularTo, euclideanTo, flatLocalTo/hubenyTo, flatPolarTo, thomasTo and vincentysTo.

### height4 (self, earth=None, normal=True, LatLon=None, **LatLon_kwds) |
Compute the height above or below and the projection on this datum's ellipsoid surface. Arguments: `earth` - A datum, ellipsoid or earth radius overriding this datum (Datum, Ellipsoid, Ellipsoid2, a_f2Tuple or `meter`, conventionally). `normal` - If `True` the projection is the nearest point on the ellipsoid's surface, otherwise the intersection of the radial line to the center and the ellipsoid's surface. `LatLon` - Optional class to return the height and projection (`LatLon`) or `None`. `LatLon_kwds` - Optional, additional `LatLon` keyword arguments, ignored if `LatLon is None`. Returns: An instance of `LatLon` or if `LatLon is None`, a Vector4Tuple`(x, y, z, h)` with the projection `x`, `y` and `z` coordinates and height `h` in `meter`, conventionally. Raises: `TypeError` - Invalid `earth`. Note: Use keyword argument `height=0` to override `LatLon.height` to {0} or any other `scalar`, conventionally in `meter`. See Also: Ellipsoid.height4 for more information.

### heightStr (self, prec=-2, m=`'``m``'`) |
Return this `height` as `str`ing. Arguments: `prec` - Number of (decimal) digits, unstripped (`int`). `m` - Optional unit of the height (`str`). See Also: Function pygeodesy.hstr.

### hubenyTo (self, other, radius=None, wrap=False) |
Compute the distance between this and an other point using the ellipsoidal Earth to plane projection aka Hubeny formula. Arguments: `other` - The other point (`LatLon`). `radius` - Mean earth radius (`meter`) or `None` for the equatorial radius of this point's datum/ellipsoid. `wrap` - Wrap and pygeodesy.unroll180 longitudes (`bool`). Returns: Distance (`meter`, same units as `radius`). Raises: `TypeError` - The `other` point is not `LatLon`. `ValueError` - Invalid `radius`. See Also: Function pygeodesy.flatLocal/pygeodesy.hubeny, methods cosineAndoyerLambertTo, cosineForsytheAndoyerLambertTo, cosineLawTo, `distanceTo*`, equirectangularTo, euclideanTo, flatPolarTo, haversineTo, thomasTo and vincentysTo and local, flat Earth approximation.

### isantipode (self, other, eps=2.220446049250313e-16) |
DEPRECATED, use method isantipodeTo. Decorators: `@deprecated_method`

### isantipodeTo (self, other, eps=2.220446049250313e-16) |
Check whether this and an other point are antipodal, on diametrically opposite sides of the earth. Arguments: `other` - The other point (`LatLon`). `eps` - Tolerance for near-equality (`degrees`). Returns: `True` if points are antipodal within the given tolerance, `False` otherwise.

### isequalTo (self, other, eps=None) |
Compare this point with an other point, ignoring height. Arguments: `other` - The other point (`LatLon`). `eps` - Tolerance for equality (`degrees`). Returns: `True` if both points are identical, ignoring height, `False` otherwise. Raises: `TypeError` - The `other` point is not `LatLon` or mismatch of the `other` and this `class` or `type`. `UnitError` - Invalid `eps`. See Also: Method isequalTo3.

### isequalTo3 (self, other, eps=None) |
Compare this point with an other point, including height. Arguments: `other` - The other point (`LatLon`). `eps` - Tolerance for equality (`degrees`). Returns: `True` if both points are identical including height, `False` otherwise. Raises: `TypeError` - The `other` point is not `LatLon` or mismatch of the `other` and this `class` or `type`. See Also: Method isequalTo.

### latlon2 (self, ndigits=0) |
Return this point's lat- and longitude in `degrees`, rounded. Arguments: `ndigits` - Number of (decimal) digits (`int`). Returns: A LatLon2Tuple`(lat, lon)`, both `float` and rounded away from zero. Note: The `round`ed values are always `float`, also if `ndigits` is omitted.

### latlon2round (self, ndigits=0) |
DEPRECATED, use method latlon2. Decorators: `@deprecated_method`

### latlon_ (self, ndigits=0) |
DEPRECATED, use method latlon2. Decorators: `@deprecated_method`

### nearestOn6 (self, points, closed=False, height=None, wrap=False) |
Locate the point on a path or polygon closest to this point. Points are converted to and distances are computed in geocentric, cartesian space. Arguments: `points` - The path or polygon points (`LatLon`[]). `closed` - Optionally, close the polygon (`bool`). `height` - Optional height, overriding the height of this and all other points (`meter`). If `None`, take the height of points into account for distances. `wrap` - Wrap and pygeodesy.unroll180 longitudes (`bool`). Returns: A NearestOn6Tuple`(closest, distance, fi, j, start, end)` with the `closest`, the `start` and the `end` point each an instance of this `LatLon` and `distance` in `meter`, same units as the cartesian axes. Raises: `PointsError` - Insufficient number of `points`. `TypeError` - Some `points` or some `points`' `Ecef` invalid. `ValueError` - Some `points`' `Ecef` is incompatible. See Also: Function pygeodesy.nearestOn6.

### normal (self) |
Normalize this point to `abs(lat) <= 90` and `abs(lon) <= 180`. Returns: `True` if this point was normal, `False` if it wasn't (but is now). See Also: Property isnormal and function pygeodesy.normal.

### philam2 (self, ndigits=0) |
Return this point's lat- and longitude in `radians`, rounded. Arguments: `ndigits` - Number of (decimal) digits (`int`). Returns: A PhiLam2Tuple`(phi, lam)`, both `float` and rounded away from zero. Note: The `round`ed values are always `float`, also if `ndigits` is omitted.

### points (self, points, closed=True) |
DEPRECATED, use method points2. Decorators: `@deprecated_method`

### points2 (self, points, closed=True) |
Check a path or polygon represented by points. Arguments: `points` - The path or polygon points (`LatLon`[]) `closed` - Optionally, consider the polygon closed, ignoring any duplicate or closing final `points` (`bool`). Returns: A Points2Tuple`(number, points)`, `int` and `list` or `tuple`. Raises: `PointsError` - Insufficient number of `points`. `TypeError` - Some `points` are not `LatLon`.

### radii11 (self, point2, point3) |
Return the radii of the `Circum-`, `In-`, Soddy and `Tangent` circles of a (planar) triangle formed by this and two other points. Arguments: `point2` - Second point (`LatLon`). `point3` - Third point (`LatLon`). Returns: Radii11Tuple`(rA, rB, rC, cR, rIn, riS, roS, a, b, c, s)`. Raises: `IntersectionError` - Near-coincident or -colinear points. `TypeError` - Invalid `point2` or `point3`. See Also: Function pygeodesy.radii11, Incircle, Soddy Circles and Tangent Circles.

### rhumbAzimuthTo (self, other, exact=False, radius=None) |
Return the azimuth (bearing) of a rhumb line (loxodrome) between this and an other (ellipsoidal) point. Arguments: `other` - The other point (`LatLon`). `exact` - If `True`, use the exact Rhumb (`bool`), default `False`. `radius` - Optional earth radius (`meter`) or earth model (Datum, Ellipsoid, Ellipsoid2 or a_f2Tuple), overriding this point's datum. Returns: Rhumb azimuth (compass `degrees360`). Raises: `TypeError` - The `other` point is incompatible or `radius` is invalid.

### rhumbDestination (self, distance, azimuth, exact=False, radius=None, height=None) |
Return the destination point having travelled the given distance from this point along a rhumb line (loxodrome) at the given azimuth. Arguments: `distance` - Distance travelled (`meter`, same units as this point's datum (ellipsoid) axes or `radius`, may be negative. `azimuth` - Azimuth (bearing) at this point (compass `degrees`). `exact` - If `True`, use the exact Rhumb (`bool`), default `False`. `radius` - Optional earth radius (`meter`) or earth model (Datum, Ellipsoid, Ellipsoid2 or a_f2Tuple), overriding this point's datum. `height` - Optional height, overriding the default height (`meter`). Returns: The destination point (ellipsoidal `LatLon`). Raises: `TypeError` - Invalid `radius`. `ValueError` - Invalid `distance`, `azimuth`, `radius` or `height`.

### rhumbDistanceTo (self, other, exact=False, radius=None) |
Return the distance from this to an other point along a rhumb line (loxodrome). Arguments: `other` - The other point (`LatLon`). `exact` - If `True`, use the exact Rhumb (`bool`), default `False`. `radius` - Optional earth radius (`meter`) or earth model (Datum, Ellipsoid, Ellipsoid2 or a_f2Tuple), overriding this point's datum. Returns: Distance (`meter`, the same units as this point's datum (ellipsoid) axes or `radius`. Raises: `TypeError` - The `other` point is incompatible or `radius` is invalid. `ValueError` - Invalid `radius`.

### rhumbLine (self, azimuth_other, exact=False, radius=None, name='', **caps) |
Get a rhumb line through this point at a given azimuth or through this and an other point. Arguments: `azimuth_other` - The azimuth of the rhumb line (compass) `degrees` or the other point (`LatLon`). `exact` - If `True`, use the exact Rhumb (`bool`), default `False`. `radius` - Optional earth radius (`meter`) or earth model (Datum, Ellipsoid, Ellipsoid2 or a_f2Tuple), overriding this point's datum. `name` - Optional name (`str`). `caps` - Optional `caps`, see RhumbLine `caps`. Returns: A RhumbLine instance. Raises: `TypeError` - Invalid `radius` or B``azimuth_other`` not a `scalar` nor a `LatLon`. See Also: Classes RhumbLine and Rhumb, property Rhumb.exact and methods Rhumb.DirectLine and Rhumb.InverseLine.

### rhumbMidpointTo (self, other, exact=False, radius=None, height=None, fraction=0.5) |
Return the (loxodromic) midpoint on the rhumb line between this and an other point. Arguments: `other` - The other point (`LatLon`). `exact` - If `True`, use the exact Rhumb (`bool`), default `False`. `radius` - Optional earth radius (`meter`) or earth model (Datum, Ellipsoid, Ellipsoid2 or a_f2Tuple), overriding this point's datum. `height` - Optional height, overriding the mean height (`meter`). `fraction` - Midpoint location from this point (`scalar`), may be negative or greater than 1.0. Returns: The midpoint at the given `fraction` along the rhumb line (`LatLon`). Raises: `TypeError` - The `other` point is incompatible or `radius` is invalid. `ValueError` - Invalid `height` or `fraction`.

### thomasTo (self, other, wrap=False) |
Compute the distance between this and an other point using Thomas' formula. Arguments: `other` - The other point (`LatLon`). `wrap` - Wrap and pygeodesy.unrollPI longitudes (`bool`). Returns: Distance (`meter`, same units as the axes of this point's datum ellipsoid). Raises: `TypeError` - The `other` point is not `LatLon`. See Also: Function pygeodesy.thomas and methods cosineAndoyerLambertTo, cosineForsytheAndoyerLambertTo, cosineLawTo, `distanceTo*`, equirectangularTo, euclideanTo, flatLocalTo/hubenyTo, flatPolarTo, haversineTo and vincentysTo.

### to2ab (self) |
DEPRECATED, use property philam. Decorators: `@deprecated_method`

### to3llh (self, height=None) |
DEPRECATED, use property latlonheight or `latlon.to3Tuple(height)`. Decorators: `@deprecated_method`

### to3xyz (self) |
DEPRECATED, use property xyz or method toNvector, toVector, toVector3d or perhaps (geocentric) toEcef. Decorators: `@deprecated_method`

### toCartesian (self, height=None, Cartesian=None, **Cartesian_kwds) |
Convert this point to cartesian, geocentric coordinates, also known as Earth-Centered, Earth-Fixed (ECEF). Arguments: `height` - Optional height, overriding this point's height (`meter`, conventionally). `Cartesian` - Optional class to return the geocentric coordinates (`Cartesian`) or `None`. `Cartesian_kwds` - Optional, additional `Cartesian` keyword arguments, ignored if `Cartesian is None`. Returns: A `Cartesian` or if `Cartesian` is `None`, an Ecef9Tuple`(x, y, z, lat, lon, height, C, M, datum)` with `C=0` and `M` if available. Raises: `TypeError` - Invalid `Cartesian` or `Cartesian_kwds`.

### toEcef (self, height=None, M=False) |
Convert this point to geocentric coordinates, also known as Earth-Centered, Earth-Fixed (ECEF). Arguments: `height` - Optional height, overriding this point's height (`meter`, conventionally). `M` - Optionally, include the rotation EcefMatrix (`bool`). Returns: An Ecef9Tuple`(x, y, z, lat, lon, height, C, M, datum)` with `C=0` and `M` if available. Raises: `EcefError` - A `.datum` or an ECEF issue.

### toLocal (self, Xyz=None, ltp=None, **Xyz_kwds) |
Convert this geodetic point to local `X`, `Y` and `Z`. Arguments: `Xyz` - Optional class to return `X`, `Y` and `Z` (XyzLocal, Enu, Ned) or `None`. `ltp` - The local tangent plane (LTP) to use, overriding this point's LTP (Ltp). `Xyz_kwds` - Optional, additional `Xyz` keyword arguments, ignored if `Xyz is None`. Returns: An `Xyz` instance or if `Xyz is None`, a Local9Tuple`(x, y, z, lat, lon, height, ltp, ecef, M)` with `M=None`, always. Raises: `TypeError` - Invalid `ltp`.

### toLtp (self, Ecef=None) |
Return the local tangent plane (LTP) for this point. Arguments: `Ecef` - Optional ECEF class (EcefKarney, ... EcefYou), overriding this point's `Ecef`.

### toNvector (self, h=None, Nvector=None, **Nvector_kwds) |
Convert this point to `n-vector` (normal to the earth's surface) components, including height. Arguments: `h` - Optional height, overriding this point's height (`meter`). `Nvector` - Optional class to return the `n-vector` components (`Nvector`) or `None`. `Nvector_kwds` - Optional, additional `Nvector` keyword arguments, ignored if `Nvector is None`. Returns: A `Nvector` or a Vector4Tuple`(x, y, z, h)` if `Nvector` is `None`. Raises: `TypeError` - Invalid `Nvector` or `Nvector_kwds`.

### toStr (self, form=`'``dms``'`, joined=', ', m=`'``m``'`, **prec_sep_s_D_M_S) |
Convert this point to a "lat, lon[, +/-height]" string, formatted in the given `format`. Arguments: `form` - The lat-/longitude `format` to use (`str`), see functions pygeodesy.latDMS or pygeodesy.lonDMS. `joined` - Separator to join the lat-, longitude and heigth strings (`str` or `None` or `NN` for non-joined). `m` - Optional unit of the height (`str`), use `None` to exclude height from the returned string. `prec_sep_s_D_M_S` - Optional `precision`, `separator`, `s_D`, `s_M`, `s_S` and `s_DMS` keyword arguments, see function pygeodesy.latDMS or pygeodesy.lonDMS. Returns: This point in the specified `format`, etc. (`str` or a 2- or 3-tuple `(lat_str, lon_str[, height_str])` if `joined=NN` or `joined=None`). Overrides: named._Named.toStr See Also: Function pygeodesy.latDMS or pygeodesy.lonDMS for more details about keyword arguments `format`, `precision`, `separator`, `s_D`, `s_M`, `s_S` and `s_DMS`. Example:
    >>> LatLon(51.4778, -0.0016).toStr()  # 51°28′40″N, 000°00′06″W
    >>> LatLon(51.4778, -0.0016).toStr(F_D)  # 51.4778°N, 000.0016°W
    >>> LatLon(51.4778, -0.0016, 42).toStr()  # 51°28′40″N, 000°00′06″W, +42.00m

### toVector (self, Vector=None, **Vector_kwds) |
Convert this point to `n-vector` (normal to the earth's surface) components, ignoring height. Arguments: `Vector` - Optional class to return the `n-vector` components (Vector3d) or `None`. `Vector_kwds` - Optional, additional `Vector` keyword arguments, ignored if `Vector is None`. Returns: A `Vector` or a Vector3Tuple`(x, y, z)` if `Vector` is `None`. Raises: `TypeError` - Invalid `Vector` or `kwds`. Note: These are `n-vector` x, y and z components, NOT geocentric (ECEF) x, y and z coordinates!

### toVector3d (self) |
Convert this point to `n-vector` (normal to the earth's surface) components, ignoring height. Returns: Unit vector (Vector3d). Note: These are `n-vector` x, y and z components, NOT geocentric (ECEF) x, y and z coordinates!

### vincentysTo (self, other, radius=None, wrap=False) |
Compute the distance between this and an other point using Vincenty's spherical formula. Arguments: `other` - The other point (`LatLon`). `radius` - Mean earth radius (`meter`) or `None` for the mean radius of this point's datum ellipsoid. `wrap` - Wrap and pygeodesy.unroll180 longitudes (`bool`). Returns: Distance (`meter`, same units as `radius`). Raises: `TypeError` - The `other` point is not `LatLon`. See Also: Function pygeodesy.vincentys and methods cosineAndoyerLambertTo, cosineForsytheAndoyerLambertTo, cosineLawTo, `distanceTo*`, equirectangularTo, euclideanTo, flatLocalTo/hubenyTo, flatPolarTo, haversineTo and thomasTo.

Property Details

### Ecef Get the ECEF class (EcefKarney), lazily. Get method: Ecef(self) - Get the ECEF class (EcefKarney), lazily. Set method: _fset_error(inst, val) - Throws an `AttributeError`, always. Delete Method: _fdel(inst) - Zap the cached/memoized `property` value.

### datum (INTERNAL) Must be overloaded, see function `notOverloaded`. Get method: datum(self) - (INTERNAL) Must be overloaded, see function `notOverloaded`. Set method: _fset_error(inst, val) - Throws an `AttributeError`, always. Delete Method: _fdel(inst) - Zap the cached/memoized `property` value.

### height Get the height (`meter`). Get method: height(self) - Get the height (`meter`). Set method: height(self, height) - Set the height (`meter`). Delete Method: _fdel(inst) - Zap the cached/memoized `property` value.

### isEllipsoidal Check whether this point is ellipsoidal (`bool` or `None` if unknown). Get method: isEllipsoidal(self) - Check whether this point is ellipsoidal (`bool` or `None` if unknown). Set method: _fset_error(inst, val) - Throws an `AttributeError`, always. Delete Method: _fdel(inst) - Zap the cached/memoized `property` value.

### isEllipsoidalLatLon Get `LatLon` base. Get method: isEllipsoidalLatLon(self) - Get `LatLon` base. Set method: _fset_error(inst, val) - Throws an `AttributeError`, always. Delete Method: _fdel(inst) - Zap the cached/memoized `property` value.

### isSpherical Check whether this point is spherical (`bool` or `None` if unknown). Get method: isSpherical(self) - Check whether this point is spherical (`bool` or `None` if unknown). Set method: _fset_error(inst, val) - Throws an `AttributeError`, always. Delete Method: _fdel(inst) - Zap the cached/memoized `property` value.

### isnormal Return `True` if this point is normal (`bool`), meaning `abs(lat) <= 90` and `abs(lon) <= 180`. Get method: isnormal(self) - Return `True` if this point is normal (`bool`), meaning `abs(lat) <= 90` and `abs(lon) <= 180`. Set method: _fset_error(inst, val) - Throws an `AttributeError`, always. Delete Method: _fdel(inst) - Zap the cached/memoized `property` value. See Also: Functions pygeodesy.isnormal and pygeodesy.normal.

### lam Get the longitude (`radians`). Get method: lam(self) - Get the longitude (`radians`). Set method: _fset_error(inst, val) - Throws an `AttributeError`, always. Delete Method: _fdel(inst) - Zap the cached/memoized `property` value.

### lat Get the latitude (`degrees90`). Get method: lat(self) - Get the latitude (`degrees90`). Set method: lat(self, lat) - Set the latitude (`str[N|S]` or `degrees`). Delete Method: _fdel(inst) - Zap the cached/memoized `property` value.

### latlon Get the lat- and longitude (LatLon2Tuple`(lat, lon)`). Get method: latlon(self) - Get the lat- and longitude (LatLon2Tuple`(lat, lon)`). Set method: latlon(self, latlonh) - Set the lat- and longitude and optionally the height (2- or 3-tuple or comma- or space-separated `str` of `degrees90`, `degrees180` and `meter`). Delete Method: _fdel(inst) - Zap the cached/memoized `property` value.

### latlonheight Get the lat-, longitude and height (LatLon3Tuple`(lat, lon, height)`). Get method: latlonheight(self) - Get the lat-, longitude and height (LatLon3Tuple`(lat, lon, height)`). Set method: _fset_error(inst, val) - Throws an `AttributeError`, always. Delete Method: _fdel(inst) - Zap the cached/memoized `property` value.

### lon Get the longitude (`degrees180`). Get method: lon(self) - Get the longitude (`degrees180`). Set method: lon(self, lon) - Set the longitude (`str[E|W]` or `degrees`). Delete Method: _fdel(inst) - Zap the cached/memoized `property` value.

### phi Get the latitude (`radians`). Get method: phi(self) - Get the latitude (`radians`). Set method: _fset_error(inst, val) - Throws an `AttributeError`, always. Delete Method: _fdel(inst) - Zap the cached/memoized `property` value.

### philam Get the lat- and longitude (PhiLam2Tuple`(phi, lam)`). Get method: philam(self) - Get the lat- and longitude (PhiLam2Tuple`(phi, lam)`). Set method: _fset_error(inst, val) - Throws an `AttributeError`, always. Delete Method: _fdel(inst) - Zap the cached/memoized `property` value.

### philamheight Get the lat-, longitude in `radians` and height (PhiLam3Tuple`(phi, lam, height)`). Get method: philamheight(self) - Get the lat-, longitude in `radians` and height (PhiLam3Tuple`(phi, lam, height)`). Set method: _fset_error(inst, val) - Throws an `AttributeError`, always. Delete Method: _fdel(inst) - Zap the cached/memoized `property` value.

### xyz Get the `n-vector` X, Y and Z components (Vector3Tuple`(x, y, z)`) Get method: xyz(self) - Get the `n-vector` X, Y and Z components (Vector3Tuple`(x, y, z)`) Set method: _fset_error(inst, val) - Throws an `AttributeError`, always. Delete Method: _fdel(inst) - Zap the cached/memoized `property` value. Note: These are `n-vector` x, y and z components, NOT geocentric (ECEF) x, y and z coordinates!

### xyzh Get the `n-vector` X, Y, Z and H components (Vector4Tuple`(x, y, z, h)`) Get method: xyzh(self) - Get the `n-vector` X, Y, Z and H components (Vector4Tuple`(x, y, z, h)`) Set method: _fset_error(inst, val) - Throws an `AttributeError`, always. Delete Method: _fdel(inst) - Zap the cached/memoized `property` value. Note: These are `n-vector` x, y and z components, NOT geocentric (ECEF) x, y and z coordinates!