Crate sgp4

source ·
Expand description

This crate implements the SGP4 algorithm for satellite propagation.

It also provides methods to parse Two-Line Element Set (TLE) and Orbit Mean-Elements Message (OMM) data.

A UTF-8 transcript of the mathematical expressions that compose SGP4 can be found in the repository


The following standalone program downloads the lastest Galileo OMMs from Celestrak and predicts the satellites’ positions and velocities after 12 h and 24 h.

fn main() -> anyhow::Result<()> {
    let response = ureq::get("")
        .query("GROUP", "galileo")
        .query("FORMAT", "json")
    let elements_group: Vec<sgp4::Elements> = response.into_json()?;
    for elements in &elements_group {
        println!("{}", elements.object_name.as_ref().unwrap());
        let constants = sgp4::Constants::from_elements(elements)?;
        for hours in &[12, 24] {
            println!("    t = {} min", hours * 60);
            let prediction = constants.propagate((hours * 60) as f64)?;
            println!("        r = {:?} km", prediction.position);
            println!("        ṙ = {:?} km.s⁻¹", prediction.velocity);

More examples can be found in the repository


Propagator variables calculated from epoch quantities and used during propagation
General perturbations orbital data parsed from a TLE or OMM
Model of the Earth radius and gravitational field
The Brouwer orbital elements
Predicted satellite position and velocity after SGP4 propagation
Represents the state of the deep space resonnance integrator


A satellite’s elements classification
Represents an SGP4 error
Input line where a parse error was found
TLE error


The geopotential model used in the AFSPC implementation
The geopotential model recommended by the IAU


Converts an epoch to sidereal time using the AFSPC expression
Converts an epoch to sidereal time using the IAU expression
Parses a multi-line TL/2LE string into a list of Elements
Parses a multi-line TL/3LE string into a list of Elements

Type Definitions

The result type returned by SGP4 functions