Editing RINEX Observation Files for
OPUS-RS
Abstract
Using OPUS-RS one can obtain geodetic coordinates from GPS observation sessions as short as five minutes. With short observation sessions however, the quality of the observations becomes more critical. It is not unusual for OPUS-RS to fail “due to especially noisy data (among other reasons).” The recommendation included in the email announcing a failed OPUS-RS run is to try another data set. This is not always a practical solution. Using TEQC from UNAVCO one can review and edit RINEX observation files that fail to process using OPUS-RS.
In this article three RINEX observation files that failed to
process using OPUS-RS will be reviewed using the quality control functions of
TEQC. Incidents indicated in the QC
report will be examined in the RINEX observation file. Using information gleaned from the QC report,
the RINEX observation files will be edited using TEQC and resubmitted to
OPUS-RS.
Introduction
I recently completed a photocontrol using a radial observation scheme. A hub station was occupied for an extended session while eight radial stations were observed for short sessions. Each radial station was occupied twice using Trimble FastStatic™ observation methods. Using Trimble FastStatic™ methods the session length is determined by the number of continuously observed satellites and a PDOP mask. Table 1 lists the default observation session lengths for dual frequency receivers as a function of the number of continuously observed GPS satellites.
|
Number of Continuously Observed GPS Satellites |
Default Session Length |
|
>5 |
8 minutes |
|
5 |
15 minutes |
|
4 |
20 minutes |
Table 1. Default FastStatic™ session lengths for dual frequency receivers
The default PDOP mask is six. If PDOP is six or greater at the end of the default observation session the session is extended until PDOP drops below 6.
Sixteen RINEX observation files were submitted to OPUS-RS. OPUS-RS failed to process three RINEX observation files. Figure 1 is typical of the error message returned by the three unsuccessful runs. The failed sessions varied in length from 13 minutes 30 seconds to 19 minutes 45 seconds. Longer FastStatic™ sessions are indicative of fewer continuously observed satellites, loss of lock on satellites or high PDOP. In any case longer FastStatic™ observation sessions can be more difficult to process with OPUS-RS than shorter sessions.

Figure 1. Typical error message of an unsuccessful OPUS-RS run
It was impractical to return to the project site to reobserve the three failed sessions. Using the quality control functions of TEQC I reviewed the RINEX observation files that OPUS-RS could not process. After locating the problematic segments of the RINEX observation file I was able to edit the file using TEQC. OPUS-RS was then able to process the edited RINEX observation files.
RINEX and TEQC
This article is not intended as a tutorial on the use of TEQC or on the RINEX specification. Additional references on RINEX and TEQC are provided at the end of the article.
Figure 2 illustrates a typical RINEX observation file header. For our purposes the most important information in the header are the observation types and the sampling interval. This information is highlighted in Figure 2. The observables in these RINEX observation files are, in order, L1 - phase measurement on L1, C1 - pseudorange using C/A on L1, L2 - phase measurement on L2, P2 - pseudorange using P-Code on L2 and D1 - doppler frequency on L1. The sampling interval is 15 seconds.

Figure 2. Typical RINEX header
TEQC (Translation, Editing Quality Control) is a command line utility program from UNAVCO. Typing TEQC +QC filenm.06o at a command prompt, where filenm.06o is the name of the RINEX observation file, results in several files being created. The file most useful file for diagnosing a problem OPUS-RS run is named filenm.06S. A complete sample of a 06S quality control file can be found at the end of the article. In this article we will only use the ASCII plot included in the QC report to analyze the observation file.
Figure 3 illustrates a typical ASCII plot for a RINEX observation file. The numbers on the left are the PRN numbers for the satellite. Time is ticked off along the bottom of the plot. For short observation files each symbol in the ASCII plot represents one epoch of data. In longer observation files, each symbol may represent several epochs of data.

