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

Class EcefKarney

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

Conversion between geodetic and geocentric, aka Earth-Centered, Earth-Fixed (ECEF) coordinates transcoded from Karney's C++ Geocentric methods.

Instance Methods
 
forward(self, latlonh, lon=None, height=0, M=False, name='')
Convert from geodetic (lat, lon, height) to geocentric (x, y, z).
 
reverse(self, xyz, y=None, z=None, M=False, name='')
Convert from geocentric (x, y, z) to geodetic (lat, lon, height).

Inherited from _EcefBase: __init__, toStr

Inherited from named._NamedBase: __repr__, __str__, others, toRepr

Inherited from named._Named: _DOT_, attrs, classof, copy, rename, toStr2

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __setattr__, __sizeof__, __subclasshook__

Properties
  hmax
Get the distance or height limit (meter, conventionally).

Inherited from _EcefBase: a, datum, ellipsoid, equatoradius, equatorialRadius, f, flattening

Inherited from named._Named: classname, classnaming, name, named, named2, named3, named4

Inherited from object: __class__

Method Details

forward (self, latlonh, lon=None, height=0, M=False, name='')

 

Convert from geodetic (lat, lon, height) to geocentric (x, y, z).

Arguments:
  • latlonh - Either a LatLon, an Ecef9Tuple or scalar latitude (degrees).
  • lon - Optional scalar longitude for scalar latlonh (degrees).
  • height - Optional height (meter), vertically above (or below) the surface of the ellipsoid.
  • M - Optionally, return the rotation EcefMatrix (bool).
  • name - Optional name (str).
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, optional M (EcefMatrix) 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°.
Overrides: _EcefBase.forward

Note: Let v be a unit vector located at (lat, lon, h). We can express v as column vectors in one of two ways, v1 in east, north, up coordinates (where the components are relative to a local coordinate system at C(lat0, lon0, h0)) or as v0 in geocentric x, y, z coordinates. Then, v0 = M ⋅ v1 where M is the rotation matrix.

reverse (self, xyz, y=None, z=None, M=False, name='')

 

Convert from geocentric (x, y, z) to geodetic (lat, lon, height).

Arguments:
  • xyz - A geocentric (Cartesian, Ecef9Tuple) or scalar ECEF x coordinate (meter).
  • y - ECEF y coordinate for scalar xyz and z (meter).
  • z - ECEF z coordinate for scalar xyz and y (meter).
  • M - Optionally, return the rotation EcefMatrix (bool).
  • name - Optional name (str).
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, optional M (EcefMatrix) and datum if available.
Raises:
  • EcefError - Invalid xyz or scalar x or y and/or z not scalar for scalar xyz.
Overrides: _EcefBase.reverse

Note: In general, there are multiple solutions and the result which minimizes height is returned, i.e., (lat, lon) corresponds to the closest point on the ellipsoid. If there are still multiple solutions with different latitudes (applies only if z = 0), then the solution with lat > 0 is returned. If there are still multiple solutions with different longitudes (applies only if x = y = 0) then lon = 0 is returned. The returned height value is not below −E.a * (1 − E.e2) / sqrt(1 − E.e2 * sin(lat)**2). The returned lon is in the range [−180°, 180°]. Like forward above, v1 = Transpose(M) ⋅ v0.


Property Details

hmax

Get the distance or height limit (meter, conventionally).

Get method:
hmax(self) - Get the distance or height limit (meter, conventionally).
Set method:
_fset_error(inst, val) - Throws an AttributeError, always.
Delete Method:
_fdel(inst) - Zap the cached/memoized property value.