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 14:37:30 with observations from seven satellites.  Figure 5 is a clip from the RINEX observation file starting at epoch 14:42:15.  At that time the receiver is still locked onto and recording observations from seven satellites.  The following epoch the L1 LLI on G11 and G13 indicates loss of lock and the L2 and P2 observables are suddenly zero.  The LLI indicating a loss of lock is highlighted in red in Figure 5 along with the zero observations for L2 and P2.  At epoch 14:42:45 the receiver is once again locked onto the L1 observable for G11 and G13, as highlighted in blue, but the zero observables continue on L2 and P2.  Although antispoofing (A/S) is on, the zero in the LLI of the of the L2 and P2 observables fools TEQC into reporting that the L1 and C1 observables are collected with A/S off.  At epoch 14:43:15 the sudden jump from zero in L2 and P2 observable is interpreted by TEQC as an ionospheric slip.  From this epoch on the observations are recorded normally.

 

Figure 5. Clip from RINEX file ph02348a.06o

 

Using the TEQC command line TEQC –G11 –G13 ph02348a.06o>ph02348ax.06o removes all observations for GPS satellites G11 and G13 from RINEX observation file ph02348a.06o and redirects the output from TEQC to a new RINEX observation file named ph02348ax.06o.  When RINEX observation file ph02348ax.06o is submitted to OPUS-RS it processes successfully with the results shown in Figure 6.

 

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 18:39:15 with data from six satellites.  At 18:41:45 G9 is cleanly dropped and five satellites are observed.  This corresponds to the blank area for G9 highlighted in Figure 7.  Figure 8 is a clip from this RINEX observation file starting at epoch 18:42:45.  At that time the receiver is still locked onto and recording data from five satellites.  The following epoch G9 reappears on the list of observed GPS satellites.  The only valid observable for this epoch is C1.  At epoch 18:43:15 the receiver locks onto the L1 phase observable as highlighted in blue but, the L2 and P2 observables remain zero.  Although antispoofing (A/S) is on, the zero in the LLI of the of the L2 and P2 observables fools TEQC into reporting that the L1 and C1 observables are collected with A/S off.  This event corresponds to the first “.” in the ASCII plot for G9.

 

Figure 8. Clip from RINEX file ph01348b.06o

 

Figure 9 picks up the RINEX observation file at epoch 18:46:30.  At that time the receiver is still locked onto the L1 and C1 observables but with recording zeros for the L2 and P2 observables.  The following epoch the sudden change in the L2 and P2 observables is interpreted as and ionospheric slip by TEQC.  This corresponds to the first “I” in the ASCII plot for G9.  At epoch 18:47:00 the L2 and P2 observables are once again zeros and the ASCII plot again symbolizes these epochs with “.”. 

 

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 18:11:45 with observations for six GPS satellites.  Figure 12 is a clip of this RINEX file starting at epoch 18:15:15.  At this epoch six satellites are being tracked cleanly including G8 and G4 as highlighted in blue.  The following epoch the L1 LLI flag for G8 indicates a loss of lock and there is an abrupt change in the L1 observable.  This corresponds to the first “I” in the ASCII plot for G8 highlighted in red in Figure 11.  At epoch 18:15:45 the L1 LLI flag for G4 indicates loss of lock, the L1 observable for G8 is zero and the L2 and P2 observables for both G4 and G8 are zero.  This event is the first red highlighted area for G4 in Figure 11.  As before, although antispoofing (A/S) is on, the zero in the zero in the LLI of the of the L2 and P2 observables fools TEQC into reporting that the L1 and C1 observables are collected with A/S off.

 

 

Figure 12. Clip illustrating first event from ASCII plot in RINEX file ph03348b.06o

 

Figure 13 picks up the RINEX file at epoch 18:22:45.  At that time five satellites are tracking normally.  The following epoch the list of satellites tracked includes G9 as highlighted in blue.  However the L1 LLI flag indicates loss of lock on the L1 observable.  The L2 and P2 observable for G9 are zero as highlighted in red in Figure 13.  This corresponds to the first red highlight for G9 in the ASCII plot in Figure 11.

 

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 18:24:15 when both G4 and G9 are again tracked normally for two epochs as highlighted in blue.  These two epochs correspond to the “oo” between the two sections highlighted in red for G9 in ASCII plot in Figure 11.  At 18:24:45 the L1 LLI for G4 and G9 indicates loss of lock and the L2 and P2 observables are zero as highlighted in red in Figure 14.  This condition continues for five epochs for G4 and 11 epochs for G9.  This corresponds to the second red highlighted section for G4 and G9 in the ASCII plot in Figure 11.

 

 

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 18:24:45 as highlighted in Figure 15.  It is easy to overlook this slip alongside the much more obvious loss of data from G4 and G9 in the same epochs.

 

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.

 

Additional Resources

 

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:

 

UNAVCO: Promoting Earth science by advancing high-precision techniques for the measurement of crustal deformation.

 

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 Dec 14                                                          2006 Dec 14

 

*********************

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 <= 1:50}

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 14:37 06 12 14 14:51 .2250  15    n/a    372 n/a  0.27  0.73    186

 

 

 

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   # del <elev> MP1 rms [m]  all    all    all

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   # del <elev> MP2 rms [m]  all    all    all

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