Figure 3. Typical QC ASCII plot
Table 2 contains the symbols used in the ASCII plots examined
in this article. These symbols are
presented in hierarchal order. For a
complete list of the symbols used click here.
|
Symbol |
Representation |
|
I |
Ionospheric
phase slip |
|
. |
A/S off; L1 C/A |
|
o |
A/S on; L1 C/A L2 P2 |
Table 2. Symbols used in QC summary
The RINEX standard specifies a F14.3 format for all observables. An F14.3 format indicates floating point number occupying 14-character field width with 3 decimal places. What appears to be a fourth decimal place in the phase and pseudorange observables is the Loss of Lock Indicator (LLI). This is a bit coded integer in the range of 0 to 7. Each bit is coded as:
|
Bit 0 set |
Lost lock between previous and current observation: cycle slip possible (phase only) |
|
Bit 1 set |
Opposite wavelength factor to the one defined for the satellite by the previous WAVELENGTH FACT L1/2 line. Valid for the current epoch only (phase only) |
|
Bit 2 set |
Observations under Antispoofing (may suffer from increased noise) |
With this information we can now examine the problem RINEX
observation files and the editing solutions.
Review and Edit RINEX Observation Files
RINEX file ph02348a.06o
This session is 13 minutes 30 seconds in length or 54 epochs of data. Figure 4 is the ASCII plot for this RINEX observation file with the problem sections highlighted in red.

Figure 4. ASCI Plot for RINEX file ph02348a.06o
This RINEX observation file starts at

Figure 5. Clip from RINEX file ph02348a.06o

Figure 6. Successful OPUS-RS run for RINEX file ph02348ax.06o
RINEX file ph01348b.06o
This session is 14 minutes 45 seconds in length or 59 epochs of data. Figure 7 is the ASCII plot for this RINEX observation file with the problem sections highlighted in red.

Figure 7. ASCII plot for RINEX file ph01348b.06o
This RINEX observation file begins at

Figure 8. Clip from RINEX file ph01348b.06o
Figure 9 picks up the RINEX observation file at epoch

Figure 9. Continuing RINEX file ph01348b.06o
Using the TEQC command line TEQC –G9 ph01348b.06o>ph01348bx.06o removes all observations for GPS satellite G9 from RINEX observation file ph01348b.06o and redirects the output from TEQC to a new RINEX observation file named ph01348bx.06o. When RINEX observation file ph01348bx.06o is submitted to OPUS-RS it processes successfully with the results shown in Figure 10.

Figure 10. Successful OPUS-RS run for RINEX file ph01348bx.06o
The W statistic of 0.22 for the rover mode processing is less than the desired minimum of three. The coordinates for this solution differs from the A session OPUS-RS solution for this station by -1.2 cm, -7.7 cm and -29.4 cm in latitude, longitude and ellipsoid height respectively. The OPUS-RS run from the A session on this station had W statistics of 21.21 and 4.75 for the network and rover modes respectively. It is likely that this OPUS-RS run contains a bad integer fix. Further investigation is warranted.
RINEX file
ph03348b.06o
This session is 19 minutes 45 seconds in length or 79 epochs of data. Figure 11 is the ASCII plot for this RINEX observation file with the obvious problem sections highlighted in red.

Figure 11. ASCII plot for RINEX file ph03348b.06o
This RINEX observation file starts at

Figure 12. Clip illustrating first event from ASCII plot in RINEX file ph03348b.06o
Figure 13 picks up the RINEX file at epoch

Figure 13. Clip illustrating second event in RINEX file ph03348b.06o
The ASCII plot indicates this condition continues for four
epochs (one minute) of data. Figure 14
picks up the RINEX file again at epoch

Figure 14. Clip illustrating third event in RINEX file ph03348b.06o
These conditions suggest three candidates for elimination, namely G8, G4 and G9. The following combinations of SV were removed with the results:
|
Removed SVs |
OPUS-RS Result |
|
G9 |
Failed to converge after 5 iterations |
|
G4 |
Failed to converge after 5 iterations |
|
G8 |
Failed to converge after 5 iterations |
|
G4, G8 |
Failed to converge after 5 iterations |
|
G4, G9 |
Failed to converge after 5 iterations |
|
G8, G9 |
Failed to converge after 5 iterations |
|
G4, G8, G9 |
Terminated abnormally in one of the processing modules. PPS - zero coordinates for initial point |
Removing every obvious combination of satellite with flawed
date did not result in a successful OPUS-RS run. Looking back at the ASCII plot in Figure 11,
satellite G28 has a single ionospheric cycle slip. This cycle slip occurs at epoch

