Sgp4Ex.CoordinateSystems (Sgp4Ex v0.2.1)

View Source

Coordinate system transformations for satellite positions.

Provides conversions between:

  • TEME (True Equator Mean Equinox) - SGP4 output frame
  • ECEF (Earth-Centered Earth-Fixed) / ITRF
  • Geodetic (latitude, longitude, altitude) using WGS84

Summary

Functions

Convert ECEF Cartesian coordinates to geodetic (lat/lon/alt).

Convert TEME coordinates to ECEF (Earth-Centered Earth-Fixed).

Convert TEME position to geodetic coordinates (latitude, longitude, altitude).

Functions

ecef_to_geodetic(arg)

@spec ecef_to_geodetic({float(), float(), float()}) ::
  {:ok, %{latitude: float(), longitude: float(), altitude_km: float()}}

Convert ECEF Cartesian coordinates to geodetic (lat/lon/alt).

Uses iterative algorithm to account for Earth's ellipsoid shape. Based on Vallado's algorithm.

teme_to_ecef(arg, datetime)

@spec teme_to_ecef({float(), float(), float()}, DateTime.t()) ::
  {float(), float(), float()}

Convert TEME coordinates to ECEF (Earth-Centered Earth-Fixed).

Uses simplified conversion without polar motion corrections.

teme_to_geodetic(arg, datetime)

@spec teme_to_geodetic({float(), float(), float()}, DateTime.t()) ::
  {:ok, %{latitude: float(), longitude: float(), altitude_km: float()}}

Convert TEME position to geodetic coordinates (latitude, longitude, altitude).

This is the main convenience function that chains TEME → ECEF → Geodetic conversions.

Parameters

  • teme_position - Position in TEME frame {x, y, z} in km
  • datetime - UTC datetime for the position

Returns

{:ok, %{latitude: lat, longitude: lon, altitude_km: alt}} where:

  • latitude - Geodetic latitude in degrees (-90 to 90)
  • longitude - Geodetic longitude in degrees (-180 to 180)
  • altitude_km - Height above WGS84 ellipsoid in kilometers