2 releases

0.1.1 Sep 14, 2023
0.1.0 Sep 7, 2023

#225 in Geospatial

Download history 16/week @ 2023-09-03 52/week @ 2023-09-10 23/week @ 2023-09-17 13/week @ 2023-09-24 19/week @ 2023-10-01 25/week @ 2023-10-08 25/week @ 2023-10-15 25/week @ 2023-10-22 18/week @ 2023-10-29 20/week @ 2023-11-05 16/week @ 2023-11-12

82 downloads per month
Used in 3 crates (2 directly)

MIT/Apache

3KB

RINEX

Rust crates.io crates.io

minimum rustc: 1.64 License License

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 to teqc.
    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 between rinex and rinex-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