ITRF (International Terrestrial Reference Frame) Coordinate

class satkit.itrfcoord(*args, **kwargs)

Representation of a coordinate in the International Terrestrial Reference Frame (ITRF)

Notes:

  • This coordinate object can be created from and also output to Geodetic coordinates (latitude, longitude, height above ellipsoid).

  • Functions are also available to provide rotation quaternions to the East-North-Up frame and North-East-Down frame at this coordinate

Parameters:
  • vec (numpy.ndarray, list, or 3-element tuple of floats, optional) – ITRF Cartesian location in meters

  • latitude_deg (float, optional) – Latitude in degrees

  • longitude_deg (float, optional) – Longitude in degrees

  • latitude_rad (float, optional) – Latitude in radians

  • longitude_rad (float, optional) – Longitude in radians

  • altitude (float, optional) – Height above ellipsoid, meters

  • height (float, optional) – Height above ellipsoid, meters

Returns:

New ITRF coordinate

Return type:

itrfcoord

Example

  • Create ITRF coord from Cartesian

>>> coord = itrfcoord([ 1523128.63570828 -4461395.28873207  4281865.94218203 ])
>>> print(coord)
ITRFCoord(lat:  42.4400 deg, lon: -71.1500 deg, hae:  0.10 km)
  • Create ITRF coord from Geodetic

>>> coord = itrfcoord(latitude_deg=42.44, longitude_deg=-71.15, altitude=100)
>>> print(coord)
ITRFCoord(lat:  42.4400 deg, lon: -71.1500 deg, hae:  0.10 km)
property altitude: float

Altitude above ellipsoid, in meters

geodesic_distance(other: itrfcoord) tuple[float, float, float]

Use Vincenty formula to compute geodesic distance: https://en.wikipedia.org/wiki/Vincenty%27s_formulae

Returns:

(distance in meters, initial heading in radians, heading at destination in radians)

Return type:

tuple[float, float, float]

property geodetic_deg: tuple[float, float, float]

Geodetic position in degrees

Returns:

Tuple with 3 elements representing the geodetic position. First element is latitude in degrees, second is longitude in degrees, and third is altitude in meters

Return type:

tuple[float, float, float]

property geodetic_rad: tuple[float, float, float]

Geodetic position in radians

Returns:

Tuple with 3 elements representing the geodetic position. First element is latitude in radians, second is longitude in radians, and third is altitude in meters

Return type:

tuple[float, float, float]

property latitude_deg: float

Latitude in degrees

property latitude_rad: float

Latitude in radians

property longitude_deg: float

Longitude in degrees

property longitude_rad: float

Longitude in radians

move_with_heading(distance: float, heading_rad: float) itrfcoord

Move a distance along the Earth surface with a given initial heading

Parameters:
  • distance (float) – Distance to move in meters

  • heading_rad (float) – Initial heading in radians

Notes

Altitude is assumed to be zero

Use Vincenty formula to compute position: https://en.wikipedia.org/wiki/Vincenty%27s_formulae

Returns:

(distance in meters, initial heading in radians, heading at destination in radians)

Return type:

tuple[float, float, float]

property qenu2itrf: quaternion

Quaternion representiong rotation from East-North-Up (ENU) to ITRF at this location

Returns:

Quaternion representiong rotation from East-North-Up (ENU) to ITRF at this location

Return type:

satkit.quaternion

property qned2itrf: quaternion

Quaternion representing rotation from North-East-Down (NED) to ITRF at this location

Returns:

Quaternion representiong rotation from North-East-Down (NED) to ITRF at this location

Return type:

satkit.quaternion

property vector: numpy.typing.NDArray[numpy.float64]

Cartesian ITRF coord as numpy array

Returns:

3-element numpy array representing the ITRF Cartesian coordinate in meters

Return type:

npt.NDArray[np.float64]