Package pygeodesy :: Module ecef :: Class EcefVeness |
[frames] | no frames]

# Class EcefVeness

      object --+
               |
    named._Named --+
                   |
    named._NamedBase --+
                       |
               _EcefBase --+
                           |
                          EcefVeness

Conversion between geodetic and geocentric, aka Earth-Centered, Earth-Fixed (ECEF) coordinates transcribed from Chris Veness' JavaScript classes LatLonEllipsoidal, Cartesian.

See Also: A Guide to Coordinate Systems in Great Britain, section B) Converting between 3D Cartesian and ellipsoidal latitude, longitude and height coordinates.

Instance Methods
__init__(self, a_ellipsoid, f=None, name=`'````'`) New EcefVeness converter. |
forward(self, latlonh, lon=None, height=0, M=False) Convert from geodetic `(lat, lon, height)` to geocentric `(x, y, z)`. |
reverse(self, xyz, y=None, z=None, **no_M) Convert from geocentric `(x, y, z)` to geodetic `(lat, lon, height)` transcribed from Chris Veness' JavaScript. |
Inherited from `_EcefBase`: `toStr` Inherited from `named._NamedBase`: `__repr__`, `__str__`, `others`, `toStr2` Inherited from `named._Named`: `classof`, `copy` Inherited from `object`: `__delattr__`, `__format__`, `__getattribute__`, `__hash__`, `__new__`, `__reduce__`, `__reduce_ex__`, `__setattr__`, `__sizeof__`, `__subclasshook__`

Properties
Inherited from `_EcefBase`: `a`, `datum`, `ellipsoid`, `equatorialRadius`, `f`, `flattening` Inherited from `named._Named`: `classname`, `classnaming`, `name`, `named`, `named2` Inherited from `object`: `__class__`

Method Details

### __init__(self, a_ellipsoid, f=None, name=`'````'`) (Constructor) |
New EcefVeness converter. Parameters: `a_ellipsoid` - An ellipsoid (Ellipsoid), a datum (Datum) or `scalar` for the major, equatorial radius of the ellipsoid (`meter`). `f` - `None` or the ellipsoid flattening (`scalar`), required for `scalar` `a_datum_ellipsoid`, `f`=0 represents a sphere, negative `f` a prolate ellipsoid. `name` - Optional name (`str`). Raises: `EcefError` - If `a_ellipsoid` not Ellipsoid, Datum or `scalar` or `f` not `scalar` or if `scalar` `a_ellipsoid` not positive or `f` not less than 1.0. Overrides: object.__init__

### forward(self, latlonh, lon=None, height=0, M=False) |
Convert from geodetic `(lat, lon, height)` to geocentric `(x, y, z)`. Parameters: `latlonh` - Either a `LatLon`, an Ecef9Tuple or `scalar` latitude in `degrees`. `lon` - Optional `scalar` longitude in `degrees` for `scalar` `latlonh`. `height` - Optional height in `meter`, vertically above (or below) the surface of the ellipsoid. `M` - Optionally, return the rotation EcefMatrix (`bool`). Returns: An Ecef9Tuple`(x, y, z, lat, lon, height, C, M, datum)` with geocentric `(x, y, z)` coordinates for the given geodetic ones `(lat, lon, height)`, case `C` 0, EcefMatrix `M` and `datum` if available. Raises: `EcefError` - If `latlonh` not `LatLon`, Ecef9Tuple or `scalar` or `lon` not `scalar` for `scalar` `latlonh` or `abs(lat)` exceeds 90°.

### reverse(self, xyz, y=None, z=None, **no_M) |
Convert from geocentric `(x, y, z)` to geodetic `(lat, lon, height)` transcribed from Chris Veness' JavaScript. Uses B. R. Bowring’s formulation for μm precision in concise form: 'The accuracy of geodetic latitude and height equations', Survey Review, Vol 28, 218, Oct 1985. Parameters: `xyz` - Either an Ecef9Tuple, an `(x, y, z)` 3-tuple or `scalar` ECEF `x` coordinate in `meter`. `y` - ECEF `y` coordinate in `meter` for `scalar` `xyz` and `z`. `z` - ECEF `z` coordinate in `meter` for `scalar` `xyz` and `y`. `no_M` - Rotation matrix `M` not available. Returns: An Ecef9Tuple`(x, y, z, lat, lon, height, C, M, datum)` with geodetic coordinates `(lat, lon, height)` for the given geocentric ones `(x, y, z)`, case `C`, EcefMatrix `M` always `None` and `datum` if available. Raises: `EcefError` - If `xyz` not Ecef9Tuple or `scalar` `x` or `y` and/or `z` not `scalar` for `scalar` `xyz`. See Also: Ralph M. Toms 'An Efficient Algorithm for Geocentric to Geodetic Coordinate Conversion', Sept 1995 and 'An Improved Algorithm for Geocentric to Geodetic Coordinate Conversion', Apr 1996, both from Lawrence Livermore National Laboratory (LLNL).