Skip to content

GCRF ↔ ITRF Transformations

Transformations between Geocentric Celestial Reference Frame (GCRF, inertial) and International Terrestrial Reference Frame (ITRF, Earth-fixed). Uses IAU 2006/2000A CIO-based theory with classical angles.

Note

For conceptual explanations and examples, see GCRF ↔ ITRF Transformations in the Learn section.

GCRF to ITRF

state_gcrf_to_itrf builtin

state_gcrf_to_itrf(epc: Epoch, x_gcrf: Union[ndarray, List]) -> ndarray

Transforms a state vector (position and velocity) from GCRF (Geocentric Celestial Reference Frame) to ITRF (International Terrestrial Reference Frame).

Applies the full IAU 2006/2000A transformation including bias, precession, nutation, Earth rotation, and polar motion corrections using global Earth orientation parameters. The velocity transformation accounts for the Earth's rotation rate.

Parameters:

Name Type Description Default
epc Epoch

Epoch instant for the transformation

required
x_gcrf ndarray or list

State vector in GCRF frame [position (m), velocity (m/s)], shape (6,)

required

Returns:

Type Description
ndarray

numpy.ndarray: State vector in ITRF frame [position (m), velocity (m/s)], shape (6,)

Example
import brahe as bh
import numpy as np

# Create epoch
epc = bh.Epoch.from_datetime(2024, 1, 1, 12, 0, 0.0, 0.0, bh.TimeSystem.UTC)

# State vector in GCRF [x, y, z, vx, vy, vz] (meters, m/s)
state_gcrf = np.array([bh.R_EARTH + 500e3, 0.0, 0.0, 0.0, 7600.0, 0.0])

# Transform to ITRF
state_itrf = bh.state_gcrf_to_itrf(epc, state_gcrf)
print(f"ITRF state: {state_itrf}")

rotation_gcrf_to_itrf builtin

rotation_gcrf_to_itrf(epc: Epoch) -> ndarray

Computes the combined rotation matrix from GCRF (Geocentric Celestial Reference Frame) to ITRF (International Terrestrial Reference Frame). Applies corrections for bias, precession, nutation, Earth-rotation, and polar motion.

The transformation is accomplished using the IAU 2006/2000A, CIO-based theory using classical angles. The method as described in section 5.5 of the SOFA C transformation cookbook.

The function will utilize the global Earth orientation and loaded data to apply corrections for Celestial Intermediate Pole (CIP) and polar motion drift derived from empirical observations.

Parameters:

Name Type Description Default
epc Epoch

Epoch instant for computation of transformation matrix

required

Returns:

Type Description
ndarray

numpy.ndarray: 3x3 rotation matrix transforming GCRF -> ITRF

Example
import brahe as bh
import numpy as np

# Create epoch
epc = bh.Epoch.from_datetime(2024, 1, 1, 12, 0, 0.0, 0.0, bh.TimeSystem.UTC)

# Get rotation matrix from GCRF to ITRF
R = bh.rotation_gcrf_to_itrf(epc)
print(f"Rotation matrix shape: {R.shape}")
# Output: Rotation matrix shape: (3, 3)

position_gcrf_to_itrf builtin

position_gcrf_to_itrf(epc: Epoch, x: Union[ndarray, List]) -> ndarray

Transforms a position vector from GCRF (Geocentric Celestial Reference Frame) to ITRF (International Terrestrial Reference Frame).

Applies the full IAU 2006/2000A transformation including bias, precession, nutation, Earth rotation, and polar motion corrections using global Earth orientation parameters.

Parameters:

Name Type Description Default
epc Epoch

Epoch instant for the transformation

required
x ndarray or list

Position vector in GCRF frame (m), shape (3,)

required

Returns:

Type Description
ndarray

numpy.ndarray: Position vector in ITRF frame (m), shape (3,)

Example
import brahe as bh
import numpy as np

# Create epoch
epc = bh.Epoch.from_datetime(2024, 1, 1, 12, 0, 0.0, 0.0, bh.TimeSystem.UTC)

# Position vector in GCRF (meters)
r_gcrf = np.array([7000000.0, 0.0, 0.0])

# Transform to ITRF
r_itrf = bh.position_gcrf_to_itrf(epc, r_gcrf)
print(f"ITRF position: {r_itrf}")

ITRF to GCRF

state_itrf_to_gcrf builtin

state_itrf_to_gcrf(epc: Epoch, x_itrf: Union[ndarray, List]) -> ndarray

Transforms a state vector (position and velocity) from ITRF (International Terrestrial Reference Frame) to GCRF (Geocentric Celestial Reference Frame).

Applies the full IAU 2006/2000A transformation including bias, precession, nutation, Earth rotation, and polar motion corrections using global Earth orientation parameters. The velocity transformation accounts for the Earth's rotation rate.

Parameters:

Name Type Description Default
epc Epoch

Epoch instant for the transformation

required
x_itrf ndarray or list

State vector in ITRF frame [position (m), velocity (m/s)], shape (6,)

required

Returns:

