RINEX (Receiver INdependent EXchange format) is a set of file formats to distribute satellite navigation systems data, including GNSS. One of these standards, navigation files, provide positional information about satellites.
The standard differs for different satellite navigation systems, but can be broadly classified into two types: those providing state vectors as orbital elements, and those providing state vectors as Cartesian coordinates (in an ECEF frame). As representatives of each class, RINEX navigation files for GPS are of the orbital-element type, while those for GLONASS are of the Cartesian coordinates type.
I am currently trying to use the state vectors provided in such RINEX navigation files as the starting point for propagation with a high-precision numerical propagator. However, in order to perform such operation, I believe it is key to know exactly to what time instant the provided state vectors refer.
Multiple time parameters are provided in RINEX navigation files, as described for example here, and in a more interactive manner here for GPS files and here for GLONASS files.
My question is, from the different time parameters provided, how can we obtain the time to which the state vectors correspond as accurately as possible?
I am leaving below a summary of what I have managed to work out so far, split into GPS and GLONASS sections.
GPS
The format is described in Tables A3 and A4 of the appendix of this document, with an example in Table A8 of the same appendix.
The first line of each message contains fields for the Epoch year, month, day, hour, minute and second. However, I am unsure about the following points regarding such Epoch fields:
- In what time system are they exactly?
- Such Epoch fields refer to the time of transmission of the message, or to the time to which the provided state vector corresponds?
The header contains a set of parameters labeled as Delta-UTC, which seemingly can be used to "compute time in UTC", named A0, A1, Reference Time and Week Number. The formula for conversion seems to be, according to section 5.4.1 of this document and section 8.2 of this document:
$$ T_{UTC} = T_{SV} - af_0 - af_1 * (T_{SV} - T_{OC}) - A0 - Δt_{LS} $$
Where $T_{UTC}$ is time in UTC, $T_{SV}$ is "space vehicle time" and $T_{OC}$ is "satellite time of clock".
Regarding this, I am unsure about the following:
- What exactly are $T_{SV}$ and $T_{OC}$ ?
- Are the $af_0$ and $af_1$ parameters the clock bias and clock drift included in the first line of each message?
- Could the formula be expanded to include a quadratic term, something like $af_2 * (T_{SV} - T_{OC})^2$ , where $af_2$ would be the clock drift rate, also included in the first line of each message?
- The A1, Reference Time and Week Number parameters provided in the header do not seem to be used for calculation of UTC time. What is the purpose then of these parameters?
- What is the $Δt_{LS}$ parameter, and how can it be calculated?
- Does the above formula include relativistic corrections, which I assume should be introduced to obtain UTC time from the time reported by the internal clocks of satellites?
The messages also include fields for "Time of Ephemeris" (first field of the 4th line of messages) and "Transmission Time" (first field of the 8th line of messages), both in units of "seconds of GPS week".
- How are these parameters related to the Epoch fields reported in the 1st line of each message?
Finally, the 3rd field of the 6th line of messages is "GPS week number". I am inclined to thinking that this value might potentially be combined with the "Time of Ephemeris" field to obtain the epoch time for the reported ephemeris.
- Is this interpretation correct?
- If so, the resulting pair of GPS week number and seconds of current GPS week would need to be converted to UTC time. Can anybody point me to a source describing how to correctly do so?
- If converted to UTC time, how would the resulting time be different from the Epoch reported in the 1st line of each message?
GLONASS
The format is described in Tables A10 and A11 of the appendix of this document, with an example in Table A12 of the same appendix.
The situation for GLONASS messages seems to be a bit different. The header (which is valid for all included messages in the file, which can and in fact usually seem to come from different satellites in the constellation) contains a set of parameters labeled as "CORR TO SYSTEM TIME". These are:
- Year of reference
- Month of reference
- Day of reference
- System time correction
These parameters are described to be used to perform a "correction to system time scale to correct GLONASS system time to UTC", applying the formula described in section 5.4.2 of this document and section 8.2 of this document
$$ T_{UTC} = T_{SV} + Tau_N - Gamma_N*(T_{SV}-T_b) + Tau_C $$
The $Tau_N$ and $Gamma_N$ parameters seem to be provided in the first line of each message, and my guess is they are again some form of clock bias and clock drift. However, the following are still unclear to me:
- What exactly are $T_{SV}$, $T_b$ and $Tau_C$?
- The previously mentioned parameters provided in the header do not seem to be used for time conversion. What is the purpose of these then?
- The first line of each message, similar to GPS messages, contains Epoch year, month, day, hour, minute and second. What exactly is this Epoch? Is it the time of transmission of the message, the time at which the provided state vector is valid, or something else?
- Would relativistic corrections also be required to correctly obtain an UTC time?
Edit: I thought it would be a nice idea to keep track here of the clarifications we find for the different questions.
- @PM2Ring notes that the $Δt_{LS}$ parameter required to calculate UTC time from GPS time is the number of leap seconds introduced until the time of transmission of the message. Conveniently this is given in the header of RINEX GPS navigation files
Edit 2: I have left as another answer the procedure that I believe to be correct after clarifications provided by @NgPh