GNSS
High level definitions to work with GNSS in Rust or Python
- Space Vehicles definitions:
SV - GNSS Constellations:
Constellation - GNSS Timescales:
Constellation.timescale() - Python casts using
pythonfeature
Getting started
Add "gnss" to your Cargo.toml
= "2"
Features
std: this library is no-std compatible by default.sbas: activates the detailed SBAS database, for more information about SBAS vehicles. This feature requiresstdlibrary.domes: defines the DOMES reference site number. This feature does not requirestdlibrary.cospar: defines the COSPAR satellite launch number This feature requiresstdlibrary.
Constellation database
This library defines both constellations (single enum) and satellites (SV structure) from these constellations.
use FromStr;
use *;
use ;
// It is possible to define satellites that do not exist
let sv = SVnew;
assert_eq!;
assert_eq!;
assert_eq!; // convenient method
assert_eq!; // convenient method
assert_eq!; // readable format
assert_eq!; // standard accronym
assert_eq!; // RINEX like format
assert_eq!; // reciprocal
assert_eq!; // reciprocal
assert_eq!; // only available for GEO satellites (SBAS)
SBAS (Geostationary services)
We offer convenient methods to handle SBAS (geostationary services). For example, we integrate a builtin database to define most known SBAS services.
use FromStr;
use *;
use ;
let egnos = EGNOS;
assert!;
assert_eq!; // we refer GEO services to GPST
// convenient builder for RINEX and other similar applications.
// Must be known to our database for this to work.
// The database is defined in data/sbas.json
let geo23 = SVnew_sbas.unwrap;
assert_eq!;
// convenient information using our builtin database
assert_eq!;
All this information is provided by default. If you compiled the library with the "sbas" option, we provide a selection helper that helps select the GEO service, for given user coordinates.
use Point;
use ;
let paris = new; //x=longitude°, y=latitude°
assert_eq!;
COSPAR definition
When compiled with the "COSPAR" option, the library defines the COSPAR
launch identifier (unique number).
use COSPAR;
use FromStr;
assert!;
DOMES definition
When compiled with the "DOMES" option, the library provides the definition of DOMES (IGS) site identification number.
-
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
- GNSS-RTK: 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
Python bindings
Install with maturin
Install from pypi directly:
Getting started:
=
assert ,
assert , # drop country code
# smart builder
assert ,
# PRN# is not checked, it is up to you to create valid satellites.
=
assert == 10
assert ==
=
assert
assert # drop country code
assert ==
License
This library is part of the NAV-Solutions framework which is licensed under Mozilla V2 Public license.