POINT POSITION, KINEMATIC

Dennis Milbert

Updated:  2006-jul-28     (more output digits, SP3c, and odds and ends...)

The program, ppos, takes a RINEX observation file and a RINEX navigation file (broadcast orbit), and computes a point position for every epoch. Optionally, one can also process with precise orbits in the SP3 format. The program also provides for options in processing; such as use of a simple troposphere model, and vertical angle cutoff of low satellites.

Contents




Operation

First, you will need to compile this puppy. The compiler (and run time environment) is available (for free) at www.javasoft.com. Use the standard edition (SE) (micro is for tiny devices, and enterprise is for business). After download, installation is a two-click operation. To compile, put the Java source in a subdirectory, and compile ppos.java in a DOS window:

> javac ppos.java       <------- WARNING -- case sensitive

To execute in the DOS window, type:

> java ppos             <------- WARNING -- do not add .java extention here

Two files are needed for input, and one file is optional for input. First, the program will prompt for the RINEX observation file name. Next, it will ask for the RINEX navigation file name. Then, it will ask if you have a precise orbit file. It's optional, but if you have an SP3 format file, go for it.

The program will ask if you want to use 2 frequency pseudoranges for ionosphere correction. Don't say "Y" unless you really have dual frequency RINEX data to begin with. If the answer was "N", then the program will ask if you want to use the broadcast ionosphere model, instead. You can say yes (Y), but you may want to check your RINEX navigation file to make sure it has two lines of ionosphere model coefficients in the header. The program will ask if you want to apply a simple troposphere model. (This is a good thing, it reduces systematic error in heights.) And, finally, it asks what to use as a vertical angle cutoff in degrees. 10 to 15 degrees is a good choice. 89.9 degrees will likely throw away all of your data.

One file is generated as output. It's name is outfile. The files must be in the subdirectory where you are working.

Input Files:

An ASCII, RINEX format observation file.

An ASCII, RINEX format navigation file. This file is also used as a source for broadcast ionosphere model. Believe it or not, not all RINEX navigation files out on the net have the ionosphere coefficients. Also, believe it or not, for a very long time, IGS distributed incorrect ionosphere coefficients. This was due to a long dormant bug in TEQC based on beta documentation of the placement of the iono coefficients in the broadcast message.

(optional) An ASCII, SP3 format, precise orbit.

Output File:

outfile -- ASCII, "outfile" format. This is the coordinate solution of the L1 phase center (also, receiver clock bias is solved) for each epoch of data. DOP's are also output.

Discussion:

Every effort was made to adhere to the ICD-GPS-200. Of course, the ICD does not document use of SP3 precise orbits. On the other hand, while the ICD does indicate use of a troposphere model, one is not specified. ppos uses a generic seasonal model (Tom Herring, MIT) for temperature, pressure, humidity; which feeds the Saastamoinen model for zenith delay; which goes into the Herring mapping functions (wet and dry) to get total delay along a given slant path.


RINEX Format

The RINEX version 2.10 format (25jan2002) can be obtained from the International GPS Service and the 8jun2001 version from the National Geodetic Survey.


SP3 Format

Precise orbits are distributed in a format called SP3. The format is available from NGS and here. If you need the orbits themselves, they are easy to get from NGS at their CORS site.

Here is a sample igs10711.sp3 (316K) SP3 orbit. It is a precise orbit solution computed by the International GPS Service (IGS). (It was also concatenated with the next day's orbit.) Note that if there is an entry of "999999.999999" in the clock field, then that satellite can't be used for that epoch.

Partial support is now provided for the new SP3c format. However, ppos still requires that only GPS satellites be present in the navigation and observation files.


outfile Format

This is a simple ASCII, flat file. One record per epoch. Position of the L1 phase center.

01-10  time, seconds past midnight, GPS time
12-13  number of satellites in solution
16-27  geodetic latitude,  decimal degrees, positive north
30-42  geodetic longitude, decimal degrees, positive east
45-54  ellipsoidal height, meters, positive up
57-60  PDOP, unitless, computed with all satellites in view
63-66  HDOP,     "                    "
69-72  VDOP,     "                    "

Here is a sample outfile. It was extracted from the first hour of results from the CORS station ERLA for 9jul2006. The data were processed with single frequency, broadcast ionosphere, the troposphere model, and precise SP3 format orbits from IGS.


Shortcomings

This is "no frills" software. There are no warranties of any sort. No Windows GUI. Just the core function.

You must have the 2 input files with the names above. The program will overwrite any existing "outfile" file in the working directory.

If there is significant GPS receiver clock drift, the program will eventually degrade in performance. How bad? The GPS sats travel at around 4,000 m/s. So, to keep clock drift orbit error under 1 m, you don't want more than 0.25 millisecond. Handhelds, even with temperature calibrated oscillators, really drift. So, I like to correct the time tags and observables in the RINEX file. Some receivers, such as the CMC Superstar, do this automatically (depending on collection mode). Sometime in the future, I may alter ppos to make it robust against major clock drift in the RINEX file. (So much fun, so little time...)

The program does not currently apply solid Earth tide corrections. This is below pseudorange noise level (about 1 meter peak-to-peak), but could show up if some long time series at a static site were analyzed. (Also on my list of things to do.)

The program does use all satellites in view, but it does not apply any robust estimation to drop outliers. It does not downweight low elevation angle satellites (low satellites are subject to ionosphere, troposphere, multipath error). However, such satellites can be withheld from the solutions. The software does not use a Kalman filter to refine position (or estimate velocity). And, no carrier-aided smoothing is applied. The program does not apply the geometric corrections for difference between L1 and L2 phase centers, nor the variation of phase center with vertical angle.


Source Code

The Java source code (2006jul28) is ppos.java.


Links to Other Pages

Sources of RINEX GPS base station data and coordinates

Sources of SP3 GPS precise orbit data

The links here are for some other sites that talk about GPS accuracy.

Next are PDF reports describing GPS (and WAAS) performance. For the GPS PAN reports, pay particular attention to Figures 5-1 and 5-2. Also, monitor site behavior is broken out in Table 5-1. Note that the "Predictable Accuracy" values quoted in their Appendix A's are based on the worst monitor site in the quarter.




To Contact Me

My e-mail user name is the first initial of my first name followed by all the letters of my last name (see above). My ISP is "comcast", and it is a "dot-net", not a "dot-com". Sorry for not spelling out my e-mail address, but I try to keep the spam-bots from fingering me. But, just so the spam-bots don't feel left out, they can always go to abuse@comcast.net


Back To Home