4 releases
new 0.1.4 | Sep 19, 2023 |
---|---|
0.1.2 | Sep 14, 2023 |
0.1.1 | Sep 14, 2023 |
0.1.0 | Sep 9, 2023 |
#141 in Geospatial
105 downloads per month
Used in 2 crates
1MB
24K
SLoC
RINEX
Rust tool suites to parse, analyze and process RINEX Data.
This RINEX toolsuite is part of the GeoRust community, and we aim towards advanced geodesic and ionospheric analysis.
Advantages 🚀
- Fast
- Open sources
- Native Hatanaka decompression and compression
- Seamless .gzip decompression with
flate2
compilation feature - RINEX V4 full support, that includes modern Navigation messages
- Meteo RINEX full support
- IONEX and Clock RINEX partial support, will be concluded soon
- File merging, splitting and pre processing
- Modern constellations like BeiDou, Galileo and IRNSS
- Supported time scales are GPST, BDT, GST, UTC
- Full support of Military codes : if you're working with such signals you can at least run a -qc analysis, and possibly the position solver once it is merged
- Supports high precision RINEX (scaled phase data with micro cycle precision)
- RINEX post processing like SNR, DCB analysis, Broadcast ephemeris interpolation, high precision orbit interpolation (SP3)..
- RINEX-qc: statistical analysis that you can request in the "cli" application directly. Analysis can run on modern GNSS signals and SP3 high precision data. Emulates "teqc" historical application.
- An SPP/PPP position solver (under development), in the form of the "gnss-rtk" library that you can summon from the "cli" application directly.
Known weaknesses ⚠️
- QZNSST is represented as GPST at the moment
- GLONASST and IRNSST are not supported : calculations (mostly orbits) will not be accurate
- Partial SBAS support : some features are not yet available
- The command line tool does not accept BINEX or other proprietary formats
- File production is not fully concluded to this day, some formats are still not correctly supported (mostly NAV).
Architecture
-
rinex
is the core library -
rinex-cli
is a command line application based on the core library.
It can be used to process RINEX files and perform operations similar toteqc
.
The application is auto-generated for a few architectures, download it from the release portal -
sp3
High Precision Orbits (by IGS) -
gnss-rtk
a position solver from raw GNSS signals. Currently works from RINEX input data, but that is not exclusive. -
rnx2crx
is a RINEX compressor (RINEX to Compact RINEX) -
crx2rnx
is a CRINEX decompresor (Compact RINEX to RINEX) -
rinex-qc
is a library dedicated to RINEX files analysis -
qc-traits
declares Traits that are shared betweenrinex
andrinex-qc
-
sinex
SNX dedicated core library -
ublox-rnx
is an application intended to generate RINEX Data from raw uBlox GNSS receiver frames. This application is work in progress at the moment.
RINEX formats & applications
Type | Parser | Writer | CLI | UBX | Content | Record browsing |
---|---|---|---|---|---|---|
Navigation (NAV) | ✔️ | Ephemeris 🚧 V4 🚧 | ✔️ 📈 | 🚧 | Orbit parameters, Ionospheric models.. | Epoch iteration |
Observation (OBS) | ✔️ | ✔️ | ✔️ 📈 | 🚧 | Phase, Pseudo Range, Doppler, SSI | Epoch iteration |
CRINEX (Compressed OBS) | ✔️ | RNX2CRX1 ✔️ RNX2CRX3 🚧 | ✔️ 📈 | 🚧 | see OBS Data | Epoch iteration |
Meteorological data (MET) | ✔️ | ✔️ | ✔️ 📈 | 🚧 | Meteo sensors data (Temperature, Moisture..) | Epoch iteration |
Clocks (CLK) | ✔️ | 🚧 | 🚧 | 🚧 | Clock comparison | Epoch iteration |
Antenna (ATX) | ✔️ | 🚧 | 🚧 | 🚧 | Antenna calibration data | Sorted by antex::Antenna |
Ionosphere Maps (IONEX) | ✔️ | 🚧 | ✔️ 📈 | 🚧 | Ionosphere Electron density | Epoch iteration |
SINEX (SNX) | 🚧 | 🚧 | ➖ | 🚧 | SINEX are special RINEX, they are managed by a dedicated core library | Epoch iteration |
Troposphere (TRO) | 🚧 | 🚧 | ❓ | 🚧 | Troposphere modeling | Epoch iteration |
Bias (BIA) | ✔️ | 🚧 | ❓ | 🚧 | Bias estimates, like DCB.. | Epoch iteration |
✔️ means all revisions supported
🚧 : Work in Progress
CLI + 📈 means the cli app provides one or several visualizations
The cli app accepts more than RINEX input, for example SP3 (high precision orbits) are accepted.
File formats
Format | File name restrictions | Support |
---|---|---|
RINEX | ➖ | ✔️ |
CRINEX | ➖ | ✔️ |
gzip compressed RINEX | Name must end with .gz |
--flate2 feature must be enabled |
gzip compressed CRINEX | Name must end with .gz |
--flate2 feature must be enabled |
SP3 | ➖ | --flate2 feature must be enabled |
➖ No restrictions: file names do not have to follow naming conventions.
Benchmarking
Test | Results |
---|---|
textdiff/decompression/epoch | 979.55 ns |
textdiff/decompression/flag | 147.16 ns |
numdiff/decompression/small | 191.86 ns |
numdiff/decompression/big | 1.0973 µs |
parsing/OBSv2/zegv0010.21o | 951.40 µs |
parsing/OBSv3/ACOR00ESP | 4.1139 ms |
processing/esbc00dnkr2021/mask:gnss | 352.81 ms |
processing/esbc00dnkr2021/mask:obs | 438.73 ms |
processing/esbc00dnkr2021/mask:sv | 341.42 ms |
processing/esbc00dnkr2021/smooth:hatch:l1c,l2c | 502.90 ms |
Special Thanks
RINEX relies heavily on the great libraries written by C. Rabotin, check out his work.
Some features would not exist without the invaluable help of J. Lesouple,
check out his
PhD manuscript (french)
Contributions
Contributions are welcomed, do not hesitate to open new issues and submit Pull Requests through Github.
If you want to take part in active developments, check out our contribution guidelines and hints to navigate this library quicker.
lib.rs
:
RINEX Quality analysis library
Dependencies
~15MB
~273K SLoC