RINEX (Receiver Independent EXchange) parser and formatter.
The RINEX format is fully open source and is specified to answer the requirements of navigation and much more.
To contribute to either of our project or join our community, you way
- open an Issue on Github.com
- follow our Discussions on Github.com
- join our Discord channel
- Fast and powerful parser
- Open sources: read and access all the code
- Seamless Gzip decompression (on
flate2feature) - All modern GNSS constellations, codes and signals
- GPS, Galileo, BeiDou and QZSS
- Time scales: GPST, QZSST, BDT, GST, UTC, TAI
- Efficient seamless compression and decompression
- modern rewrite of the Hatanaka compression algorithm
- RINEX V4 full support, including
- new Ionospheric coorections
- new Time offset corrections
- precise Earth Orientation updates
- Supports Observation, Navigation, Meteo and Clock RINEX, other RINEX-like formats have their own parser:
- Many pre-processing algorithms including Filter Designer
- Several file operations: merging, splitting, time binning (batch)
- Navigation is currently not feasible with Glonass, SBAS and IRNSS
- File production might lack some features, mostly because we're currently focused on data processing
If you need to reference this work, please use the following model:
Nav-solutions (2025), RINEX: analysis and processing (MPLv2), https://github.com/nav-solutions
All RINEX formats described in the following table are supported natively, we do not hide a specific format under compilation options. The parser is smart enough to adapt to the file revision, you don't need specific options to work with RINEX V2 or RINEX V4, and you may work with both at the same time conveniently.
We offer one compilation option per format, to provide more detail and "enhance" the capabilities for that format. For example:
obsrelates to the Observation RINEX format and provides special iterators and processing feature for this file format.nav: is the heaviest amongst all options, because it relies on heavy external libraries likenalgebraandanise.
Note that this library requires std library at all times, it is not planed to make it no-std compatible.
We offer many serialization (and deserialization) options:
serdefor standard serdes, usually to JSONublox: to serialize RINEX structures to UBX messages and construct RINEX structures from UBX messagesbinex: same thing for BINEX protocolrtcm: same thing for RTCM protocolgnss-protos: to serialize RINEX structures to raw GNSS navigation messages, for example GPS messages, or collecting a RINEX structure from GPS messages. For example, this could be the high level entrypoint to a GNSS simulator.
GNSS-QC (Quality check) relates to complex geodesic processing workflows, usually starting
from RINEX files, by means of this library. To support demanding GNSS-QC operations, we provide two options:
- The
qcoption is the entry point, it provides means to manipulate thos files. For example, merging two files into one. - The
processingfeatures builds on topqcand is expected to provide all requirements to complex GNSS-QC workflows.
The parser supports RINEX V4.0, that includes RINEX V4 Navigation files.
All revisions are supported by default and without compilation options: the parser automatically adapts.
| Type | Parser | Writer | Content | Record Indexing | Timescale |
|---|---|---|---|---|---|
| Navigation (NAV) | ✔️ | ✔️ | Ephemerides, Ionosphere models | NavKey | SV System time broadcasting this message |
| Observation (OBS) | ✔️ | ✔️ | Phase, Pseudo Range, Doppler, SSI | ObsKey | GNSS (any) |
| CRINEX (Compressed OBS) | ✔️ | ✔️ | Phase, Pseudo Range, Doppler, SSI | ObsKey | GNSS (any) |
| Meteorological data (MET) | ✔️ | ✔️ | Meteo sensors data (Temperature, Moisture..) | MeteoKey | UTC |
| Clocks (CLK) | ✔️ | 🚧 | Precise temporal states | ClockKey | GNSS (any) |
| Antenna (ATX) | ✔️ | 🚧 | Precise RX/SV Antenna calibration | antex::Antenna |
➖ |
| Ionosphere Maps (IONEX) | Moved to dedicated parser | ✔️ | Ionosphere Electron density | Record Key | UTC |
| DORIS RINEX | Moved to dedicated parser | ✔️ | Temperature, Moisture, Pseudo Range and Phase observations | Record Key | TAI / "DORIS" timescale |
Contributions are welcomed, we still have a lot to accomplish, any help is always appreciated.
We wrote these few lines to help you understand the inner workings.
Join us on Discord to discuss ongoing and future developments.