#gnss #gps #glonass #galileo


GNSS constellations and space vehicles support

6 stable releases

2.2.0 Jul 4, 2024
2.1.3 Jan 5, 2024
2.1.2 Nov 2, 2023
2.1.0 Oct 14, 2023

#35 in Geospatial

Download history 78/week @ 2024-03-24 92/week @ 2024-03-31 84/week @ 2024-04-07 77/week @ 2024-04-14 190/week @ 2024-04-21 94/week @ 2024-04-28 79/week @ 2024-05-05 115/week @ 2024-05-12 84/week @ 2024-05-19 74/week @ 2024-05-26 57/week @ 2024-06-02 93/week @ 2024-06-09 96/week @ 2024-06-16 35/week @ 2024-06-23 131/week @ 2024-06-30 89/week @ 2024-07-07

354 downloads per month
Used in 12 crates (9 directly)


834 lines


crates.io rustc v1.63 Rust crates.io

High level definitions to work with GNSS in Rust

  • Space Vehicles definitions: SV
  • GNSS Constellations: Constellation
  • GNSS Timescales: Constellation.timescale()

Getting started

Add "gnss" to your Cargo.toml

gnss-rs = "2"

Import "gnss-rs":

extern crate gnss_rs as gnss;

Space Vehicles

extern crate gnss_rs as gnss;

use gnss::sv;
use gnss::prelude::*;
use std::str::FromStr;
use hifitime::TimeScale;

let sv = SV::new(Constellation::GPS, 1);
assert_eq!(sv.constellation, Constellation::GPS);
assert_eq!(sv.prn, 1);
assert_eq!(sv.timescale(), Some(TimeScale::GPST));
assert_eq!(sv, sv!("G01"));
assert_eq!(sv.launched_date(), None);

SBAS support

We support SBAS (geostationary augmentations) systems.

extern crate gnss_rs as gnss;

use gnss::sv;
use gnss::prelude::*;
use std::str::FromStr;
use hifitime::{Epoch, TimeScale};

let sv = sv!("S23");
assert_eq!(sv.constellation, Constellation::EGNOS);
let launched_date = Epoch::from_str("2021-11-01T00:00:00 UTC")
assert_eq!(sv.launched_date(), Some(launched_date));

Other definitions and features

Other definitions and features exist. Use compilation options (crate features) to unlock them. The idea is to maintain a very minimal default library.

  • The SERDE features unlocks serialization/deserialization of the main structures defined here.

  • The DOMES features unlocks the definition of DOMES GNSS/IGS reference station, that are widely used in GNSS data processing. This number identifies a station uniquely.

  • The COSPAR features unlocks the definition of the COSPAR (Launch) ID number. This number identifies the launch of a vehicule uniquely. It is used in RINEX and other files format.

  • The SBAS feature will create a static database that defines each SBAS service areas, projected on ground as WKT/GEO objects, with one method to select a SBAS service based on Latitude and Longitude coordinates.

Relevant Ecosystems

Many libraries exist nowadays to process GNSS data or perform typical GNSS processing tasks.
Amongst them, be sure to checkout:

  • Nyx: Orbital navigation
  • ANISE: Earth orientation modeling and Orbital navigation
  • Rtk-rs: Precise Point Positioning, related calculations and modeling
  • RINEX: files processing and management
  • SP3: files processing and management
  • Hifitime: Timescale and related calculations
  • CGGTTS: files production and processing


Licensed under either of:


~102K SLoC