2 releases
0.1.1 | Sep 14, 2023 |
---|---|
0.1.0 | Sep 7, 2023 |
#225 in Geospatial
82 downloads per month
Used in 3 crates
(2 directly)
3KB
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 like "teqc", including on modern signals and SP3 high precision orbits
- An SPP/PPP position solver is under develoment: checkout this branch which is kept up to date until merged
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 -
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
:
Specific traits to generate RINEX quality reports.
Dependencies
~63KB