georinex
georinex copied to clipboard
Error loading BRDC00IGS_R_20240840000_01D_MN.rnx
- Said Rinex file is the daily IGS multi-constellation broadcast ephemeris in rinex v3 format. File format is as follows:
3.04 N: GNSS NAV DATA M: MIXED RINEX VERSION / TYPE
MergeMNfile.tcl IGS 20240325 193506 GMT PGM / RUN BY / DATE
BDSA 3.8184E-08 4.4703E-07 -3.8743E-06 7.0930E-06 Q 02 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 05 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 06 IONOSPHERIC CORR
BDSA 3.6322E-08 5.3644E-07 -4.2915E-06 7.5102E-06 G 07 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 Q 08 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 09 IONOSPHERIC CORR
BDSA 3.6322E-08 5.5879E-07 -4.2319E-06 6.9737E-06 K 10 IONOSPHERIC CORR
BDSA 3.4459E-08 6.0350E-07 -4.4703E-06 7.3314E-06 U 11 IONOSPHERIC CORR
BDSA 3.4459E-08 6.0350E-07 -4.4703E-06 7.3314E-06 S 12 IONOSPHERIC CORR
BDSA 3.4459E-08 6.0350E-07 -4.4703E-06 7.3314E-06 S 13 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 14 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 16 IONOSPHERIC CORR
BDSA 3.5390E-08 5.9605E-07 -4.3511E-06 7.1526E-06 O 19 IONOSPHERIC CORR
BDSA 3.2596E-08 5.5879E-07 -3.9935E-06 6.3181E-06 A 20 IONOSPHERIC CORR
BDSA 3.4459E-08 6.0350E-07 -4.4703E-06 7.3314E-06 S 21 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 Q 22 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 23 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 24 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 25 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 26 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 27 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 28 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 X 29 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 30 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 32 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 33 IONOSPHERIC CORR
BDSA 3.4459E-08 6.0350E-07 -4.4703E-06 7.3314E-06 S 34 IONOSPHERIC CORR
BDSA 4.0978E-08 2.6077E-07 -2.1458E-06 3.1590E-06 Q 35 IONOSPHERIC CORR
BDSA 3.6322E-08 5.5879E-07 -4.2319E-06 6.9737E-06 K 36 IONOSPHERIC CORR
BDSA 3.4459E-08 6.0350E-07 -4.4703E-06 7.3314E-06 S 37 IONOSPHERIC CORR
BDSA 3.5390E-08 5.9605E-07 -4.3511E-06 7.1526E-06 O 38 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 39 IONOSPHERIC CORR
BDSA 3.6322E-08 5.3644E-07 -4.2915E-06 7.5102E-06 G 40 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 41 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 42 IONOSPHERIC CORR
BDSA 3.4459E-08 6.0350E-07 -4.4703E-06 7.3314E-06 U 43 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 Q 44 IONOSPHERIC CORR
BDSA 3.6322E-08 5.6624E-07 -4.2319E-06 6.8545E-06 M 45 IONOSPHERIC CORR
BDSA 3.6322E-08 5.3644E-07 -4.2915E-06 7.5102E-06 G 46 IONOSPHERIC CORR
BDSA -9.3132E-09 -6.8545E-07 1.1921E-07 3.3379E-06 D 50 IONOSPHERIC CORR
BDSB 8.8064E+04 7.2090E+05 -5.3084E+06 5.8327E+06 Q 02 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 05 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 06 IONOSPHERIC CORR
BDSB 9.2160E+04 1.0322E+06 -7.7332E+06 7.9299E+06 G 07 IONOSPHERIC CORR
BDSB 1.1674E+05 5.5706E+05 -5.6361E+06 6.6191E+06 Q 08 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 09 IONOSPHERIC CORR
BDSB 8.8064E+04 1.1305E+06 -8.3231E+06 8.3231E+06 K 10 IONOSPHERIC CORR
BDSB 1.1674E+05 5.2429E+05 -5.2429E+06 6.0948E+06 U 11 IONOSPHERIC CORR
BDSB 1.1059E+05 6.5536E+05 -6.0293E+06 6.8157E+06 S 12 IONOSPHERIC CORR
BDSB 1.1059E+05 6.5536E+05 -6.0293E+06 6.8157E+06 S 13 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 14 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 16 IONOSPHERIC CORR
BDSB 1.0445E+05 7.7005E+05 -6.8157E+06 7.5366E+06 O 19 IONOSPHERIC CORR
BDSB 9.2160E+04 1.1469E+06 -8.3231E+06 8.3231E+06 A 20 IONOSPHERIC CORR
BDSB 1.1059E+05 6.5536E+05 -6.0293E+06 6.8157E+06 S 21 IONOSPHERIC CORR
BDSB 1.1674E+05 5.5706E+05 -5.6361E+06 6.6191E+06 Q 22 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 23 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 24 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 25 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 26 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 27 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 28 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 X 29 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 30 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 32 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 33 IONOSPHERIC CORR
BDSB 1.1059E+05 6.5536E+05 -6.0293E+06 6.8157E+06 S 34 IONOSPHERIC CORR
BDSB 1.2902E+05 -3.1130E+05 1.3107E+06 -3.2768E+05 Q 35 IONOSPHERIC CORR
BDSB 8.8064E+04 1.1305E+06 -8.3231E+06 8.3231E+06 K 36 IONOSPHERIC CORR
BDSB 1.1059E+05 6.5536E+05 -6.0293E+06 6.8157E+06 S 37 IONOSPHERIC CORR
BDSB 1.0445E+05 7.7005E+05 -6.8157E+06 7.5366E+06 O 38 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 39 IONOSPHERIC CORR
BDSB 9.2160E+04 1.0322E+06 -7.7332E+06 7.9299E+06 G 40 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 41 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 42 IONOSPHERIC CORR
BDSB 1.1674E+05 5.2429E+05 -5.2429E+06 6.0948E+06 U 43 IONOSPHERIC CORR
BDSB 1.1674E+05 5.5706E+05 -5.6361E+06 6.6191E+06 Q 44 IONOSPHERIC CORR
BDSB 8.8064E+04 1.1305E+06 -8.3231E+06 8.3231E+06 M 45 IONOSPHERIC CORR
BDSB 9.2160E+04 1.0322E+06 -7.7332E+06 7.9299E+06 G 46 IONOSPHERIC CORR
BDSB -1.8842E+05 -7.5366E+05 -7.3400E+06 4.1288E+06 D 50 IONOSPHERIC CORR
GAGP 4.8312358558E-09-2.664535259E-15 0 2307 TIME SYSTEM CORR
GAL 1.6725E+02 -1.0547E-01 7.2937E-03 IONOSPHERIC CORR
GPSA 3.9116E-08 1.4901E-08 -1.7881E-07 0.0000E+00 IONOSPHERIC CORR
GPSB 1.4336E+05 0.0000E+00 -3.2768E+05 2.6214E+05 IONOSPHERIC CORR
QZSA 1.0245E-08 -1.4901E-08 -4.1723E-07 1.1921E-06 IONOSPHERIC CORR
QZSB 1.0240E+05 0.0000E+00 -8.5197E+05 8.3231E+06 IONOSPHERIC CORR
BDSA 3.4459E-08 6.1095E-07 -4.4703E-06 7.3910E-06 W 60 IONOSPHERIC CORR
BDSB 1.1469E+05 5.2429E+05 -5.1773E+06 6.0293E+06 W 60 IONOSPHERIC CORR
GAUT 1.8626451492E-09-8.881784197E-16 518400 2306 TIME SYSTEM CORR
GPUT -2.7939677238E-09-1.776356839E-15 233472 2307 TIME SYSTEM CORR
GLUT 3.2596290112E-09 0.000000000E+00 0 0 TIME SYSTEM CORR
QZUT -1.8626451492E-09 0.000000000E+00 356352 2158 TIME SYSTEM CORR
BDUT -9.3132257462E-10 2.042810365E-14 604745 950 TIME SYSTEM CORR
18 18 1929 7 LEAP SECONDS
END OF HEADER
G01 2024 03 23 23 59 44 1.756171695888E-04 2.160049916711E-12 0.000000000000E+00
2.000000000000E+01 4.296875000000E+01 3.556219559390E-09 2.959257184757E+00
2.056360244751E-06 1.293790643103E-02 1.289322972298E-05 5.154013608932E+03
6.047840000000E+05 4.656612873077E-08-2.990394506620E+00-1.918524503708E-07
9.909930100366E-01 1.444062500000E+02 1.002905023843E+00-7.299589771500E-09
1.003613233091E-10 1.000000000000E+00 2.306000000000E+03 0.000000000000E+00
2.000000000000E+00 6.300000000000E+01 5.122274160385E-09 2.000000000000E+01
6.012180000000E+05 4.000000000000E+00
- The error that
georinex.load()
returns is:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[2], line 2
1 filepath = "/home/kostas/Downloads/BRDC00IGS_R_20240840000_01D_MN.rnx"
----> 2 dataset = gr.load(filepath)
File ~/zephr-xyz/zephyrus/.venv/lib/python3.10/site-packages/georinex/base.py:65, in load(rinexfn, out, use, tlim, useindicators, meas, verbose, overwrite, fast, interval)
62 info = rinexinfo(rinexfn)
64 if info["rinextype"] == "nav":
---> 65 return rinexnav(rinexfn, outfn, use=use, tlim=tlim, overwrite=overwrite)
66 elif info["rinextype"] == "obs":
67 return rinexobs(
68 rinexfn,
69 outfn,
(...)
77 interval=interval,
78 )
File ~/zephr-xyz/zephyrus/.venv/lib/python3.10/site-packages/georinex/base.py:166, in rinexnav(fn, outfn, use, group, tlim, overwrite)
164 nav = rinexnav2(fn, tlim=tlim)
165 elif int(info["version"]) == 3:
--> 166 nav = rinexnav3(fn, use=use, tlim=tlim)
167 else:
168 raise LookupError(f"unknown RINEX {info} {fn}")
File ~/zephr-xyz/zephyrus/.venv/lib/python3.10/site-packages/georinex/nav3.py:98, in rinexnav3(fn, use, tlim)
95 duplicate = tu.size != t[svi][check].size
97 full_fields = fields[sv[0]]
---> 98 compact_fields = _sparefields(full_fields, sys=sv[0], N=_num_fields(raws[svi[0]]))
99 compact_index = [i for i, c in enumerate(full_fields) if c in compact_fields]
101 darr = np.empty((svi.size, len(full_fields)))
File ~/zephr-xyz/zephyrus/.venv/lib/python3.10/site-packages/georinex/nav3.py:234, in _sparefields(cf, sys, N)
231 cf = cf[:28]
233 if N != len(cf):
--> 234 raise ValueError(f"System {sys} NAV data is not the same length as the number of fields.")
236 return cf
ValueError: System I NAV data is not the same length as the number of fields.
- Operating system is Ubuntu 22.04.4. LTS, Python version is 3.10.10, and I have installed the latest georinex release.
This is representative of a larger issue.
- For a temporary fix @kstamatiou, you could clone the repository and install as a development version. Then, change these lines to be
elif sys == "I":
if N < 28 and len(cf) >= 28:
N = 28
cf = cf[:28]
elif N == 28:
cf = cf[:28]
Also, the cropped BRDC00IGS_R_20240840000_01D_MN.rnx
file you posted in this issue should work with or without this fix since the issue is with IRNSS (system I) and not GPS (system G). I downloaded the full rinex file from IGS and have attached here a cropped version of the rinex that includes an "I02" entry.
BRDC00IGS_R_20240840000_01D_MN.zip
- I think the larger issue at hand is that #98 changed the logic of the _sparefields check. Now there are many possibilities of
N
being smaller than the standard value for its constellation since missing values that are treated as zero may be present at the end of the entry. In a previous commit, I made a patch to fix the same issue with QZSS, but in this issue the IRNSS entries have a similar problem.
@scivision, I'm happy to create a pull request to fix this specific IRNSS issue, but I don't know if you'd rather have me reevaluate the _sparefields function or even the _num_fields function to fix the overall problem and not just patch by constellation. Let me know what you'd think is best.
Thanks a lot for the reply @betaBison.
Indeed, the problem is due to IRNSS, so the interim solution that I came up with is to simply truncate the file in order to exclude these entries; then load()
works just fine.