RINEX 2.1 reader in Python -- reads NAV and OBS files into Pandas 3-D Panel for easy use in analysis and plotting.
Writes to HDF5 (for couple order of magnitude speedup in reading and allows filtering/processing of gigantic files too large to fit into RAM).
RINEX 3 is in work, and NOT working yet.
Contents
python setup.py develop
python ReadRinex.py myrinex.XXx
Here are a couple Minimal Working Examples, assuming you have a .XXo observation file or .XXn navigation file.
from pyrinex.readRinexObs import rinexobs obsdata = rinexobs(rinexObsfilename)
This returns a 3-D array (Pandas Panel) of the data in your .XXo observation file. Indexed by time x SV x measurement
from pyrinex.readRinexNav import readRinexNav navdata = readRinexNav(rinexNavfilename)
This returns a 2-D array (Pandas DataFrame) of the data in your .XXn navigation file. Indexed by time x quantity one row per SV.
python tests/test.py
- read overall OBS header (so we know what to expect in the rest of the OBS file)
- preallocate pandas 3D Panel to fit all data -- this is a key difference from other software out there, that repetitively reallocates memory via appending. The Panel is a self-describing variable, each axis has text indices.
- fill the 3D Panel with the data by reading in blocks -- another key difference from other programs out there, instead of reading character by character I ingest a whole time step of text at once, helping keep the processing closer to CPU cache making it much faster.