Type Description
ndarray

numpy.ndarray: State vector in GCRF frame [position (m), velocity (m/s)], shape (6,)

Example
import brahe as bh
import numpy as np

# Create epoch
epc = bh.Epoch.from_datetime(2024, 1, 1, 12, 0, 0.0, 0.0, bh.TimeSystem.UTC)

# State vector in ITRF [x, y, z, vx, vy, vz] (meters, m/s)
state_itrf = np.array([4000000.0, 3000000.0, 4000000.0, 100.0, -50.0, 200.0])

# Transform to GCRF
state_gcrf = bh.state_itrf_to_gcrf(epc, state_itrf)
print(f"GCRF state: {state_gcrf}")

rotation_itrf_to_gcrf builtin

rotation_itrf_to_gcrf(epc: Epoch) -> ndarray

Computes the combined rotation matrix from ITRF (International Terrestrial Reference Frame) to GCRF (Geocentric Celestial Reference Frame). Applies corrections for bias, precession, nutation, Earth-rotation, and polar motion.

The transformation is accomplished using the IAU 2006/2000A, CIO-based theory using classical angles. The method as described in section 5.5 of the SOFA C transformation cookbook.

The function will utilize the global Earth orientation and loaded data to apply corrections for Celestial Intermediate Pole (CIP) and polar motion drift derived from empirical observations.

Parameters:

Name Type Description Default
epc Epoch

Epoch instant for computation of transformation matrix

required

Returns:

Type Description
ndarray

numpy.ndarray: 3x3 rotation matrix transforming ITRF -> GCRF

Example
1
2
3
4
5
6
7
8
import brahe as bh

# Create epoch
epc = bh.Epoch.from_datetime(2024, 1, 1, 12, 0, 0.0, 0.0, bh.TimeSystem.UTC)

# Get rotation matrix from ITRF to GCRF
R = bh.rotation_itrf_to_gcrf(epc)
print(f"Rotation matrix shape: {R.shape}")

position_itrf_to_gcrf builtin

position_itrf_to_gcrf(epc: Epoch, x: Union[ndarray, List]) -> ndarray

Transforms a position vector from ITRF (International Terrestrial Reference Frame) to GCRF (Geocentric Celestial Reference Frame).

Applies the full IAU 2006/2000A transformation including bias, precession, nutation, Earth rotation, and polar motion corrections using global Earth orientation parameters.

Parameters:

Name Type Description Default
epc Epoch

Epoch instant for the transformation

required
x ndarray or list

Position vector in ITRF frame (m), shape (3,)

required

Returns:

Type Description
ndarray

numpy.ndarray: Position vector in GCRF frame (m), shape (3,)

Example
import brahe as bh
import numpy as np

# Create epoch
epc = bh.Epoch.from_datetime(2024, 1, 1, 12, 0, 0.0, 0.0, bh.TimeSystem.UTC)

# Position in ITRF (ground station)
r_itrf = np.array([4000000.0, 3000000.0, 4000000.0])

# Transform to GCRF
r_gcrf = bh.position_itrf_to_gcrf(epc, r_itrf)
print(f"GCRF position: {r_gcrf}")

Intermediate Matrices

bias_precession_nutation builtin

bias_precession_nutation(epc: Epoch) -> Any

Computes the Bias-Precession-Nutation matrix transforming the GCRS to the CIRS intermediate reference frame. This transformation corrects for the bias, precession, and nutation of Celestial Intermediate Origin (CIO) with respect to inertial space.

This formulation computes the Bias-Precession-Nutation correction matrix according using a CIO based model using using the IAU 2006 precession and IAU 2000A nutation models.

The function will utilize the global Earth orientation and loaded data to apply corrections to the Celestial Intermediate Pole (CIP) derived from empirical observations.

Parameters:

Name Type Description Default
epc Epoch

Epoch instant for computation of transformation matrix

required

Returns:

Type Description
ndarray

3x3 rotation matrix transforming GCRS -> CIRS

References

IAU SOFA Tools For Earth Attitude, Example 5.5 http://www.iausofa.org/2021_0512_C/sofa/sofa_pn_c.pdf Software Version 18, 2021-04-18

earth_rotation builtin

earth_rotation(epc: Epoch) -> Any

Computes the Earth rotation matrix transforming the CIRS to the TIRS intermediate reference frame. This transformation corrects for the Earth rotation.

Parameters:

Name Type Description Default
epc Epoch

Epoch instant for computation of transformation matrix

required

Returns:

Type Description
ndarray

3x3 rotation matrix transforming CIRS -> TIRS

polar_motion builtin

polar_motion(epc: Epoch) -> Any

Computes the Earth rotation matrix transforming the TIRS to the ITRF reference frame.

The function will utilize the global Earth orientation and loaded data to apply corrections to compute the polar motion correction based on empirical observations of polar motion drift.

Parameters:

Name Type Description Default
epc Epoch

Epoch instant for computation of transformation matrix

required

Returns:

Type Description
ndarray

3x3 rotation matrix transforming TIRS -> ITRF

See Also