Figure 15. Ionospheric slip for G28
After exhausting the obvious fixes, G28 was removed from the RINEX observation file, more as an act of desperation than as a logical selection. This OPUS-RS run completed successfully with acceptable statistics as illustrated in Figure 16.

Figure 16. Successful OPUS-RS run after removing G28 from RINEX file
This exercise highlights the sensitivity of OPUS-RS to data submitted.
Conclusion
The success of an OPUS-RS run is dependent on the quality of the data submitted. Editing a RINEX observation file to remove satellites with excessive cycle slips or missing observables can cause an OPUS-RS run to succeed when the unedited RINEX observation file failed. Sometimes the satellite observations causing the OPUS-RS run to fail is not obvious. All combinations of satellites with flawed observables should be tried before giving up.
The large differences in coordinates between the two OPUS-RS runs for session A and session B at station ph01 stands as a warning against relying too heavily on a single OPUS-RS solution.
For additional information on the RINEX file format:
RINEX: The Receiver Independent Exchange Format Version 2.10
THE RINEX FORMAT: CURRENT STATUS, FUTURE DEVELOPMENTS
For additional information on TEQC and UNAVCO:
TEQC – The Toolkit for GPS/GLONASS/SBAS Data
Typical TEQC Quality Control Report (filenm.06o)
SV+------------------------------------------------------------------------+
SV
3| ooo ooo ooo ooo
oo oooo oo
oooo oo ooo
ooo oooo ooo oo ooo
oooo ooo ooo|
3
8| ooo ooo ooo ooo
oo oooo oo
oooo oo ooo
ooo oooo ooo oo ooo
oooo ooo ooo| 8
11| ooo ooo ooo ooo
oo oooo o.
..Io oo ooo ooo oooo ooo
oo ooo oooo
ooo ooo| 11
13| ooo ooo ooo ooo
oo oooo o.
..Io oo ooo ooo oooo ooo
oo ooo oooo
ooo ooo| 13
19| ooo ooo ooo ooo
oo oooo oo
oooo oo ooo
ooo oooo ooo oo ooo
oooo ooo ooo| 19
27| ooo ooo ooo ooo
oo oooo oo
oooo oo ooo
ooo oooo ooo oo ooo
oooo ooo ooo| 27
28| ooo ooo ooo ooo
oo oooo oo
oooo oo ooo
ooo oooo ooo oo ooo
oooo ooo ooo| 28
Obs|
777 777 777 777 77 7777 77 7777 77 777 777
7777 777 77 777 7777 777 777|Obs
Clk| |Clk
+-------------|--------------------------|-------------------------|-----+
14:37:30.000
14:51:00.000
2006
*********************
QC of RINEX file(s) :
ph02348a.06o
*********************
Time of
start of window : 2006 Dec 14 14:37:30.000
Time of end of window : 2006 Dec 14 14:51:00.000
Time
line window length : 13.50 minute(s), ticked every 5.0
minute(s)
Observation
interval : 15.0000 seconds
Total
satellites w/ obs : 7
NAVSTAR
GPS SVs w/o OBS : 1
2 4 5
6 7 9
10 12 14
15 16
17 18
20 21 22
23 24 25
26 29 30 31 32
Rx
tracking capability :
12 SVs
Poss. #
of obs epochs
: 55
Epochs
w/ observations : 55
Complete
observations : 372
Deleted observations :
6
Moving
average MP1 : 0.267850 m
Moving
average MP2 : 0.733408 m
Points
in MP moving avg : 50
No. of
Rx clock offsets : 0
Total Rx
clock drift : 0.000000 ms
Rate of
Rx clock drift : 0.000 ms/hr
Report
gap > than : 10.00 minute(s)
but <
than : 90.00 minute(s)
epochs
w/ msec clk slip : 0
other
msec mp events
: 0 (: 4) {expect <=
IOD
signifying a slip : >400.0 cm/minute
IOD
slips : 2
IOD or
MP slips : 2
first epoch last epoch hrs
dt #expt #have %
mp1 mp2 o/slps
SUM 06
12 14
Processing
parameters are:
Receiver
tracking capability : 12 SVs
Maximum ionospheric rate (L1)
: 400.00 cm/min
Report
data gap greater than : 10.00 min
but
less than : 90.00 min
Expected
rms level of P1 multipath : 50.00 cm
Expected
rms level of P2 multipath : 65.00 cm
Multipath slip sigma threshold :
4.00 cm
%
increase in MP rms for C/A | A/S :
100.00 %
Points
in MP moving averages : 50
Minimum
signal to noise for L1 : 0
Minimum
signal to noise for L2 : 0
Width of
ASCII summary plot : 72
Data
indicators on summary plot : yes
Do ionospheric observable : yes
Do ionospheric derivative : yes
Do
high-pass ionosphere observable : no
Do multipath observables : yes
Do 1-ms
receiver clock slips : yes
Tolerance
for 1-ms clock slips : 1.00e-02 ms
Do
receiver LLI slips : yes
Do plot
file(s) : yes
Observations
start : 2006 Dec 14 14:37:30.000
Observations end : 2006 Dec 14 14:51:00.000
Observation
interval : 15.0000 second(s)
SV #+hor <ele> #+mask <ele> #reprt #compl L1
L2 P1 P2
CA
---
------ ----- ------ ----- ------ ------ ------ ------ ------ ------ ------
G
3* 0 0.00 0
0.00 54 54 54 54 0
54 54
G
8* 0 0.00 0
0.00 54 54 54 54 0
54 54
G11* 0 0.00 0
0.00 54 51
54 51 0
51 54
G13* 0 0.00 0
0.00 54 51
54 51 0
51 54
G19* 0 0.00 0
0.00 54 54 54 54 0
54 54
G27* 0 0.00 0
0.00 54 54 54 54 0
54 54
G28* 0 0.00 0
0.00 54 54 54 54 0
54 54
* = SV with no NAV info
Obs w/ no L1 :
0
Obs w/ no L2 :
6
Obs w/ no P1 | CA : 0
Obs w/ no P2 :
6
Obs w/ low L1 S/N : 0
Obs w/ low L2 S/N : 0
Obs
reported w/ code | phase : 378
Obs
deleted (any reason) : 6
Obs
complete : 372
No. of
Rx clock offsets : 0
Total Rx
clock drift : 0.000000 ms
Rate of
Rx clock drift : 0.000000 ms/hr
MP1 RMS
summary (per SV):
slips L1 rx L2 rx
SV obs #
G
3* 54 0
0.00 0.268729 0
0 0
G
8* 54 0
0.00 0.180273 0
0 0
G11* 54
3 0.00 0.345350 1
1 1
G13* 54
3 0.00 0.447755 1
1 1
G19* 54
0 0.00 0.120844 0
0 0
G27* 54
0 0.00 0.112089 0
0 0
G28* 54
0 0.00 0.414209 0
0 0
* = SV with no NAV info
mean
MP1 rms
: 0.267850 m
# MP1 obs : 372
# MP1
slips : 2
# Rvr L1 slips
: 2
# Rvr L2 slips
: 2
MP2 RMS
summary (per SV):
slips L1 rx L2 rx
SV obs #
G
3* 54 0
0.00 0.516580 0
0 0
G
8* 54 0
0.00 0.576035 0
0 0
G11* 54
3 0.00 0.704368 1
1 1
G13* 54
3 0.00 0.934401 1
1 1
G19* 54
0 0.00 0.275913 0
0 0
G27* 54
0 0.00 0.304463 0
0 0
G28* 54
0 0.00 1.831645 0
0 0
* = SV with no NAV info
mean
MP2 rms
: 0.733408 m
# MP2 obs : 372
# MP2
slips : 2
# Rvr L1 slips
: 2
# Rvr L2 slips
: 2