#gnss #gps #glonass #galileo

gnss-rs

GNSS constellations and space vehicles support

15 stable releases

2.3.5 Mar 1, 2025
2.3.4 Feb 22, 2025
2.3.1 Jan 3, 2025
2.2.4 Aug 27, 2024
2.1.0 Oct 14, 2023

#18 in Geospatial

Download history 42/week @ 2024-11-30 83/week @ 2024-12-07 195/week @ 2024-12-14 40/week @ 2024-12-21 396/week @ 2024-12-28 597/week @ 2025-01-04 528/week @ 2025-01-11 329/week @ 2025-01-18 323/week @ 2025-01-25 408/week @ 2025-02-01 352/week @ 2025-02-08 1485/week @ 2025-02-15 1650/week @ 2025-02-22 896/week @ 2025-03-01 664/week @ 2025-03-08 445/week @ 2025-03-15

4,004 downloads per month
Used in 19 crates (14 directly)

MPL-2.0 license

41KB
801 lines

GNSS

Rust Rust crates.io crates.io

License

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")
    .unwrap();
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

License

This library is part of the RTK-rs framework which is delivered under the Mozilla V2 Public license.

Dependencies

~3–6.5MB
~115K SLoC