Skip to content

Geodetic and Geocentric Coordinates

Functions for converting between geodetic, geocentric, and ECEF coordinates.

Geodetic Conversions

position_geodetic_to_ecef builtin

position_geodetic_to_ecef(x_geod: ndarray, angle_format: AngleFormat) -> Any

Convert geodetic position to ECEF Cartesian coordinates.

Transforms a position from geodetic coordinates (latitude, longitude, altitude) using the WGS84 ellipsoid model to Earth-Centered Earth-Fixed (ECEF) Cartesian coordinates.

Parameters:

Name Type Description Default
x_geod ndarray

Geodetic position [latitude, longitude, altitude] where latitude is in radians or degrees, longitude is in radians or degrees, and altitude is in meters above the WGS84 ellipsoid.

required
angle_format AngleFormat

Angle format for input angular coordinates (RADIANS or DEGREES).

required

Returns:

Type Description
ndarray

ECEF Cartesian position [x, y, z] in meters.

Example
import brahe as bh
import numpy as np

# Convert geodetic coordinates (GPS-like) to ECEF
lat, lon, alt = 40.0, -105.0, 1655.0  # Boulder, CO (degrees, meters)
x_geod = np.array([lat, lon, alt])
x_ecef = bh.position_geodetic_to_ecef(x_geod, bh.AngleFormat.DEGREES)
print(f"ECEF position: {x_ecef}")

position_ecef_to_geodetic builtin

position_ecef_to_geodetic(x_ecef: ndarray, angle_format: AngleFormat) -> Any

Convert ECEF Cartesian position to geodetic coordinates.

Transforms a position from Earth-Centered Earth-Fixed (ECEF) Cartesian coordinates to geodetic coordinates (latitude, longitude, altitude) using the WGS84 ellipsoid model.

Parameters:

Name Type Description Default
x_ecef ndarray

ECEF Cartesian position [x, y, z] in meters.

required
angle_format AngleFormat

Angle format for output angular coordinates (RADIANS or DEGREES).

required

Returns:

Type Description
ndarray

Geodetic position [latitude, longitude, altitude] where latitude is in radians or degrees, longitude is in radians or degrees, and altitude is in meters above the WGS84 ellipsoid.

Example
import brahe as bh
import numpy as np

# Convert ECEF to geodetic coordinates (GPS-like)
x_ecef = np.array([-1275936.0, -4797210.0, 4020109.0])  # Example location
x_geod = bh.position_ecef_to_geodetic(x_ecef, bh.AngleFormat.DEGREES)
print(f"Geodetic: lat={x_geod[0]:.4f}°, lon={x_geod[1]:.4f}°, alt={x_geod[2]:.0f}m")

Geocentric Conversions

position_geocentric_to_ecef builtin

position_geocentric_to_ecef(x_geoc: ndarray, angle_format: AngleFormat) -> Any

Convert geocentric position to ECEF Cartesian coordinates.

Transforms a position from geocentric spherical coordinates (latitude, longitude, radius) to Earth-Centered Earth-Fixed (ECEF) Cartesian coordinates.

Parameters:

Name Type Description Default
x_geoc ndarray

Geocentric position [latitude, longitude, radius] where latitude is in radians or degrees, longitude is in radians or degrees, and radius is in meters.

required
angle_format AngleFormat

Angle format for input angular coordinates (RADIANS or DEGREES).

required

Returns:

Type Description
ndarray

ECEF Cartesian position [x, y, z] in meters.

Example
import brahe as bh
import numpy as np

# Convert geocentric coordinates to ECEF
lat, lon, r = 0.0, 0.0, 6378137.0  # Equator, prime meridian, Earth's radius
x_geoc = np.array([lat, lon, r])
x_ecef = bh.position_geocentric_to_ecef(x_geoc, bh.AngleFormat.RADIANS)
print(f"ECEF position: {x_ecef}")

position_ecef_to_geocentric builtin

position_ecef_to_geocentric(x_ecef: ndarray, angle_format: AngleFormat) -> Any

Convert ECEF Cartesian position to geocentric coordinates.

Transforms a position from Earth-Centered Earth-Fixed (ECEF) Cartesian coordinates to geocentric spherical coordinates (latitude, longitude, radius).

Parameters:

Name Type Description Default
x_ecef ndarray

ECEF Cartesian position [x, y, z] in meters.

required
angle_format AngleFormat

Angle format for output angular coordinates (RADIANS or DEGREES).

required

Returns:

Type Description
ndarray

Geocentric position [latitude, longitude, radius] where latitude is in radians or degrees, longitude is in radians or degrees, and radius is in meters.

Example
import brahe as bh
import numpy as np

# Convert ECEF to geocentric coordinates
x_ecef = np.array([6378137.0, 0.0, 0.0])  # Point on equator, prime meridian
x_geoc = bh.position_ecef_to_geocentric(x_ecef, bh.AngleFormat.DEGREES)
print(f"Geocentric: lat={x_geoc[0]:.2f}°, lon={x_geoc[1]:.2f}°, r={x_geoc[2]:.0f}m")