r24 - 05 Aug 2011 - 15:19:55 - NicoleQuindaraYou are here: TWiki >  Documentation Web  >  WebLinks > UsersGuide > UsersManualOnePage

GNSS Data Formats in the GPSTk

ash2mdp/ash2xyz Converters

edit

Description

These applications process Ashtech Z(Y)-12 observation and ephemeris data and output satellite positions and ionospheric corrections in either MDP or XYZ format.

Command Summary

Optional Arguments:
Short Arg. Long Arg. Description
-i   Where to get data from. The default is to use stdin.
-o   Where to send the output. The default is to use stdout.
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
-w --week=<NUM> The full GPS week in which this data starts. use this option when the start time of the data being processed is not during this week.
-s --offset=<NUM> Output SV positions at a time offset from the current time. Give a positive or negative integer of seconds.
-n --num-points=<NUM> Width of the exponential filter moving window, in number of points. Default is 36.

Notes

Input is on the command line, or of the same format in a file (-f<file>).

-- NicoleQuindara - 03 Aug 2011

ats2mdp Converter

edit

Description

This application converts ATS binary format data to MDP format.

Command Summary

Optional Arguments:
Short Arg. Long Arg. Description
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
-i --input=<arg> A file from which to take the input. The default is stdin.
-o --output=<arg> A file from which to receive the output. The default is stdout.

-- NicoleQuindara - 03 Aug 2011

bc2sp3 Converter

edit

Description

This application reads RINEX navigation file(s) and writes to SP3 (a or c) file(s).

Command Summary

Optional Arguments:
Long Arg. Description
--in Read the input file (repeatable).
--out Name the output file. Default is sp3.out.
--tb Output beginning epoch; <time>=week, sec-of-week (earliest in input).
--te Output ending epoch; <time>=week, sec-of-week (latest in input).
--outputC Output version c (no correlation). Otherwise a.
--msg Add message as a comment to the output header (repeatable).
--verbose Output to screen: dump headers, data, etc.
--help Print this message and quit.

-- NicoleQuindara - 03 Aug 2011

CalGPS Transform Tool

edit

Description

The CalGPS application prints GPS calendars either to the command line or to a graphics file.

The UNIX cal utility served as the initial inspiration for this tool.

Command Summary

calgps [options]

where [options] can be

-h, --help Display argument list.
-3, --three-months Display last, this and next months.
-y, --year Display all months for the current year
-Y, --specific-year=NUM
Display all months for a given year
-p, --postscript=ARG
Generate a postscript file
-s, --svg=ARG
Generate an SVG file
-e, --eps=ARG
Generate an encapsulated postscript file
-v, --view Try to launch an appropriate viewer for the file.

Usage examples

Example 1. Printing text calendar to standard output.

user@host:~$ calgps

                       Dec 2007
1455                                             1-335 
1456   2-336  3-337  4-338  5-339  6-340  7-341  8-342 
1457   9-343 10-344 11-345 12-346 13-347 14-348 15-349 
1458  16-350 17-351 18-352 19-353 20-354 21-355 22-356 
1459  23-357 24-358 25-359 26-360 27-361 28-362 29-363 
1460  30-364 31-365                                    

Example 2. Printing a 2002 calendar to standard output.

calgps -Y 2002

                       Jan 2002
1147                 1-001  2-002  3-003  4-004  5-005 
1148   6-006  7-007  8-008  9-009 10-010 11-011 12-012 
1149  13-013 14-014 15-015 16-016 17-017 18-018 19-019 
1150  20-020 21-021 22-022 23-023 24-024 25-025 26-026 
1151  27-027 28-028 29-029 30-030 31-031               

                       Feb 2002
1151                                      1-032  2-033 
1152   3-034  4-035  5-036  6-037  7-038  8-039  9-040 
1153  10-041 11-042 12-043 13-044 14-045 15-046 16-047 
1154  17-048 18-049 19-050 20-051 21-052 22-053 23-054 
1155  24-055 25-056 26-057 27-058 28-059               

                       Mar 2002
1155                                      1-060  2-061 
1156   3-062  4-063  5-064  6-065  7-066  8-067  9-068 
1157  10-069 11-070 12-071 13-072 14-073 15-074 16-075 
1158  17-076 18-077 19-078 20-079 21-080 22-081 23-082 
1159  24-083 25-084 26-085 27-086 28-087 29-088 30-089 
1160  31-090                                           
...

Example 3. Generating a graphical calender in SVG, launching a postscript viewer when done.

e$ ./calgps -s test.svg -v

Going to launch rsvg-view -b white
sh: rsvg-view: not found
... couldn't execute: rsvg-view -b white test.svg
Going to launch ksvg
sh: ksvg: not found
... couldn't execute: ksvg test.svg
Going to launch inkscape

A picture like the attached is generated: cal.svg

Platforms Supported

This application has been successfully used in Linux, Solaris and Windows. This application successfully build under these environments: linux-x86, linux-x86_64, solaris-ppc, Windows/.net2005, MacOS/X-Code.

See also:

  • The timeconvert application. It converts a specific time to many formats.
  • The poscvt application. It converts a position among coordinate systems.
  • A collection of GPS calendars generated by calgps.

CalcDOPs Application

edit

Description

The CalcDOPsManual tool reads SV almanac data (one file per day of observation) from a FIC, FICA, or a RINEX navigation file, then computes and displays visibility information. Dilution of precision values from that data are calculated using standard methods.

Command Summary

CalcDOPs [options]

Required Arguments:

Short Arg. Long Arg. Description
-i   Input file for day to be calculated.

Optional Arguments:

Short Arg. Long Arg. Description
-p   Input file for previous day (ephemeris mode only).
-o   Grid output file (default DOPs.out).
-sf   Stats output file (default DOPS.stat).
-tf   Time steps output file (default DOPS.times).
-l   Log output file (default DOPS.log).
-rs   Read from stats file.
-a   Work in almanac mode (ephemeris mode is default).
-w -s   Starting time tag.
-x   Exclude satellite PRN.
-t
  Time spacing.
-na   North America only.
-d   Dump grid results at each time step (time-intensive).
-h --help Output options info and exit.
-v   Print version info and exit.

Abort/failure error codes given on return:

-1 Could not open data file.
-2 Could not identify input data file type.
-3 Fewer than 4 satellite almanacs available.
-4 Could not allocate GridStats data types.
-5 Could not open input stats file.
-6 Could not open output grid file.
-7 Could not open output stats file.
-8 Could not open output log file.

Essential variables not documented below at declaration:

NtrofN Number of cells/times with < 5 SVs visible during the time period.
NpeakH Number of cells/times w/ HDOP > 10.
NpeakP Number of cells/times w/ PDOP > 10.
IworstN Index in Grid of cells with worst nsvs (number of satellites).
IworstH Index in Grid of cells with worst HDOP.
IworstP Index in Grid of cells with worst PDOP.
WorstN Value of nsvs at IworstN.
WorstH Value of HDOP at IworstH.
WorstP Value of PDOP at IworstP.
TworstN Time tag (CommonTime) of WorstN.
TworstH Time tag (CommonTime) of WorstH.
TworstP Time Tag (CommonTime) of WorstP.

Notes

  1. GPS only, using PRNs hard-wired to SV numbers 1-32.
  2. Elevation limit is hard-wired to 5 degrees above horizon.
  3. "North America" means the northern half-hemisphere: -180 to 0 deg longitude, 0 to 90N latitude.
  4. Ephemeris mode is default, almanac mode is optional. Ephemeris mode is preferred, because it excludes unhealthy satellites for any time when they transmitted an unhealthy flag. Almanac mode will generally not exclude SVs when they were unhealthy (typical), or may erroneously exclude them for an entire day (rarely).
  5. If two input files are given, the default start time is midnight on the day to be calculated. A previous day input file can be given only in ephemeris mode, not almanac.
  6. The code uses geodetic coordinates for all calculations.
  7. The -d option is useful for e.g. making movies of DOPs throughout a day.

See also:

  • AIAA GPS Theory and Applications, vol. 1, Ed. Parkinson & Spilker, pp. 414.
  • GPS Signals, Measurements, and Performance, 2nd ed., Misra & Enge, pp. 203.

-- NicoleQuindara - 02 Aug 2011

compSatVis/compStaVis Applications

edit

Description

This pair of programs compute station visibility to a constellation of space vehicles (SVs) and SV visiblity to a set of stations. The output is a set of tables that provide statistics such as the average number of stations visible to a SV, minimum and maximum number of SVs visible to a station over a specified period, and amount of time a station has more than a specified number of SVs visible.

The programs are driven by command-line arguments, a file containing station positions, and a file of SV orbital information in any of several formats.

Command Summary

compSatVis [options]
compStaVis [options]

where [options] can be

-h, --help Display argument list
-p, --int Interval in seconds
-n, --nav Name of navigation file(s).
-t, --type Navigation file type: must be (one of)
  YUMA - Yuma format
  SEM - SEM format
  SP3 - SP3 format
  RNAV - RINEX navigation file
  FALM - FIC almanac format
  FEPH - FIC ephemeris format
-o, --output Name of output file
-c, --mscfile Monitor station coordinates file. Monitor Station Coordinates File Format contains information on how to specify station location
-e, --minelv Minimum elevation angle (degrees)
-i, --include Include this station in the calculations. One or more -i options may be given. If at least one -i option is given all stations not designated with the -i option will be excluded from the calculations.
-x, --exclude Exclude this station in the calculations. By default, all stations in the monitor station coordinates file are sued in the calculations. This option specifies the a station is to be excluded. Multiple -x options are allowed in order to exclude multiple stations.
-s, --start-time Start time for evaluation period (m/d/y H:M)
-z, --end-time End time for evaluation period (m/d/y H:M)
-m, --max-SV Maximum number of SVs tracked simultaneously (compStaVis only). Default = 12.
-m, --min-SV Minimum number of stations visible to an SV simultaneously (compSatVis only). Default = 2.
-D, --detail Print SV or station results for each interval. This section of the output file is in form of a comma separated values (CSV) suitable for input to Excel. If only one (1) station is being evaluated, the list of SVs present at each interval will be listed.
-H, --Healthy Consider only healthy SVs (requires FIC ephemeris or Rinex nav file). When the -D option is used AND only one station is being evaluated, -H also control the level of detail in the list of SV PRN IDs. -H once will cause SVs with non-zero health in subframe 1 to be omitted from the list of PRNs. -H -H (two time) will cause SVs to remain in the list, but each unhealthy SVs will marked with the suffix HLTH.

Usage examples

Example 1. Generating satellite visibility statistics using the SEM almanac from the USCG Navigation Center.

user@host:~$ compSatVis -ovisout.txt -ncurrent.al3 -tSEM -cstations.msc -e10 -p60 -s"01/16/2008 00:00"
This example loads SEM almanac data from the file current.al3 and a list of station locations from the file stations.msc. It then calculates the number of satellites visible to each station found at each 60 sec interval from 0000Z to 2356Z of Jan 13, 2008. using a 10 degree minimum elevation angle. The results are written to the file visout.txt. Note the use of a specific start time. The SEM and Yuma almanac formats contain an almanac reference week, which is generally in the range 0-1023 (the existing format definitions are ambiguous and SEM and Yuma almanacs with full week numbers have been reported, at least anecdotally). If the -s command is not specified, compSatVis/compStaVis will use whatever reference time is given in the almanac file, which may result in unexpected results. Example results for a specific set of IGS stations are given here.

Example 2. Generating station visibility statistics using the SEM almanac from the USCG Navigation Center.

user@host:~$ compStaVis -ovisout.txt -ncurrent.al3 -tSEM -cstations.msc -e10 -p60 -s"01/16/2008 00:00"
Same as Example 1, however, the values calculated and the statistics will reflect the number of stations visible to each satellite. Example results for a specific set of IGS stations are given here.

Example 3. Generating satellite visibility statistics using the Yuma almanac from the USCG Navigation Center.

user@host:~$ compSatVis -ovisout.txt -ncurrent.alm -tYUMA -cstations.msc -e10 -p60 -s"01/13/2008 00:00" -z"01/16/2008 23:59"
Similar to Example 1, but the statistics are computed over four complete days.

Example 4. Generating satellite visibility statistics using SP3 files.

user@host:~$ compSatVis -ovisout.txt -napc14622 -napc14623 -napc14624 -tSP3 -cstations.msc -e10 -p60
Similar to Example 1, however, navigation message data are from three SP3 files. It is necessary to load three SP3 files to cover the default sidereal day period because the methods that calculate SV positions from the SP 3 data use interpolation and need data from the previous day and the following day in order to have sufficient points for the interpolation. In this example in which no evaluation period is specified, compSatVis derives coverage for the "middle day" for the period.

Platforms Supported

This application has been successfully used in Linux. This application successfully builds under these environments: linux-x86, linux-x86_64, others tbd.

Assumptions and Defaults

An ellipsoidal Earth corresponding to the WGS-84 geoid is assumed. Horizon obstructions are not taken into account.

If the time span of the evaluation is not set via the -s and -z commands, the programs default to determining the epoch time of the navigation message data and computing statistics from 0000Z - 2356Z of the corresponding day. This is default is derived from the GPS orbit characteristics which cause the ground tracks to repeat every day minus four minutes. As a result, for a given set of GPS orbital information, the statistics should be nearly identical for successive 23h 56m periods. The -s and -z arguments were added for two reasons, (1.) to support future GNSS constellation that do not have the repeating ground track feature of GPS, (2.) the -s also enables potential ambiguity in the almanac reference week to be resolved (for Yuma and SEM almanac data formats).

The program assumes receivers can track all SVs in view. However, the -m (max-SV) option has been added to help address the limitation of this assumption. The -m option tells compStaVis to report the number of intervals for which the number of SVs in view exceed the specified value. Assuming all receivers in the network under consideration can track the same number of SVs, the -s option provides a way in which the user can obtain information on the amount of time the receiver will be "saturated", i.e. have all tracking channels in use.

The -m option in compSatVis is useful in checking various station networks against desired minimum coverage. compSatVis counts the number of intervals in which the number of stations visible to an SV is less than the number specified in the -m option (default of 2).

Whenever the -i or -x options are invoked, the output file will contain a list of the specific stations used in the analysis. Otherwise, the output file simply notes that all stations in the monitor station coordinates file were used.

See also:

ConstellationList Application

edit

Description

ConstellationList provides lists of the GPS SV PRN ID active/inactive on a given day. In particular, ConstellationList provides a means of determining which SVs are members of the "Base 24" constellation and which are not. This is usually of no interest to the general user, but is important in cases where programs are evaluating GPS performance against a defined standard such at the Standard Positioning Service (SPS) Performance Standard (PS) which defines GPS performance in terms of the "official" constellation as opposed to the superset which is normally available. The results are provided as a text list of comma separated values on a a single line, suitable for piping into another process.

The complication in this process is that the information regarding the orbit plane/slot of each SV is not available from the broadcast message. It must be obtain "external to the system". Once source of such information is the USCG Navigation Center website which store the Operational Advisories. These advisories provide the relationship between SVs and plane/slot assignments. ConstellationList is programmed to read the advisories as an input format, as long as the format of the advisories does not change.

As an alternative to the Operational Advisories, ARL:UT has prepared files of the assignments for specific years as comma separated value files. Each line in these files represents the status on a given day and includes the mapping between the PRN IDs and the NAVSTAR numbers. These files have been hand-checked and are available in the GPSTk repository as Slot2007.csv and Slot2008.csv.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
-i --input-file=<arg> The name of the Constellation Definition file(s) to read.
-y --year=<arg> Year of interest.
-j --day-of-year=<arg> Day of year.

Optional Arguments:

-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
-O -OpsAd Assume input file is Op Advisory format (CSV is default).
-b -Base24 List PRNs in Base 24 Constellation.
-x --excessSVs List PRNs in use, but in excess of the Base 24 Constellation.
-n --notBase24 List PRNs NOT used in Base 24 Constellation.
-s --SVN Output Output SVN in place of PRN (not valid for -O).

Usage examples

>ConstellationList -iSlot2008.csv -tC -y2008 -j001 -b
2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 27, 28, 30, 31
>ConstellationList -iSlot2008.csv -tC -y2008 -j001 -n
1, 5, 7, 24, 25, 26, 29, 32
>ConstellationList -iSlot2008.csv -tC -y2008 -j001 -n
1, 5, 24, 25, 26
>ConstellationList -iSlot2008.csv -tC -y2008 -j001 -b -s
61, 33, 34, 36, 38, 39, 40, 46, 58, 43, 41, 55, 56, 53, 54, 59, 51, 45, 47, 60, 27, 44, 30, 52

Platforms Supported

This application has been successfully used in Linux. This application successfully builds under these environments: linux-x86, linux-x86_64, solaris-ppc, Windows/.net2005, MacOS/X-Code.

-- NicoleQuindara - 05 Aug 2011

daa Application

edit

Description

The daa tool performs a data availability analysis of the input data. In general, availability is determined by station and satellite position. In general, availability is determined by station and satellite position.

Usage

DataAvailabilityAnalysisManual [options]

Required Arguments:

Short Arg. Long Arg. Description
-e --eph <inputfile> Where to get ephemeris data. Acceptable formats include RINEX nav, FIC, MDP, SP3, YUMA, and SEM. Repeat for multiple files.
-o -obs <inputfile> Where to get the observation data. Acceptable formats include RINEX obs, MDP, smooth, Novatel, and raw Ashtech. Repeat for multiple files. If a RINEX obs file is provided, the position will be taken from the header unless otherwise specified.

Optional Arguments:

Short Arg. Long Arg. Description
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
  --output <outputfile> Output location (default is stdout.)
-x --independent The independent variable in the analysis. The default is time.
-c --msc Station coordinates file.
-m --msid Station for which to process data. used to select a station position from the msc file.
-t --time-format CommonTime? format specifier used for times in the output. The default is "%Y %j %02H:%02M:%04.1f".
  --mask-angle Ignore anomalies on SVs below this elevation (default is 10 degrees).
  --track-angle Assume the receiver starts tracking at this elevation (default is 10 degrees).
  --time-mask Ignore anomalies on SVs that haven't been above the mask angle for this number of seconds. The default is 0 seconds.
  --snr Discard data with an SNR less than this value. The default is 20 dB-Hz.
-p --position Receiver antenna position in Position (x,y,z) coordinates. Format as a string: "X Y Z".
-l --time-span How much data to process, in seconds.
  --ignore-prn Specify the PRN of a SV to not report on in the output. Repeat to specify multiple SVs.
  --obs-interval Specify the tiem interval, in seconds, between observations. The default is to scan the file to discover this via examination of the file.
-b --bad-health Ignore anomalies associated with SVs that are marked unhealthy.
-s --smash-adjacent Combine adjacent lines from the same PRN.
  -start-time <TIME> Ignore data before this time: %4Y/$3j/%02H:%02M:%05.2f.
  -stop-time <TIME> Ignore any data after this time.

-- NicoleQuindara - 02 Aug 2011

DiscFix Application

Definition

DiscFix reads a RINEX observation data file containing GPS dual-frequency pseudorange and carrier phase measurements, divides the data into 'satellite passes', and finds and fixes discontinuities in the phases for each pass. Output is a list of editing commands for use with program RinexEdit. DiscFix will (optionally) write the corrected pseudorange and phase data to a new RINEX observation file. Other options will also smooth the pseudorange and/or debias the corrected phase.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
  --inputdir File containing more options.
  --dt Time space in seconds of the data.

Optional Arguments:

Short Arg. Long Arg. Description
-f --file File containing more options.
  --beginTime Start time of processing (BOF).
  --endTime End time of processing (EOF).
  --deciminate Decimate data to specified time interval, in seconds.
  --forceCA Use C/A code range, NOT P code. Default only if P absent.
  --gap Minimum data gap in seconds separating satellite passes (default 600).
  --onlySat Process only satellite (GPS SatID, e.g. G21).
  --exSat Exclude satellite(s) (GPSSatID).
  --smoothPR Smooth pseudorange and output in place of raw pseudorange.
  --smooth Same as =--smoothPR AND --smoothPH.
  --DCLabel Set Discontinuity Corrector parameter 'label to 'value'.
  --DChelp Print a list of GDC parameters and their defaults, then quit.
  --logOut Output log file name (df.log).
  --cmdOut Output file name, for editing commands (df.out).
  --format Output tiem format (gpstk::CommonTime) (%4F %10.3g).
  --RinexFile RINEX (observation) file name for output of corrected data.
  --RunBy RINEX header 'Run By' string for output.
  --Observer RINEX header 'Observer' string for output.
  --Agency RINEX header 'Agency' string for output.
  --Marker RINEX header 'Marker' string for output.
  --Number RINEX header 'Number' string for output.
-h --help Print this syntax page and quit.
  --verbose Print extended output to the log file.

Platforms Supported

This application has been succesfully used in Linux and Windows.

This application successfully build under these environments: linux-x86, linux-x86_64, solaris-ppc, Windows/.net2005, MacOS/X-Code.

Usage Examples

Linux/UNIX command line

Example use session from the GPSTk source distribution.

  1. Change to the examples directory. cd ~/svn/gpstk/dev/examples
  2. Execute DiscFix. Here are the standard recommended DiscFix? options.

        DiscFix --inputfile YOUR_RINEX_FILE --dt 30 --smooth --DCWLFixMaxGap=3000 --DCGFFixMaxGap=250 --DCGFFixSigma=3.6 --RinexFile YOUR_OUTPUT_RINEX_FILE

See also:

  • EditRinex - generating extended RINEX observation files


Double Difference Analysis

The noise associated with observations collected by a stationary GPS receiver can be characterized by conducting a double difference analysis. This requires a synchronous set of range, phase, and Doppler observations from two receivers connected to a common antenna in what is commonly referred to as a zero-baseline configuration. The double difference being computed is between two SVs and two receivers at a single epoch. The first difference is formed for each receiver by differencing the observations of any two SVs. The second difference is formed by differencing these two first differences.

ddGen

Process

The noise associated with observations collected by a stationary GPS receiver can be characterized by conducting a double difference analysis. This requires a synchronous set of range, phase, and Doppler observations from two receivers connected to a common antenna in what is commonly referred to as a zero-baseline configuration. The double difference being computed is between two SVs and two receivers at a single epoch. The first difference is formed for each receiver by differencing the observations of any two SVs. The second difference is formed by differencing these two first differences.

While the above summarizes the double difference, it is not a sufficient description of the necessary processing steps. There are various corrections that need to be applied, edits to be performed, and statistics to be computed. This processing is implemented in the GPSTk application ddGen. The source code of this program can be found at http://gpstk.svn.sourceforge.net/viewvc/gpstk/dev/apps/reszilla/ . What follows is a description of the processing that ddGen performs.

The following operations are performed at each epoch:

  1. The raw pseudorange observations from a receiver are used to compute a pseudorange residual based on the provided ephemeris data for each SV and a provided receiver position. These residuals are averaged together to form a receiver clock estimate at each epoch.
  2. This process is repeated for the second receiver.
  3. The two clock estimates for the epoch are differenced to form a receiver clock bias.
  4. Data that doesn't meet the following criteria is excluded at this point:
    1. Health bits must be set in the ephemeris and must indicate a healthy status
    2. SNR must be greater than 20 dBHz
    3. Observation data for each SV must be provided from both receivers
    4. Flags in the observation data messages must indicate continuous tracking
  5. For each unique pair of SVs, a double difference is formed for the range, phase, and Doppler.
  6. The double differences are corrected for SV motion by using the Doppler measurement for an estimate of line-of-sight motion and the computed receiver clock bias.

The receiver clock estimate is sensitive to errors in the provided antenna position, SV position/clock, ionospheric modeling, and tropospheric modeling. Since errors in the receiver clock estimate have a very weak effect on the double difference, the broadcast ephemeris may be used for the SV position and clock computation. A dual frequency ionospheric correction and a location/time based tropospheric model are applied.

After this process has been completed for all epochs in the input data, the range and Doppler double differences are complete. The phase double differences still include both receivers' integer ambiguity in phase. The removal of this bias occurs as follows:

  1. The phase double differences are grouped into tracks, or continuous series of double differences for a specific pair of SVs.
  2. A third difference is formed as the difference between successive values in each track.
  3. The track(s) for a specific SV pair are further split into smaller tracks based upon discontinuities in the third difference. This accounts for cycle slips and other tracking anomalies.
  4. The mean value of each double difference track is computed and removed from the values in the track.

At this point, the double differences for range, phase and Doppler represent samples of the receiver noise. This noise process is generally accepted to be a function of signal strength, and signal strength is a function of elevation. As such, the double differences are grouped into elevation bins where both SVs are in the same elevation range. The elevation bins are often chosen to easily get a significant sample set while being small enough to reflect similar signal strength.

Since this is a stochastic process, descriptive statistics are computed over all the epochs. The first and second order moments (mean and standard deviation) are robustly estimated for each of the bins using the median and median absolute deviation (MAD). The kurtosis is also calculate to give an indication of the distribution. This results in a table of statistics that is indexed by carrier (L1, L2), code (C/A, Y, P), observation type (range, phase, Doppler) and elevation range. In that table, jumps are the number of discontinuities detected in the differences. A partial example of this is below.

>s  Development.ObsID           elev      noise(mad)    median      # DDE     # SVE    kurt   jumps
>s -------------    -----     ----------  ----------   -------   -------  ------  -----
>s L1 C/A range      0-10     0.1927458   -1.874e-03     27885     61470   27544    0
>s L1 C/A phase      0-10     0.0002190   -1.980e-06     27881     61470     129    5
>s L1 C/A doppler    0-10     0.0003340   -2.131e-05     27885     61470    7176    0
>s L1 Y range        0-10     0.0849960   -4.767e-04     27885     61470    5619    0
>s L1 Y phase        0-10     0.0003013   -1.604e-06     27882     61470    2181    4
>s L1 Y doppler      0-10     0.0004503   -1.222e-05     27885     61470    6584    0

>s L1 C/A range     10-20     0.1362878    1.266e-03     99654    116181    3.43    0
>s L1 C/A phase     10-20     0.0001790    2.407e-06     99654    116181    3.08    0
>s L1 C/A doppler   10-20     0.0002815   -6.836e-07     99654    116181    3.13    0
>s L1 Y range       10-20     0.0603125   -1.009e-03     99654    116181    3.38    0
>s L1 Y phase       10-20     0.0002326    8.899e-06     99654    116181    3.15    0
>s L1 Y doppler     10-20     0.0003451    8.162e-07     99654    116181    3.21    0
...

The ddGen program has two modes of operation. The first uses a single master SV to form the double difference. The second forms all unique combinations of SV pairs at each epoch. Since memory constraints limit the length of data that can easily be processed using this technique, the length of data analyzed needs to be traded off against the strength of the statistical characterization. This is also why all unique combinations of two SVs are used at each epoch as opposed to just using a single "master" SV to difference all other SVs against. Each combination is a unique observation of the receiver noise. So, instead of getting n-1 observations of noise at each epoch, we get ${n \choose 2} = \frac{{n!}}{{2!\left( {n - 2} \right)!}}$ observations, where n is the number of SVs in track. Experience shows that processing more than 24 hours of data from a 12 channel receiver in this manner does not affect the descriptive statistics. Processing spans less than 24 hours have not been investigated.

The Double Difference

There are many differences that can be formed, each with different properties. The intent of this analysis is to derive a process for examining the receiver noise of a stationary GPS receiver based upon the receiver's raw range measurements. This analysis assumes that two identical receivers are connected to a common antenna in what is commonly referred to as a zero-baseline configuration. While the receivers share an antenna, they do not share a common frequency references or internal clock.

The basic GPS range equation may be written as (see symbol key at end):

$p = \rho\ + c\cdot(dt_{rx} - dt_{sv}) +\eta - m - d_{ion} - d_{trop} -URE$

A first difference is formed between two receivers ($\bigtriangleup$) at the same epoch for the same satellite. This difference has the effect of reducing the common mode effects proportional to the inverse of the length of the baseline. For a zero-baseline configuration, this has the desireable effect of removing may sources of errors. Specifically $ URE, d_{ion}, d_{trop}, m$, and $dt_{sv}$ and are all canceled out.

$\bigtriangleup p_{sv1} = p_{1,1} - p_{2,1}$

$\bigtriangleup p_{sv1} = c \cdot (dt_{rx1} - dt_{rx2}) + \eta_{1,1} + \eta_{2,1}$

This first difference is also formed for a second SV at the same epoch.

$\bigtriangleup p_{sv2} = c \cdot (dt_{rx1} - dt_{rx2}) + \eta_{1,2} + \eta_{2,2}$

Note that in the first difference, the receiver clock offset still is the major term. Forming a second difference ($\bigtriangledown$) between the two first differences will cancel this term.

$\bigtriangledown \bigtriangleup p = \bigtriangleup p_{sv1} - \bigtriangleup p_{sv2}$

$\bigtriangledown \bigtriangleup p = \eta_{1,1} + \eta_{2,1} - \eta_{1,2} - \eta_{2,2}$

If the receiver noise is assumed to be non-correlated between receivers and SVs, the magnitude of this double difference is$\sqrt{4}$ times the receiver noise of a single receiver.

One significant problem with the preceding analysis is that the two receivers did not take their observations at precisely the same time. When each receiver is taking observations synchronously to its internal clock, the difference in the two receivers' clock offsets ( $dt_{rx1} - dt_{rx2}$) is the difference in the time between when the observations were taken. To account for this, the observations from one receiver may be shifted to align it with the other receiver. The magnitude of this shift is the line-of-sight motion multiplied by the difference in receiver offsets.

$p_{ta} = p + \frac{dp}{dt} \cdot c\cdot (dt_{rx1} - dt_{rx2})$

The Doppler measurement is an estimate of the line of sight motion so the above equation can be rewritten as:

$p_{ta} = p + \dot{\phi} \cdot c \cdot (dt_{rx1} - dt_{rx2})$

Symbols

  • $\rho$: true line-of-sight range
  • $p$: observed code range
  • $\phi$: observed carrier phase measurement
  • $\phi_{ta}$: time-adjusted code range measurement
  • $\dot{\phi}$: observed carrier phase rate of change, an observation of line of sight motion (m/s)
  • $\eta$: receiver noise
  • $dt_{rx}$: receiver clock error
  • $dt_{sv}$: satellite clock error
  • $URE$: user range error; represents the uncertainty in knowing the satellite's position
  • $d_{ion}$: ionospheric delay
  • $d_{trop}$: tropospheric delay
  • $m$: multipath error

The first numeric subscript is the receiver index while the second one is the SV index. So $\eta_{1,2}$ would be the noise of receiver 1 due to tracking SV 2.

ddStats

Computes statistics on ddGen output. Currently this is done in ddGen.

-b, --elev-bin=ARG A range of elevations, used in computing the statistical summaries. Repeat to specify multiple bins. The default is "b 0-10 -b 10-20 -b 20-60 -b 10-90".
-o, --statsFile=ARG Filename for output of stats only. Stats will still be included at the end of the ord file.
-s, --sigma=ARG Multiplier for sigma stripping used in statistical computations. The default value is 6.

ddPlot

This tool plots the double difference results. It is written in python and uses matplotlib for generating the graphs. All double differences will be plotted by default, or you may specify plotting criteria using the command line options. A sample plot is show below. Click on the thumbnail to see a larger image.

Options:

-h, --help Show this help message and exit
-d, --debug Increase the debugLevel.
-l, --legend Include a legend.
-a, --averages Plot the averages using the same plotting criteria. Use twice and only averages will be plotted.
-u, --no-unhlthy Do not plot data from unhealthy SVs.
-r, --range Plot range double difference values.
-D, --doppler Plot Doppler double difference values.
-p, --phase Plot phase double difference values.
-1, --L1 Plot data from L1 freq band.
-2, --L2 Plot data from L2 freq band.
-i INPUTFILE Input data file, defaults to stdin.=
-t TITLE Specify a title for the plot. Defaults to the name of the input stream.
-f SAVEFIG Save the figure to the indicated file.
-y YRANGE Fix the y range on the ords to be +- this value.
-s TSTART Start time. Format as "YYYY DOY HH:MM:SS.S" (Note the trailing decimal place).
-e TEND End time. Format as "YYYY DOY HH:MM:SS.S" (Note the trailing decimal place).

DOPCalc Application

edit

Description

This application computes position, time, and geometric dilution of precision (DOP).

Command Summary

Required Arguments:
-e --eph Where to get the ephemeris data. Acceptable formats include RINEX nav, FIC, MDP, SP3, YUMA, and SEM. Repeat for multiple files.
-o --obs Where to get the observation data. Acceptable formats include RINEX obs, MDP, smooth, Novatel, and raw Ashtech. Repeat for multiple files. If a RINEX obs file is provided, the position will be taken from the header unless otherwise specified.

Optional Arguments:

-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
-p --position User position in ECEF (x,y,z) coordinates. Format as string: "X Y Z".
  --el-mask Elevation mask to apply, in degrees. The default is 0.
-c --msc Station coordinates file.
-m --msid Monitor station ID number.

-- NicoleQuindara - 03 Aug 2011

EditRinex Application

edit

Description

The EditRinex application provides an effective Swiss army knife for RINEX applications. EditRinex will open and read one RINEX file, apply editing commands, and write the modified RINEX data to another RINEX file(s). Input is on the command line, or of the same format in a file (-f).

Command Summary

Optional arguments:

-f --file File containing more options.
-l --log Output log file name.
-h --help Print syntax and quit.
-d --debug Print extended output info.
-v --verbose Print extended output info.
  <REC> RINEX editing commands - following:

Rinex Editor commands:

===============================================================================

Commands consist of an identifier and a comma-delimited data field; they may be separated by space(s) '--id ' (two minuses) or not '-id' (one minus).

Examples are '--IF myFile' or '-IFmyFile'; '--HDc msg' or '--HD cmsg' or '-HDcmsg'; --BZ or -BZ; '--DD +<SV,OT,t>' or '--DD+ <SV,OT,t>' or '-DD+<SV,OT,t>'.

The data field contains no whitespace and sub-fields are comma-delimited. is a RINEX 'system & id' identifier, e.g. G27 (= GPS PRN 27); satellite system alone denotes 'all satellites this system', e.g. 'R' (GLONASS).

<OT> is a RINEX observation type, e.g. L1 or P2, and is case sensitive.

File Input/Output
-IF<file> Input RINEX observation file name. This is required. May be repeated.
-ID<dir> Directory in which to find input file.
-OF<f>,<time> Output RINEX file name. This is required.
-OD<dir> Directory in which to put output file(s).
Output RINEX Header
-HDf If present, fill optional records in the output RINEX header.
-HDp<program> Set output RINEX header 'program' field.
-Hdr<run_by> Set output RINEX header 'run by' field.
-Hdo<observer> Set output RINEX header 'observer' field.
-HDa<agency> Set output RINEX header 'agency' field.
-Hdx<x,y,z> Set output RINEX header 'position' field to ECEF position (x,y,z).
-Hdm<marker> Set output RINEX header 'marker' field.
-Hdn<number> Set output RINEX header 'number' field.
-Hdc<comment> Add comments to output RINEX header (more than one allowed).
-Hdc Delete all comments in output RINEX header. This cannot delete comments created by subsequent -HDc commands.
Output RINEX Observation Types
See also 'Specific Edit Commands' Below
-AO<OT> Add observation type OT to header and observation data.
-DO<OT> Delete observation type OT entirely (including header).
Time-Related Edit Commands
-TB<time> Begin time: reject data before this time (also used for decimation).
-TE<time> End time: reject data after this time.
-TT<dt> Tolerance in comparing times, in seconds (default = 1 ms).
-TN<dt> Decimate data to epochs = Begin + integer*dt (within tolerance).

Specific edit commands:

===============================================================================

(Generally each '+' command (e.g DA+

Delete Commands
-DA+<time> Delete all data beginning at this time.
-DA-<time> Stop deleting data at this time.
-DO<OT> Delete observation type OT entirely (including header).
-DS<SV> Delete all data for satellite SV entirely (SV may be system only).
-DS<SV>,<time> Delete all data for satellite SV at this single time only.
-DS+<SV>,<time> Delete all data for satellite SV beginning at this time.
-DS-<SV>,<time> Stop deleting all data for satellite SV at this time.
-DD<SV,OT,t> Delete a single RINEX datum (SV,OT,t) at time <t>. Deleting data for one OT means setting it to zero, as RINEX requires.
-DD+<SV,OT,t> Delete all (SV,OT) data, beginning at time <t>.
-DD-<SV,OT,t> Stop deleting al (SV,OT) data at time <t>.
Set Commands
-SD<SV,OT,t,d> Set data(SV,OT,t) to <d> at time <t>.
-SS<SV,OT,t,s> Set ssi(SV,OT,t) to <d> at time <t>.
-SL<SV,OT,t,l> Set all lli(SV,OT,t) to <l> at time <t>.
-SL-<SV,OT,t> Stop setting lli(SV,OT,t) to <l> at time <t> (<l> is optional).
-SL <SV,OT,t,l> Set lli(SV,OT,t) to <l> at the single time <t> only.
Bias Commands
-BZ Apply BD commands even when data is zero (i.e. 'missing').
-BD<SV,OT,t,d> Add the value of <d> to data(SV,OT,t) at time <t>. BD commands apply only when data is non-zero unless -BZ appears.
-BD+<SV,OT,t,d> Add the value of <d> to data(SV,OT) at time <t>.
-BD-<SV,OT,t,d> Stop adding <d> to data (SV,OT) at time <t> (<d> optional).
-BS<SV,OT,t,s> Add the value of <s> to ssi(SV,OT,t) at time <t>.
-BL<SV,OT,t,l> Add the value of <l> to lli(SV,OT,t) at time <t>,

Usage examples

Example 1. Changing the APPROX position in the file acor1480.08o to the center of the Earth. Writes a new file called acor1480.08o.mod

user@host:~$ EditRinex -IFacor1480.08o -OFacor1480.08o.mod -HDx0,0,0

Example 2. Removing a satelite, PRN 29, from an observation file, onsa2240.05o. Creates a new file, temp.o.

EditRinex -IFonsa2240.05o -OFtemp.o

Platforms Support Notes

This is a command line application that works on all GPSTk supported operating systems. This includes Linux, Solaris, Max OS/X and Windows.

This application successfully build under these environments: linux-x86, linux-x86_64, solaris-ppc, Windows/.net2005, MacOS/X-Code.

See also:

  • RinSum summarizes the basic features of a RINEX file.
  • ResCor can perform EditRinex commands plus additional ones.

-- NicoleQuindara - 03 Aug 2011

ephdiff Application

edit

Description

This application compares the contents of two files, either RINEX navigation or FIC, containing ephemeris data.

Command Summary

Optional Arguments:
Short Arg. Long Arg. Description
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
-f --fic=<arg> Name of an input FIC file.
-r --rinex=<arg> Name of an input RINEX navigation file.

Examples

> ephdiff -f fic06.187 -r arl2800.06n

Broadcast Ephemeris (Engineering Units)

PRN : 11

              Week(10bt)     SOW     DOW   UTD     SOD   MM/DD/YYYY   HH:MM:SS
Clock Epoch:  1382( 358)  417600   Thu-4   187   72000   07/06/2006   20:00:00
Eph Epoch:    1382( 358)  417600   Thu-4   187   72000   07/06/2006   20:00:00
Transmit Week:1382
Fit interval flag :  0

          SUBFRAME OVERHEAD

               SOW    DOW:HH:MM:SS     IOD    ALERT   A-S
SF1 HOW:    411426  Thu-4:18:17:06   0x17D      0      on
SF2 HOW:    411432  Thu-4:18:17:12    0x7D      0      on
SF3 HOW:    411438  Thu-4:18:17:18    0x7D      0      on

           CLOCK
. . .

-- NicoleQuindara - 03 Aug 2011

ephsum Application

edit

Description

Summarize contents of a navigation message file. ephsum works on either RINEX navigation message files or FIC files. The summary is in a text output file. The summary contains the transmit time, time of effectivity, end of effectivity, IODC, and health as a one-line-per ephemeris summary. The number of ephemerides found per SV is also provided. The number of ephemerides per SV is also summarized at the end. The default is to summarize all SVs found. If a specific PRN ID is provided, only data for that PRN ID will be sumarized.

Command Summary

Required Options:

-i, --input-file File specifier for the input file(s). Up to eight may be specified
-o, --output-file File specified for the output test file.

Optional Arguments:

-p, --PRNID Optional parameter to allow summary of a single PRNID
-h, --help Display argument list.
-d, --debug Increase debug level.
-x, --xmit List in order of transmission (default is TOE).
-v, --verbose Increase verbosity.

Usage examples

>ephsum -ianavfic06.120 -ianavfic06.121 -ooutfile.txt

After execution, outfile.txt contains the following

# Output file from EphSum
# Processing input specification: anavfic06.120 - Success(FIC)
# Processing input specification: anavfic06.121 - Success(FIC)
#
#PRN: 01,  # of eph: 31
#PRN !               Xmit                !             Toe/Toc               !            End of Eff             !  IODC   Health
  01 ! 1373      0 04/30/06 120 00:00:00 ! 1373   7200 04/30/06 120 02:00:00 ! 1373  14400 04/30/06 120 04:00:00 ! 0x1E1  0x00 00 
  01 ! 1373   7710 04/30/06 120 02:08:30 ! 1373  14384 04/30/06 120 03:59:44 ! 1373  21584 04/30/06 120 05:59:44 ! 0x006  0x00 00 
  01 ! 1373   7200 04/30/06 120 02:00:00 ! 1373  14400 04/30/06 120 04:00:00 ! 1373  21600 04/30/06 120 06:00:00 ! 0x2DC  0x00 00 
  01 ! 1373  14400 04/30/06 120 04:00:00 ! 1373  21584 04/30/06 120 05:59:44 ! 1373  28784 04/30/06 120 07:59:44 ! 0x007  0x00 00 
  01 ! 1373  21600 04/30/06 120 06:00:00 ! 1373  28800 04/30/06 120 08:00:00 ! 1373  36000 04/30/06 120 10:00:00 ! 0x308  0x00 00 
  01 ! 1373  34230 04/30/06 120 09:30:30 ! 1373  35984 04/30/06 120 09:59:44 ! 1373  43184 04/30/06 120 11:59:44 ! 0x022  0x00 00 
  01 ! 1373  28800 04/30/06 120 08:00:00 ! 1373  36000 04/30/06 120 10:00:00 ! 1373  43200 04/30/06 120 12:00:00 ! 0x309  0x00 00 
  01 ! 1373  36000 04/30/06 120 10:00:00 ! 1373  43184 04/30/06 120 11:59:44 ! 1373  50384 04/30/06 120 13:59:44 ! 0x023  0x00 00 
  01 ! 1373  43200 04/30/06 120 12:00:00 ! 1373  50400 04/30/06 120 14:00:00 ! 1373  57600 04/30/06 120 16:00:00 ! 0x024  0x00 00 
  01 ! 1373  50400 04/30/06 120 14:00:00 ! 1373  57600 04/30/06 120 16:00:00 ! 1373  64800 04/30/06 120 18:00:00 ! 0x025  0x00 00 
  01 ! 1373  57600 04/30/06 120 16:00:00 ! 1373  64800 04/30/06 120 18:00:00 ! 1373  72000 04/30/06 120 20:00:00 ! 0x226  0x00 00 
  01 ! 1373  64800 04/30/06 120 18:00:00 ! 1373  72000 04/30/06 120 20:00:00 ! 1373  79200 04/30/06 120 22:00:00 ! 0x227  0x00 00 
  01 ! 1373  72000 04/30/06 120 20:00:00 ! 1373  79200 04/30/06 120 22:00:00 ! 1373  86400 05/01/06 121 00:00:00 ! 0x122  0x00 00 
  01 ! 1373  79200 04/30/06 120 22:00:00 ! 1373  86400 05/01/06 121 00:00:00 ! 1373  93600 05/01/06 121 02:00:00 ! 0x123  0x00 00 
  01 ! 1373  86400 05/01/06 121 00:00:00 ! 1373  93600 05/01/06 121 02:00:00 ! 1373 100800 05/01/06 121 04:00:00 ! 0x124  0x00 00 
  01 ! 1373  95340 05/01/06 121 02:29:00 ! 1373 100784 05/01/06 121 03:59:44 ! 1373 107984 05/01/06 121 05:59:44 ! 0x03E  0x00 00 
  01 ! 1373  93600 05/01/06 121 02:00:00 ! 1373 100800 05/01/06 121 04:00:00 ! 1373 108000 05/01/06 121 06:00:00 ! 0x125  0x00 00 
  01 ! 1373 107850 05/01/06 121 05:57:30 ! 1373 107968 05/01/06 121 05:59:28 ! 1373 115168 05/01/06 121 07:59:28 ! 0x058  0x00 00 
  01 ! 1373 100800 05/01/06 121 04:00:00 ! 1373 107984 05/01/06 121 05:59:44 ! 1373 115184 05/01/06 121 07:59:44 ! 0x03F  0x00 00 
  01 ! 1373 108000 05/01/06 121 06:00:00 ! 1373 115168 05/01/06 121 07:59:28 ! 1373 122368 05/01/06 121 09:59:28 ! 0x059  0x00 00 
  01 ! 1373 121410 05/01/06 121 09:43:30 ! 1373 122384 05/01/06 121 09:59:44 ! 1373 129584 05/01/06 121 11:59:44 ! 0x172  0x00 00 
  01 ! 1373 115200 05/01/06 121 08:00:00 ! 1373 122400 05/01/06 121 10:00:00 ! 1373 129600 05/01/06 121 12:00:00 ! 0x05A  0x00 00 
  01 ! 1373 122400 05/01/06 121 10:00:00 ! 1373 129584 05/01/06 121 11:59:44 ! 1373 136784 05/01/06 121 13:59:44 ! 0x273  0x00 00 
  01 ! 1373 129600 05/01/06 121 12:00:00 ! 1373 136800 05/01/06 121 14:00:00 ! 1373 144000 05/01/06 121 16:00:00 ! 0x274  0x00 00 
  01 ! 1373 136800 05/01/06 121 14:00:00 ! 1373 144000 05/01/06 121 16:00:00 ! 1373 151200 05/01/06 121 18:00:00 ! 0x175  0x00 00 
  01 ! 1373 146640 05/01/06 121 16:44:00 ! 1373 151184 05/01/06 121 17:59:44 ! 1373 158384 05/01/06 121 19:59:44 ! 0x18C  0x00 00 
  01 ! 1373 144000 05/01/06 121 16:00:00 ! 1373 151200 05/01/06 121 18:00:00 ! 1373 158400 05/01/06 121 20:00:00 ! 0x176  0x00 00 
  01 ! 1373 151200 05/01/06 121 18:00:00 ! 1373 158384 05/01/06 121 19:59:44 ! 1373 165584 05/01/06 121 21:59:44 ! 0x08D  0x00 00 
  01 ! 1373 165570 05/01/06 121 21:59:30 ! 1373 165584 05/01/06 121 21:59:44 ! 1373 172784 05/01/06 121 23:59:44 ! 0x1A6  0x00 00 
  01 ! 1373 158400 05/01/06 121 20:00:00 ! 1373 165600 05/01/06 121 22:00:00 ! 1373 172800 05/02/06 122 00:00:00 ! 0x08E  0x00 00 
  01 ! 1373 165600 05/01/06 121 22:00:00 ! 1373 172784 05/01/06 121 23:59:44 ! 1373 179984 05/02/06 122 01:59:44 ! 0x1A7  0x00 00 
#
       - - - PRN 2-30 omitted for brevity - - -
#
#PRN: 31,  # of eph: NONE
#
#PRN: 32,  # of eph: NONE
#
#Summary of Counts by PRN
# PRN    Count
#  01       31
#  02       26
#  03       27
#  04       26
#  05       26
#  06       26
#  07       26
#  08       27
#  09       27
#  10       26
#  11       26
#  12        0
#  13       26
#  14       27
#  15       28
#  16       26
#  17       27
#  18       26
#  19       26
#  20       26
#  21       26
#  22       26
#  23       26
#  24       26
#  25       26
#  26       26
#  27       27
#  28       26
#  29       26
#  30       26
#  31        0
#  32        0

Platforms Supported

This application has been successfully used in Linux. This application successfully builds under these environments: linux-x86, linux-x86_64, solaris-ppc, Windows/.net2005, MacOS/X-Code.

-- NicoleQuindara - 02 Aug 2011

fic2rin Converter

edit

Description

Fic2rin converts navigation messages between FIC format, a format for GPS observations established by ARL:UT, and the RINEX format.

Usage

fic2rin <input FIC file> <output RINEX file name>

Examples

Binary FIC File

0000000
*
0000020                                   B   L   K       m  \0  \0  \0
0000030  \0  \0  \0  \0      \0  \0  \0  \0  \0  \0  \0   f 005  \0  \0
0000040 022  \0  \0  \0   >   f 301   " 260   i   {   !   f  \0   d 026
0000050 335 344   8  \t 002   b   C 035 205   7   4 027 241 372 210 006
0000060 006   }   Y   / 301 374   ?  \0   \   S 021   8   >   f 301   "
 . . .

RINEX NAV File

     2.10           NAVIGATION                              RINEX VERSION / TYPE
fic2rin                                 07/13/2006 11:48:58 PGM / RUN BY / DATE
                                                            END OF HEADER
 5 06  7  6 19 59 44.0  .199091155082D-03  .356976670446D-10  .000000000000D+00
     .118000000000D+03 -.656250000000D+00  .538879589355D-08  .997594152841D+00
    -.409781932831D-07  .710751442239D-02  .655464828014D-05  .515355578804D+04
     .417584000000D+06 -.104308128357D-06 -.249936238139D+01  .707805156708D-07
     .938194464982D+00  .241750000000D+03  .105751234129D+01 -.843570852398D-08
     .600024993449D-10  .100000000000D+01  .138200000000D+04  .000000000000D+00
     .240000000000D+01  .000000000000D+00 -.419095158577D-08  .118000000000D+03

-- NicoleQuindara - 03 Aug 2011

ficacheck/ficcheck Validating Tools

edit

Description

These applications read input ASCII or binary FIC and check them for errors. Ficcheck checks binary files and ficacheck checks ASCII files.

Command Summary

Optional Arguments:
Short Arg. Long Arg. Description
-d -debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
-t --time <TIME> Time of first record to count (default is beginning of time).
-e --end-time <TIME> End time range to compare (default is end of time).

Examples

> ficacheck brokenfica
Checking brokenfica
text 0:Bad block header, record=2 location=484
text 1:blkHdr=[    ]
text 2:In record 2
text 3:In file brokenfica
text 4:Near file line 10
location 0:src/FICData.cpp:963
location 1:src/FFStream.cpp:159
location 2:src/FFStream.hpp:208
location 3:src/FFStream.hpp:208

Notes

Only the first error in each file is reported. The entire file is always checked, regardless of time options.

-- NicoleQuindara - 02 Aug 2011

ficdiff Comparison Tool

edit

Description

Ficdiff compares the contents of two FIC files containing ephemeris data.

Command Summary

Optional Arguments:
Short Arg. Long Arg. Description
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
-t --time=<TIME> Start time of range to compare (default is beginning of time).
-e -end-time End of time range to compare (default is end of time).

Examples

> ficdiff -t "08/01/2006 12:00:00" fic1 fic2
<FIC BlockNumber: 9
 floats:   139 362 172806 1 1 1386 1 0 0 55296 0 -4.19095e-09 180000 0 . . .
 integers:
 chars:

<FIC BlockNumber: 9
 floats:   139 362 172806 1 1 1386 1 0 0 59392 0 -6.98492e-09 179984 0 . . .
 integers:
 chars:
 . . .

-- NicoleQuindara - 03 Aug 2011

ficafic/ficfica Applications

edit

Description

These applications convert navigation message data between variations of the FIC format, a format for GPS observations established by ARL:UT. ficacheck works with ASCII FIC files, and ficcheck works with binary FIC files.

Usage

ficafic <input fica file> <output fic file name>
ficfica <input fic file> <output fica file name>

Examples

Binary FIC File

0000000
*
0000020                                   B   L   K       m  \0  \0  \0
0000030  \0  \0  \0  \0      \0  \0  \0  \0  \0  \0  \0   f 005  \0  \0
0000040 022  \0  \0  \0   >   f 301   " 260   i   {   !   f  \0   d 026
0000050 335 344   8  \t 002   b   C 035 205   7   4 027 241 372 210 006
0000060 006   }   Y   / 301 374   ?  \0   \   S 021   8   >   f 301   "
 . . .

ASCII FIC File

BLK    109    0   32    0
        1382          18   583099966   561736112   375652454   154723549
   490955266   389298053   109640353   794393862     4193473   940659548
   583099966   561744492   792779231   218793822   800301952    12009725
   793943984    14182503    56922219   427630416   583099966   561753060
  1073203199   309077037     1329639    15188054   182084772   733918588
  1072216082   792738524
BLK      9   60    0    0
 .13900000000000D+03 .35800000000000D+03 .41142600000000D+06 .10000000000000D+01
 .10000000000000D+01 .13820000000000D+04 .10000000000000D+01 .00000000000000D+00
 .00000000000000D+00 .91136000000000D+06 .00000000000000D+00-.10244548320770D-07
 .41760000000000D+06 .00000000000000D+00-.14779288903810D-11-.24207541719079D-03
 .00000000000000D+00 .00000000000000D+00 .00000000000000D+00 .18000000000000D+02
 . . .

-- NicoleQuindara - 02 Aug 2011

findMoreThan12 Application

edit

Description

This application finds when there are simultaneously more than 12 SVs above a given elevation.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
-e --eph-file=<arg> Ephemeris source file(s). Can be RINEX nav, SP3, or FIC.
-p --position=<arg> Antenna position in ECEF (x,y,z) coordinates. Format as a string: "X Y Z".
-m --min-elev=<NUM> Give an integer for the elevation (degrees) above which you want to find more than 12 SVs at a given time.

Optional Arguments:

Short Arg. Long Arg. Description
-h --help Print help usage.
-v --verbose- Increase verbosity.

-- NicoleQuindara - 03 Aug 2011

IonoBias Application

edit

Description

This application will open and read several preprocessed RINEX obs files (containing obs types, EL, LA, LO, SR, or SS) and use the data to estimate satellite and receiver biases and to compute a simple ionospheric model using least squares and the slant TEC values.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
  --input Input RINEX observation file name(s).

Optional Arguments:

Short Arg. Long Arg. Description
-f   File containing more options.
  --XSat Exclude this satellite (<sat> may be <system> only).
-v --verbose Print extended output info.
-d --debug Increase debug level.
-h --help Print syntax and quit.
Ephemeris Input
  --navdir Path of navigation file(s).
  --nav RINEX navigation or SP3 file(s).
Output
  --datafile Data (AT) file name, for output and/or input.
  --log Output log filename.
  --biasout Output satellite+receiver biases file name.
Time Limits
  --BeginTime Start time, arg is of the form YYYY,MM,DD,HH,Min,Sec.
  --BeginGPSTime Start time, arg is of the form GPSweek, GPSsow.
  --EndTime End time, arg is of the form YYYY,MM,DD,HH,Min,Sec.
  --EndGPSTime End time, arg is of the form GPSweek, GPSsow.
Processing
  --NoEstimation Do NOT perform the estimation (default=false).
  --NoPreprocess Skip preprocesing; read (existing) AT file (default=false).
  --NoSatBiases Compute receiver biases ONLY, not RX+sat biases (default=false).
  --Model Ionospheric model type is linear, quadratic, or cubic.
  --MinPoints Minimum points per satellite required.
  --MinTimeSpan Minimum timespace per satellite required (minutes).
  --MinElevation Minimum elevation angle (degrees).
  --MinLatitude Minimum latitude (degrees).
  --MaxLatitude Maximum latitude (degrees).
  --MinLongitude Minimum longitude (degrees).
  --MaxLongitude Maximum longitude (degrees).
  --TimeSector Time sector (day--night--both).
  --TerminOffset Terminator offset (minutes).
  --IonoHeight Ionosphere height (km).

Examples

> IonoBias --inputdir data_set --navdir data_set --input s081213a.99o --input s081214a.99o
--input s081215a.99o --nav s081213a.99n --nav s081214a.99n --nav s081215a.99n --datafile output}
IonoBias, built on the GPSTK ToolKit, Ver 1.0 6/25/04, Run 2006/08/17 09:50:59
IonoBias output directed to log file IonoBias.log
IonoBias timing: 6.210 seconds.
\end{lstlisting}

\begin{verbatim}
Output File Snippet

    3     3 Number (max, good) stations in this file
010101101100001111110111011101110
010101101100001111110111011101110
010100101100001111110111011101110
Npt  9737 Sta 85408 LLH    30.2160   262.2746   163.4226
1021      0.0   0.00000 -463513.64930 0.32    0.000      1  1   1
1021      0.0   0.00000 -463513.64930 0.32    0.000      1 14   1
1021      0.0   0.00000 -463513.64930 0.32    0.000      1 15   1
1021      0.0   0.00000 -463513.64930 0.32    0.000      1 21   1
1021      0.0   0.00000 -463513.64930 0.32    0.000      1 22   1
1021      0.0   0.00000 -463513.64930 0.32    0.000      1 25   1
1021      0.0   0.00000 -463513.64930 0.32    0.000      1 29   1
1021      0.0   0.00000 -463513.64930 0.32    0.000      1 30   1
1021     30.0   0.00000 -463513.52430 0.32    0.000      1  1   1
1021     30.0   0.00000 -463513.52430 0.32    0.000      1 14   1

Notes

Input can be either on the command line or put in a file and the input using the -f<file> option. The file is formatted just as if it were the command line.

-- NicoleQuindara - 03 Aug 2011

mdp2fic Converter

edit

Description

This application converts a variety of GPS related observations from the MDP format to FIC format. MDP is a format for network receiver interfaces derived by ARL:UT that can be used to serve observation over networks.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
-i --mdp-input=<arg> Filename to read MDP data from. The filename of '-' means to use stdin.
-n --nav=<arg> Filename to which FIC nav data will be written.

Optional Arguments:

Short Arg. Long Arg. Description
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
-l --log=<arg> Filename for (optional) output log file.

-- NicoleQuindara - 03 Aug 2011

mdp2rinex Converter

edit

Description

This application convert a variety of GPS related observations from the MDP format to RINEX format.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
-i --mdp-input=<arg> Filename to read MDP data from. The filename of '-' means to use stdin.
-n --nav=<arg> Filename to which FIC nav data will be written.

Optional Arguments:

Short Arg. Long Arg. Description
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
-n --nav=<arg> Filename to write RINEX nav data.
-p --pos=<pos> Antenna position to write into observation file header. Format as strong: "X Y" Z".
-t --thinning=<arg> A thinning factor for the data, specified in seconds between points.
-c --l2c Enable output of L2C data in C2.
-a --any-nav-source Accept subframes from any code/carrier.

Examples:

mdp2rinex -i mdp183.06 -o rin183.06o -n rin183.06n  -t 60

-- NicoleQuindara - 03 Aug 2011

mdptool Data Editor

edit

Description

This application performs various functions on a stream of MDP data.

Command Summary

Optional Arguments:
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
-i --input=<arg> Where to get the MDP data from. The default is to use stdin. If the file name begins with "tcp:" the remainder is assumed to be a hostname [:port] and the source is taken from a tcp socket at this address. If the port number is not specified a default of 8910 is used.
  --output=<arg> Where to send the output. The default is stdout.
-p --pvt Enable pvt output.
-o --obs Enable obs output.
-n --nav Enable nav output.
-t --test Enable self-test output.
-x --hex Dump all messages in hex.
-b --bad Try to process bad messages also.
-a --almanac Build and process almanacs. Only applies to the nav style.
-e --ephemeris Build and process engineering ephemerides. Only applies to the nav style.

Notes

In the summary mode, the default is to only summarize the observation data above 10 degrees. Increasing the verbosity level will also summarize the data below 10 degrees.

-- NicoleQuindara - 03 Aug 2011

mergeFic Merge Editor

edit

Description

This application merges multiple FIC files into a single FIC file.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
-i --input=<arg> An input RINEX observation file, can be repeated as many times as needed.
-o --output=<arg> Name for the merged output RINEX observation file. Any existing file with that name will be overwritten.

Optional Arguments:

Short Arg. Long Arg. Description
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.

Usage

> mergeFIC -i fic1 -i fic2 -o ficm
-- NicoleQuindara - 04 Aug 2011

mergeRinObs/ mergeRinNav/ mergeRinMet Merge Editors

edit

Description

These applications merge multiple RINEX observation, navigation, or meteorological data files into a single coherent RINEX obs/nav/met file, respectively.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
-i --input=<arg> An input RINEX observation file. Can be repeated as many times as needed.
-o --output=<arg> Name for the merged output RINEX observation file. Any existing file with that name will be overwritten.

Optional Arguments:

Short Arg. Long Arg. Description
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.

mergeRinNav and mergeRinMet have the same usage.

Usage

> mergeRinObs -i arl280.06o -i arl2810.06o -o arl280-10.06o

> mergeRinNav -i arl280.06n -i arl2810.06n -o arl280-10.06n

> mergeRinMet -i arl280.06m -i arl2810.06m -o arl280-10.06m

-- NicoleQuindara - 04 Aug 2011

navdmp Data Collector

edit

Description

This application prints the contents of a FIC or RINEX navigation file into a human readable file and allows filtering of the data.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
-i --input=<arg> Increase debug level.
-o --output=<arg> Increase verbosity.

Optional Arguments:

Short Arg. Long Arg. Description
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
-a --all-records Unless otherwise specified, use default values for record filtration.
-t --time=<TIME> Start time (of data) for processing.
-e --end-time=<TIME> End time (of data) for processing.
-p --prn=<NUM> PRN(s) to include.
-b --block=<NUM> FIC block number(s) to process ((9)109 (Engineering ephemerides, (62)162 (engineering) almanacs).
-r --RINEX Assume input file is a RINEX navigation message file.

Examples

> navdmp -i data_set/s081213a.99n -o summary --RINEX

Current filtering options:
        Start time:     01/06/1980 00:00:00
        End time:       01/01/4713 00:00:00
        PRNs:           using all PRNs

Choose an option by number then push enter:
        1) Change the start time
        2) Change the end time
        3) Select specific PRNs
        5) Process the file
use ctrl-c to exit
? 5

processing...

Summary File Snippet

****************************************************************************
Broadcast Ephemeris (Engineering Units)

PRN : 14

              Week(10bt)     SOW     DOW   UTD     SOD   MM/DD/YYYY   HH:MM:SS
Clock Epoch:  1021(1021)    7200   Sun-0   213    7200   08/01/1999   02:00:00
Eph Epoch:    1021(1021)    7200   Sun-0   213    7200   08/01/1999   02:00:00
Transmit Week:1021
Fit interval flag :  0

          SUBFRAME OVERHEAD

               SOW    DOW:HH:MM:SS     IOD    ALERT   A-S
SF1 HOW:         6  Sun-0:00:00:06   0x023      0     off
SF2 HOW:         6  Sun-0:00:00:06    0x23      0     off
SF3 HOW:         6  Sun-0:00:00:06    0x23      0     off

           CLOCK

Bias T0:       2.82567926E-05 sec
Drift:         1.02318154E-12 sec/sec
Drift rate:    0.00000000E+00 sec/(sec**2)
Group delay:  -2.32830644E-09 sec

           ORBIT PARAMETERS

Semi-major axis:         5.15359685E+03 m**.5
Motion correction:       4.44732811E-09 rad/sec
Eccentricity:            8.10711295E-04
Arg of perigee:          2.16661714E+00 rad
Mean anomaly at epoch:   1.75307843E-01 rad
Right ascension:         2.02857661E+00 rad     -8.31963226E-09 rad/sec
Inclination:             9.77089255E-01 rad      2.20723480E-10 rad/sec

           HARMONIC CORRECTIONS

Radial        Sine:   1.31875000E+01 m    Cosine:   3.31593750E+02 m
Inclination   Sine:   5.77419996E-08 rad  Cosine:  -1.86264515E-08 rad
In-track      Sine:   2.74367630E-06 rad  Cosine:   6.27711415E-07 rad

           SV STATUS

Health bits:   0x00      URA index:    7
Code on L2:    P only      L2 P Nav data:          on

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

-- NicoleQuindara - 04 Aug 2011

NavMerge Merge Tool

edit

Description

This application merges RINEX navigation files into a single file.

Command Summary

NavMerge [options]

Optional Arguments:

Short Arg. Long Arg. Description
-o   Write all data to an output RINEX navigation file. If omitted, a data summary is written to the screen.
-tb   Output only if epoch is within 4 hours of the interval (tb,te).
-te   If te or tb is missing, they are made equal. Time tags have the form year, month, day, HH, min, sec or GPSweek,sow.

Usage

NavMerge [options] <RINEX nav file> <RINEX nav file>

Examples

> NavMerge -o s081213-214.99n s081213a.99n s081214a.99n

Output file name is 
Exception: text 0:Unexpected EOF
text 1:In record 0
text 2:In file s081213-214.99n
text 3:Near file line 0
location 0:src/FFTextStream.hpp:244
location 1:src/FFStream.cpp:159
location 2:src/FFStream.hpp:208
location 3:src/FFStream.hpp:208

Read    0 ephemerides from file s081213-214.99n
Read  200 ephemerides from file s081213a.99n
Read  197 ephemerides from file s081214a.99n
Read  397 total ephemerides.

Notes

NavMerge corrects data for output when the GPS full week number is inconsistent with the epoch time.

-- NicoleQuindara - 04 Aug 2011

navsum Application

edit

Description

This application lists the block contents of a FIC file and prints summary count information.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
-i --input=<arg> Name of an input file.
-o --output=<arg> Name of an output file.

Optional Arguments:

Short Arg. Long Arg. Description
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
-a --all-records Unless otherwise specified, use default values for record filtration.
-t --time=<TIME> Short time (of data) for processing.
-e --end-time=<TIME> End time (of data) for processing.
-p --prn=<NUM> PRN(s) to include.
-b --block=<NUM> FIC block number(s) to process ((9)109 (Engineering) ephemerides, (62)162 (engineering) almanacs).
-f --use-alternate-format Use alternate output format.
application

Examples

> navsum -i s081213a.99n -o summary --RINEX

Current filtering options:
        Start time:     01/06/1980 00:00:00
        End time:       01/01/4713 00:00:00
        PRNs:           using all PRNs

Choose an option by number then push enter:
        1) Change the start time
        2) Change the end time
        3) Select specific PRNs
        5) Process the file
use ctrl-c to exit
? 5

processing...
\end{lstlisting}
\begin{verbatim}
Summary of data processed
Block Type Summary
Type   # Blocks Found
   9              0
 109              0
  62              0
 162              0

Ephemeris Blocks by PRN
PRN Block      Num
 01     9          0
 01   109          0
 02     9          0
 02   109          0
 03     9          0
 03   109          0
 04     9          0
 04   109          0
 05     9          0
 . . .
\end{verbatim}

-- NicoleQuindara - 04 Aug 2011

novaRinex Converter

edit

Description

This application will open and read a binary Novatel file (OEM2 and OEM4 receivers are supported), and convert the data to RINEX format observation and navigation files. The RINEX header is filled using user input (see below), and optional records are filled.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
  --input Novatel binary input file.

Optional Arguments:

Short Arg. Long Arg. Description
-f   Name of file containing more options ('#' to EOL : comment).
  --dir Directory in which to find input file (default ./).
  --obs RINEX observation output file (default RnovaRINEX.obs).
  --nav RINEX navigation output file (RnovaRINEX.nav).
Output RINEX Header Fields
  --noHDopt If present, do not fill optional records in the output RINEX header.
  --HDp Set output RINEX header 'program' field ('novaRinex v2.1 9/07').
  --HDr Set output RINEX header 'run by' field ('ARL:UT/GPSTk').
  --HDo <obser> Set output RINEX header 'observer' field.
  --HDa <agency> Set output RINEX header 'agency' field.
  --HDm <marker> Set output RINEX header 'marker' field.
  --HDn <number> Set output RINEX header 'number' field.
  --HDrn <number> Set output RINEX header 'Rx number' field.
  --HDrt <type> Set output RINEX header 'Rx version' field (Novatel).
  --HDrv <vers> Set output RINEX header 'Rx version' field (OEM2/4).
  --HDan <number> Set output RINEX header 'antenna number' field.
  --HDat <type> Set output RINEX header 'antenna type' field.
  --HDc <comment:> Add comment to output RINEX header (>1 allowed).
Output RINEX Observation Data
  --obstype <OT> Output this RINEX (standard) obs type. <OT> is one of L1, L2, C1, P1, P2, D1, D2, S1, or S2; repeat for each type. Default is all standard types that have data.
Output Configuration
  --begin <arg> Start time, <arg> is of the form YYYY,MM,DD,HH,Min,Sec.
  --beginGPS <arg> Start time, <arg> is of the form GPSweek, GPSsow.
  --end <arg> End time, <arg> is of the form YYYY,MM,DD,HH,Min,Sec.
  --endGPS <arg> End time, <arg> is of the form GPSweek,GPSsow.
  --week <week> GPS Week number of this data. This is for OEM2; this command serves two functions: 1) resolving the ambiguity in the 10-bit week (default uses --begin, --end, or the current system time), and 2) ensuring that ephemeris records that precede any observation records are not lost.
  --debias Remove an initial bias from the phase.
-h --help Print this message and quit.
  --verbose Print more information.
-d --debug Print extended output information.

Notes

Input is on the command line, or of the same format in a file (-f <file>).

-- NicoleQuindara - 04 Aug 2011

ORD Tools

Overview

There is a suite of tools under /dev/apps/reszilla designed to compute observed range deviations (ORDs). The analysis is completed by successively using a combination of the smaller applications. The output of each of the programs is directly processed by another one. This format is called the ORD file, which is a table with time in the left-most column and various other values to the right. All lines that begin with a '#' sign are considered comments and will be ignored. An example of ORD file lines for an epoch:

# Time              Type PRN  Elev         ORD(m) wonky
2007  30 00:01:30.0    0   3  14.8       -4.66283     0
2007  30 00:01:30.0    0   6  15.0       -0.07912     0
2007  30 00:01:30.0    0   7  20.0       -2.51521     0
2007  30 00:01:30.0    0   9  31.8        0.52311     0
2007  30 00:01:30.0    0  14   8.3       -0.69202     0
2007  30 00:01:30.0    0  15  64.2     -217.71875     8
2007  30 00:01:30.0    0  18  61.0        0.41242     0
2007  30 00:01:30.0    0  21  88.6       -0.31408     0
2007  30 00:01:30.0    0  22  30.5       -0.66879     0
2007  30 00:01:30.0    0  24  19.2        2.59300     0
2007  30 00:01:30.0    0  26  36.7        0.35387     0
2007  30 00:01:30.0    0  29  25.3       -0.22743     0
2007  30 00:01:30.0    1                  0.33466     0
2007  30 00:01:30.0   50             115134.44377     0

Currently there are three types of lines that can be in a ord file:

  • type 0: Observed range deviation. One line for each SV.
  • type 1: Receiver clock offset deviation. One line for each epoch.
  • type 50: Receiver clock offset estimate based upon a single epoch of data

Unless the a program is about to exit with an error, all output to stdout/cout is of the table form listed above. If a program is about to terminate with an error (i.e. exit(-1)) any text may be written to stdout. Non-fatal exceptions and such that need to be sent to the user need to be written to stderr(cerr). Often it is desirable to have various status/debugging type of messages to be output during the program executation. If these lines are to be kept in order of the ord file output, they are also be written to stdout. This may be done by proceeding them with a '#' to make them comment lines. See OrdApp.cpp for an example of how this is done during program initialization.

Output that is controlled by the verboseLevel (-v) option follows the rules above. Output that is controlled by the debugLevel (-d) command line option doesn't. That output always goes stdout and does not follow the ordfile format.

All programs accept the following options:

-h, --help Standard usage message
-v, --verbosity Set the verbosity level
-i <fn>, --input=<fn> Where to read the ord file from. The default is stdin. This is not needed/supported on ordGen since it doesn't read ord files.
-r <fn>, --output=<fn> Where to write the output, The default is stdout.
-t fmt, --time-format=fmt Daytime format specifier used for the timestamps in the raw output. The default is "%Y %3j %02H:%02M:%04.1f".

ordGen

This program will take station position, gps observations, wx observations, sv ephemeris and computes the difference between the estimated sv range and observed SV range. Solutions are output as the type 0 lines. No receiver clock adjustment is made, that is a job for ordClock.

Options:

Required arguments
-o <fn>, --obs=<fn> Observation data file name. If this option is specified more than once the contents of all files will be used.
-e, --ephemeris=ARG Ephemeris data file name (either broadcast in RINEX nav, broadcast in FIC, or precise in SP3). This option may be specified more than once and the contents of all files will be used.
Optional arguments:
-c fn, --msc=ARG Station coordinate file.
-p <x,y,z>, --position=<x,y,z> Antenna position in meters, ecef.
-w, --weather=ARG Weather data file name (RINEX met format only).
--omode=ARG ORD mode: p1p2, c1p2, c1, p1, c2, p2, smo, and smart. The default is smart.
-m, --msid=NUM Station to process data for. Used to select a station position from the msc file or data from a SMODF file.

The ords for each SV (each type 0 line) will have a wart flag in the last field, labeled "wonky" in the ord file header. The flag is created via the bitwise or (|=) assignements defined in OrdEngine.cpp. A summary of the conditions that lead to a wart flag are listed below.

Condition Operation
Pseudorange is less than 1e6 meters
ord.wonky |= 0x0001;
Low signal strength
ord.wonky |= 0x0002;
Unless using a mixed frequency, C/A pseudorange is less than 1e6 meters
ord.wonky |= 0x0004;
Unless keeping data from unhealthy SVs, if there is a valid 6-bit SV health bitfield from epehemeris, subframe 1 and it indicates an SV was unhealthy
ord.wonky |= 0x0008;
Tropospheric offset is greater than 100 meters
ord.wonky |= 0x0010;
SV elevation is below 0.05 degrees
ord.wonky |= 0x0020;

TBD:

  1. Define how the smart mode works

ordEdit

This program removes lines from an ord file based upon various criteria.

Options:

Optional arguments:
-k, --clock-est Remove ords that do not have corresponding clock estimates.
-c, --no-clock Remove all clock offset estimate warts. Give this option twice to remove all clock data.
-m, --elev=NUM Remove data for SVs below a given elevation mask.
-p, --PRN=NUM Add/Remove data from given PRN. Repeat option for multiple PRNs. Negative numbers remove, Postive numbers all, Zero removes all.
-w, --warts=NUM Include/Exclude warts from the indicated PRN. Repeat option for multiple PRNs. Negative numbers exclude, positive numbers include, zero excludes warts from all PRNs. The default is to include all warts.
-e, --be-file=ARG Remove data for unhealthy SVs by providing broadcast ephemeris source: RINEX nav or FIC file.
--start=ARG Throw out data before this time. Format as string: "MO/DD/YYYY HH:MM:SS"
--end=ARG Throw out data after this time. Format as string: "MO/DD/YYYY HH:MM:SS"
-s, --size=ARG Remove clock residuals with absolute values greater than this size (meters).

ordClock

This program takes as input an ord file with type 0 records and computes a clock offset estimate based upon the ords therein. It then outputs the type 0 lines along with the clock offset estimate for each epoch (type 50 lines).

Options:

-w, --use-warts Use warts in the clock solution. The default is to not use warts.
-e, --estimate-only Only compute the receiver clock bias. Don't remove this bias from the ords. The default is to both estimate the bias and remove the it from the ords.
-c, --clock-source=ARG An ord file to read the receiver clock offsets from.

TBD:

  1. Defnine how ordClock sets epochs as wonky.

ordLinEst

Program for computing a linear clock estimate. This app produces one type 1 lines (receiver clock offset deviation) for each epoch. Additionally, a few lines are printed that describe the linear estimate calculated. An example of what would be printed is shown below. Note that the descriptive lines start with a "#" like any other comment. The line containing the data starts with >c.

#  t0                   t1                   t0 offset(m)  t1 offset(m)  slope(m/d)  abdev(m)
#  -------------------  -------------------  ------------  ------------  ----------  --------
>c 2007  30 00:00:30.0  2007  30 23:59:30.0   115134.109   115134.452        0.344      0.337

Options:

-m, --max-rate=ARG Rate used to detect a clock jump. default is 10,000 m/day.

ordStats

This generates statistics for the ORD data. Three sections are produced in the output. The first is a summary of wonky epochs and ords found. An example is included below. Note that the descriptive lines start with a "#" like any other comment. The line containing the data starts with >w.

# wonky epochs   total   % wonky epochs   # wonky ords   total ords   % wonky ords
# ------------   -----   --------------   ------------   ----------   ------------
>w        0       2879          0.00           576         29448          1.96

The second section contains stats for the ORDs, broken up by elevation bins. An example is included below. Again, note that the descriptive lines start with a "#" like any other comment. The lines containing the statistical data start with >r.

#  elev   stddev      mean      # obs   # bad   max    strip
#  ----   ------      ----      -----   -----  -----   -----
>r  0-10   6.04193    -0.892     4505     145  245.80  15006505.96
>r 10-20   1.83456    -0.104     5681      46   22.33  1928587.67
>r 20-60   0.78098    -0.035    13882     163    8.14  2247433.87
>r 60-90   0.64692     0.074     4628     209    3.16  4268100.13
>r 10-90   1.10425    -0.031    24311     418   22.33  2700863.93

The third section contains any clock offsets greater than 1 millisecond that were found. An example is included below. Again, note that the descriptive lines start with a "#" like any other comment. The lines containing the statistical data start with >b.

#  Time                         Offsets > 1ms
# ------                        -------------
>b  12/26/2005 08:30:00         300418.16854
>b  12/26/2005 08:56:00         300418.11752
>b  12/26/2005 08:56:30         300418.24771

Options:

-b, --elev-bin=ARG A range of elevations, used in computing the statistical summaries. Repeat to specify multiple bins. The default is "-b 0-10 -b 10-20 -b 20-60 -b 10-90".
-o, --statsFile=ARG Filename for output of stats only. Stats will still be included at the end of the ord file.
-s, --sigma=NUM Multiplier for sigma stripping used in statistical computations. The default value is 6.
-w, --wonky Use wonky data in stats computation. The default is to not use such data.

If an output file is specified, lines will not be written with preceding # or > symbols.

ordPlot

This tool plots the ORD results. It is written in python and uses matplotlib for generating the graphs. A sample plot is show below. Click on the thumbnail to see a larger image.

Options:

-i <fn>, --input=<fn> Input data file, defaults to stdin. Defaults to <stdin>
-t<text>, --title=<text> Specify a title for the plot. Defaults to the name of the input stream.
-l, --legend Include a legend.
-o, --ords-only Only plot the ords (types 0 & 1).
-c, --clocks-only Only plot the clocks.
-s SAVEFIG, --save-figure=SAVEFIG Save the figure to the indicated file
-y YRANGE, --y-range=YRANGE Fix the y range on the ords to be +- this value.
--start-time=TSTART Start time. Format as "YYYY DOY HH:MM:SS.S" (Note the trailing decimal place).
--end-time=TEND End time. Format as "YYYY DOY HH:MM:SS.S" (Note the trailing decimal place).
-w, --warts Increase the importants of warts on the plot. Zero (the default) means don't even plot them. One means plot them but don't autoscale to show them all (just show all the ords). Two means autoscale to show all the warts.

TBD:

  1. Option for plotting symbol size. This is useful if you are going to zoom in on an area - sometimes the default point size looks really tiny once you are looking a less dense area, or when you are printing and want larger symbols for visibility.

Examples

Example 1 - Basic Usage

This example assumes that the user wants to:

  • Create a plot SamplePlot.png with residuals and clock offsets
  • Provide observation data in a RINEX obs file sampleObs001.07o
  • Use precise ephemeris when calculating ORDs
  • Edit out data from unhealthy SVs using a RINEX nav file (broadcast ephemeris)
  • Mask data from SVs below 10 degrees
  • Look at statistics for the resulting ords

This could be done by stringing together the apps like so:

shell:] ordGen -o sampleObs001.07o -e apc14080 -e apc14081 -e apc14082 | ordEdit -e sampleNav001.07n -m 10 | ordClock | ordLinEst | 
          ordStats -o sampleStatsFile.txt | ordPlot -s SamplePlot.png

Notes:

  1. Be sure and provide precise ephemeris that spans some before and after your observation data time period. Hence the 3 apc files in the command above.
  2. The position in the RINEX observation file will be assumed as the antenna position.

Example 2 - Changing Default Options

This example builds on Example 1 by assuming that the user wants to:

  • Use obs data from station 12121 in a smooth file
  • Raise the rate used to detect a clock jump from the default value of 10,000 m/day to 12,000 m/day
  • Remove ords that do not have corresponding clock estimates
  • Discard all data from PRN 15
  • Ignore data before 02:00
  • Produce stats based on elevation bins of 0-15, 10-40, 40-70,70-90, 15-90
  • Use a sigma value of 5 in the data stripping performed by ordStats
  • Set the title on the plot to "Greatest Plot Ever"
  • Only plot the ords
  • Set the y range to +/- 15 meters

This could be done by stringing together the apps like so:

shell:] ordGen -o sampleSmooth001.07o -e apc14080 -e apc14081 -e apc14082 -m 12121 -c sampleCoordsFile.txt | ordEdit 
       -e sampleNav001.07n -m 10 -p -15 | ordClock | ordLinEst -m 12000 | ordEdit -k --start="01/01/2007 02:00:00" | 
       ordStats -o sampleStatsFile.txt -b 0-15 -b 10-40 -b 40-70 -b 40-70 -b 70-90 -b 15-90 -s 5| ordPlot -y 15 -t 
       "Greatest Plot Ever"  -o -s SamplePlot.png

The source files

  • OrdEngine.?pp - A function object that is used to handling computing the ords.
  • OrdApp.?pp - This is a class that all ord applications should inherit from. It includes initializing of the input and output streams, and reading and writing of ord files.
  • RobustLinearEstimator.?pp - Computes a robust linear estimate of a time-ordered series.
  • ObsReader.?pp - A class that reads 'all' types of observation data and generates ObsEpochs from them.
  • EphReader.?pp - A class that reads 'all' types of observation data and generates an EphemerisStore object containing the data from all files read.
  • MetReader.?pp - A class that reads Rinex met files and generates a WxObsMap object that contains the data from all files read.

poscvt Transform Tool

edit

Description

This application allows the user to convert among different coordinate systems on the command line. Coordinate systems handled include Cartesian, geocentric, and geodetic.

Command Summary

Optional Arguments:
Short Arg. Long Arg. Description
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
  --ecef=<POSITION> ECEF "X Y Z" in meters.
  --geodetic=<POSITION> Geodetic "lat lon alt" in deg, deg, meters.
  --geocentric=<POSITION> Geocentric "lat lon radius" in deg, deg, meters.
  --spherical=<POSITION> Spherical "theta, pi, radius" in deg, deg, meters.
-l --list-formats List the available format codes for use by the input and output format options.
-F --output-format=<arg> Write the position with the given format.

Examples

> poscvt --ecef="4345070.59253 45619878.26297 803.598856837"

    ECEF (x,y,z) in meters              4345070.5925 45619878.2630 803.5989
    Geodetic (llh) in deg, deg, m       0.00100566 84.55926933 39448197.4795
    Geocentric (llr) in deg, deg, m     0.00100472 84.55926933 45826334.4795
    Spherical (tpr) in deg, deg, m      89.99899528 84.55926933 45826334.4795

Notes

If no options are given, poscvt assumes XYZ 0 0 0.

-- NicoleQuindara - 04 Aug 2011

PRSolve Positioning Application

edit

Description

This application reads one or more RINEX observation files, plus one or more navigation (ephemeris) files, and computes an autonomous pseudorange position solution, using a RAIM-like algorithm to eliminate outliers. Output is to the log file, and also optionally to a RINEX observation file with the position solutions in auxiliary header blocks.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
-o --obs Input RINEX observation file(s).
-n --nav Input navigation (ephemeris) file(s) (RINEX or SP3).

Optional Arguments:

Short Arg. Long Arg. Description
Input
-f   File containing more options.
  --obsdir Directory of input observation file(s).
  --navdir Directory of input navigation file(s).
  --metdir Directory of input meteorological file(s).
-m --met Input RINEX meteorological file(s).
  --decimate Decimate datat to time interval dt.
  --BeginTime Start time: arg is 'GPSweek,sow' OR 'YYYY,MM,DD,HH,Min,Sec'.
  --EndTime End time: arg is 'GPSweek,sow' OR 'YYYY,MM,DD,HH,Min,Sec'.
  --useCA Use C/A code pseudorange if P1 is not available.
  --forceCA Use C/A code pseudorange regardless of P1 availability.
Configuration
  --Freq Frequency to process: 1, 2, or 3 for L1, L2, of iono-free combination.
  --MinElev Minimum elevation angle in degrees (only if --PosXYZ).
  --exSat Exclude this satellite.
  --Trop Trop model, one of ZR, BL, SA, NB, NL, GG, GGH (gpstk:TropModel), with optional weather T(c), P(mb), RH.
PRSolution Configuration
  --RMSlimit Upper limit on RMS post-fit residuals (m) for a good solution.
  --Slopelimit Upper limit on RAIM slope for a good solution.
  --Algebra Use algebraic algorithm (otherwise linearized LS).
  --DistanceCriterion Use distance from a priori as convergence criterion (else RMS).
  --ReturnAtOnce Return as soon as a good solution is found.
  --NReject Maximum number of satellites to reject.
  --NIter Maximum iteration count (linearized LS algorithm).
  --Conv Minimum convergence criterion (LLS algorithm).
Output
  --Log Output log file name (prs.log).
  --PosXYZ <X,Y,Z> Known position (ECEF, m) used to compute output residuals.
  --APSout Output autonomous pseudorange solution (APS - no RAIM).
  --TimeFormat Output time format, i.e. CivilTime, default: %4F %10.3g.
RINEX Output
  --outRinex Output RINEX observation file name.
  --RunBy Output RINEX header 'Run By' string.
  --Observer Output RINEX header 'Observer' string.
  --Agency Output RINEX header 'Agency' string.
  --Marker Output RINEX header 'Marker' string.
  --Number Output RINEX header 'Number' string.
Help
  --verbose Print extended output.
  --debug Print very extended output.
  --helpRetCodes Print return codes (implies-help).
-h --help Print syntax and quit.

Examples

> PRSolve -o arl2800.06o -n arl2800.06n

PRSolve, part of the GPS ToolKit, Ver 2.3 11/09, Run 2011/07/22 11:39:15
Opened log file prs.log

Weighted average RAIM solution for file: arl2800.06o
 (2880 total epochs, with 2880 good, 0 rejected.)
    918129.266960  -4346070.850055   4561977.615781
Covariance of RAIM solution for file: arl2800.06o
         0.000150        -0.000061         0.000058
        -0.000061         0.000427        -0.000248
         0.000058        -0.000248         0.000493

Notes

In the log file, results appear one epoch per line with the format: TAG Nrej week sow Nsat X Y Z T RMS slope nit conv sat sat .. (code) [N]V

Tag
RPF Final RAIM ECEF XYZ solution.
RPR Final RAIM ECEF XYZ solution residuals (only if --PosXYZ given).
RNE Final RAIM North-East-Up solution residuals (only if ---PosXYZ given).
APS Autonomous ECEF XYZ solution (only if --APSout given).
APR Autonomous ECEF XYZ solution residuals (only if both --APS & --POS).
ANE Autonomous North-East-Up solution residuals (only if --APS & --POS).

Nrej = number of rejected sats
(week,sow) = GPS time tag
Nsat = # sats used
XYZT = position+time solution(or residuals)
RMS = RMS residual of fit
slope = RAIM slope
nit = # of iterations
conv = convergence factor
'sat sat ...' lists all sat. PRNs (- : rejected)
code = return value from PRSolution::RAIMCompute()
|NV means NOT valid

-- NicoleQuindara - 04 Aug 2011

ResCor Data Editor

edit

Description

The application will open and read a single RINEX observation file, apply editing commands using the RinexEditor package, compute any of several residuals and corrections and register extended RINEX observation types for them, and then write the edited data, along with the new extended observation types, to an output RINEX observation file.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
-IF   Input RINEX observation file.
-OF   Name of output RINEX observation file.

Optional Arguments:

Configuration
Short Arg. Long Arg. Description
-f<file>   File containing more options.
  -nav<file> RINEX navigation or SP3 file(s).
Reference Position
  -RxLLH <l,l,h> Receiver position (static) in geodetic lat, lon, alt (deg,deg,m).
  -RxXYZ <x,y,z> Receiver position (static) in ECEF coordinates (m).
  -Rxhere Reference site positions (time) from this file (i.e. -IF<RINEXFile>).
  -RXRinex <fn> Reference site positions(time) from another RINEX file named <fn>.
  -RxFlat <fn> Reference site positions and times given in a flat file named <fn>.
  -Rxhelp Enter Rxhelp for a description of the -RxFlat file format.
  -RAIM Reference site positions computed via RAIM (requires P1,P2,EP).
The following two arguments apply if -RAIM is found.
  --noRAIMedit Do not edit data based on RAIM solution.
  --RAIMhead Output average RAIM solution to RINEX header (if -HDf also appears).
  --noRefout Do not output reference solution to RINEX.
  --MinElev Minimum satellite elevation in degrees for output.
Residual/Correction Computation
  --debias <OT,l> Debias new output type <OT>: trigger a bias reset with limit <l>.
  --Callow Allow C1 to replace P1 when P1 is not available.
  --Cforce Force C/A code pseudorange C1 to replace P1.
  --IonoHt <ht> Height of ionosphere in km (default 400). This is neded for LA, LO, VR, VP.
  --Tgd Apply the Tgd from BC ephemeris to SR, SP, VR, and VP.
  --SVonly <prn> Process this satellite only.
Output Files
  --Log<file> Output log file name (rc.log).
Help
  --verbose Print extended output.
  --debug Print debugging information.
-h --help Print syntax and quit.

List of Available Extended RINEX Observation Types

OT Description Units Required Input
ER Ephemeris Range meters       EP PS
RI Iono Delay, Range meters     P1    
PI Iono Delay, Phase meters L1 L2      
TR Tropospheric Delay meters       EP PS
RL Relativity Correction meters       EP  
SC SV Clock Bias meters       EP  
EL Elevation Angle degrees       EP PS
AZ Azimuth Angle degrees       EP PS
SR Slant TEC (PR) TECU     P1    
SP Slant TEC (Ph) TECU L1 L2   EP PS
VR Vertical TEC (PR) TECU     P1 EP PS
VP Vertical TEC(Ph) TECU L1 L2   EP PS
LA Lat Iono Intercept degrees       EP PS
LO Lon Iono Intercept degrees       EP PS
P3 TFC(IF) Pseudorange meters     P1    
L3 TFC(IF) Phase meters L1 L2 P1    
P4 Geofree Pseudorange meters     P1    
L4 Geofree Phase meters L1 L2      
P5 WideLane? Pseudorange meters     P1    
L5 WideLane? Phase meters L1 L2      
MP Multipath (=M3) meters L1 L2      
M1 L1 Range minus Phase meters L1   P1    
M2 L2 Range minus Phase meters   L2      
M3 IF Range minus Phase meters L1 L2 P1    
M4 GF Range minus Phase meters L1 L2 P1    
XR Non-dispersive Range meters L1 L2 P1    
X1 Ionospheric Delay L1 L2 P1    
X1 Range Error L1 meters L1 L2 P1    
X2 Range Error L2 meters L1 L2 P1    
SX Satellite ECEF-X meters       EP  
SY Satellite ECEF-Y meters       EP  
SZ Satellite ECEF-Z meters       EP  

-- NicoleQuindara - 04 Aug 2011

rmwcheck/ rnwcheck/ rowcheck Check Tools

edit

Description

These applications read a RINEX observation (rowcheck), navigation (rnwcheck), or meterological (rmwcheck) data file and check it for errors.

Command Summary

Optional Arguments:
Short Arg. Long Arg. Description
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
-l --quit-on-first-error Quit on the first error encountered.
-t --time=<TIME> Time of first record to count (default is beginning of time.)
-e --end-time=<TIME> End of time range to compare (default is end of time.)

Usage

rmwcheck [options] <RINEX met file>
rmwcheck [options] <RINEX nav file>
rowcheck [options] <RINEX obs file>

Examples

> rnwcheck -t "08/01/2006 12:00:00" -e "08/01/2006 15:00:00" s081214a.99n

Checking s081213a.99n
Read 200 records.

Notes

Only the first error in each file is reported. The entire file is always checked regardless of time options.

-- NicoleQuindara - 04 Aug 2011

rmwdiff/ rnwdiff/ rowdiff Comparison Tools

edit

Description

These applications difference RINEX observation, navigation, and meteorological data files.

Command Summary

Optional Arguments:
Short Arg. Long Arg. Description
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
-l --quit-on-first-error Quit on the first error encountered.
-t --time=<TIME> Start of time range to compare (default is beginning of time).
-e --end-time=<TIME> End of time range to compare (default is end of time).

Usage

rmwdiff [options] <RINEX Met file> <RINEX Met file>
rnwdiff [options] <RINEX Nav file> <RINEX Nav file>
rowdiff [options] <RINEX Obs file> <RINEX Obs file>

Notes

Only the first error in each file is reported. The entire file is always checked, regardless of time options.

-- NicoleQuindara - 04 Aug 2011

RinexDump Data Collector

edit

Description

RinexDump is a utility application which converts RINEX format data into a columnar output that is suitable for use in plotting or in a spreadsheet. Data is written one line per SV per epoch, and the RINEX header information is not carried output. The first three columns in the tabular output are:
  • GPS Week
  • GPS Seconds of Week
  • Satellite identifier
After these columns, columns are dependent on the data stored in the RINEX file.

RinexDump output is scrolled to the screen by default. You will need to direct the data to a file if you want to save it.

Command Summary

Optional Arguments:
Short Arg. Long Arg. Description
  -pos Output only positions from aux headers; sat and obs are ignored.
-n --num Make output purely numeric (no header, no system char on sats).
  -format<file> Output times in CommonTime? format (default is %4F %10.3g).
  -file=<file> RINEX observation file; this option may be repeated.
  --obs=<obs> RINEX observation type, found in file header.
  --sat=<sat> RINEX satellite ID (e.g. G31 for GPS PRN 31).
-h --help Print this and quit.

Usage

If no satellites are given, all are output; likewise for observation types. Output begins with header lines (starting with #) identifying input and columns.

RinexDump usage: RinexDump [-n] <rinex obs file> [<satellite(s)> <obstype(s)>] 

The optional argument -n tells RinexDump? its output should be purely numeric.

Examples

> RinexDump algo1580.06o 3 4 5

# Rinexdump file: algo1580.06o Satellites: G03 G04 G05 Observations: ALL
# Week  GPS_sow Sat            L1 L S            L2 L S            C1 L S
1378 259200.000 G03  -3843024.647 0 3  -2994560.443 0 1  23796436.087 0 0
1378 259230.000 G03  -3954052.735 0 3  -3081075.654 0 2  23775308.750 0 0
1378 259260.000 G03  -4064994.465 0 2  -3167523.561 0 3  23754197.617 0 0

 . . .

          P2 L S            P1 L S            S1 L S            S2 L S
23796439.457 0 0  23796436.350 0 0        21.100 0 0        11.000 0 0
23775311.168 0 0  23775308.182 0 0        22.100 0 0        17.800 0 0
23754199.648 0 0  23754196.550 0 0        17.000 0 0        18.600 0 0

 . . .

Notes

MATLAB and Octave can read the purely numeric output.

-- NicoleQuindara - 04 Aug 2011

Rinex3Dump Data Collector

edit

Description

This application reads a RINEX-3 file and dumps the observation data for the given satellite(s) to the standard output.

Command Summary

Optional Arguments:
Short Arg. Long Arg. Description
-f --file<file> Input file is a RINEX observation file. This option may be repeated. Optional, but may be needed in case of ambiguity.
  --format<format> The format of the time output. Default is %4F %10.3g.
-h --help Prints out help and exits.
-n --num Make output purely numeric, i.e. no header, no system char on satellites.
-o --obs<obs> RINEX observation type (e.g. CIC) found in the file header. Optional, but may be needed in case of ambiguity.
-p --pos Only output positions from aux headers, i.e. sat and obs are ignored.
-s --sat=<sat> RINEX satellite ID. Optional, but may be needed in case of ambiguity.
-v --verbose Prints out verbose output.

Usage

Rinex3Dump usage: Rinex3Dump [-n] <rinex obs file> [<satellite(s)> <obstype(s)>] 

The optional argument -n tells Rinex3Dump its output should be purely numeric.

Notes

MATLAB and Octave can read the purely numeric output.

-- NicoleQuindara - 04 Aug 2011

rinexpvt Positioning Application

edit

Description

This application generates a user position based on RINEX observation data with the option of including navigation and meteorological data to aid error correction.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
-o --obs-file=<arg> RINEX observation file.

Optional Arguments:

Short Arg. Long Arg. Description
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
-n --nav-file=<arg> RINEX navigation file. Required for single frequency ionosphere correction.
-p --pe-file=<arg> SP3 Precise Ephemeris File. Repeat this for each input file.
-m --met-file=<arg> RINEX meteorological file.
-t --time-format=<TIME> Alternate time format string.
-e --enu=<arg> Use the following as origin to solve for East/North/Up coordinates, formatted as a string: "X,Y,Z".
-l --elevation-mask=<arg> Elevation mask (degrees).
-g --logfile=<arg> Write logfile to this file.
-r --rate=<arg> Observation interval (default = 30 seconds or RINEX header specification).
-y -yuma=<arg> Yuma almanac file.
-a -sem=<arg> SEM almanac file.
-s --single-frequency Use only C1 (SPS).
-f --dual-frequency use only P1 and P2 (PPS).
-i --no-ionosphere Do NOT correct for ionosphere delay.
-x --no-closest-ephemeris Allow ephemeris use outside of fit interval.
-c --no-carrier-smoothing Do NOT use carrier phase smoothing.
-z --no-glonass Exclude GLONASS satellites from PVT solution.

Examples

> rinexpvt -o arl2800.06o -n arl2800.06n
2006 1 1 09 41 00 918130.968492 -4346073.94224 4561982.02123 333.303358692
2006 1 1 09 41 30 918130.956684 -4346073.91529 4561982.01659 333.317002144
2006 1 1 09 42 00 918130.924146 -4346073.83279 4561982.01338 333.279239604

Notes

Though not stated in the required options lists, either a RINEX navigation file or an SP3 Precise Ephemeris File is needed, using the -n or -p option respectively. When using precise ephemeris, three files must be included: the previous day, the current day and the next day.

Although -z argument appears as optional, in this release, it is always turned on, but implementation will occur in a later release.

-- NicoleQuindara - 04 Aug 2011

RinSum Data Collector

edit

Description

This application reads a RINEX file and summarizes its content.

Command Summary

Optional Arguments:
Short Arg. Long Arg. Description
-i --input Input file name(s).
-f   File containing more options.
-o --output Output file name.
-p --path Path for input file(s).
-R --Replace Replace header with full one.
-s --sort Sort the PRN/observations table on begin time.
-g --gps Print times in the PRN/observations table as GPS time.
  --gaps Print a table of gaps in the data, assuming specified interval dt.
  --start Start time: <time> is 'GPSweek, sow' OR 'YYYY,MM,DD,HH,Min,Sec'.
  --stop Stop time: <time> is 'GPSweek, sow' OR 'YYYY,MM,DD,HH,Min,Sec'.
-b --brief Produce a brief (6-line) summary.
-h --help Print syntax and quit.
-d --debug Print debugging information.

Examples

> RinSum -i data_set/s081213a.99o --EpochBeg 2006,08,1,12,0,0'

+++++++++++++ RinSum summary of Rinex obs file data_set/s081213a.99o +++++++++++++
Rinex header:
---------------------------------- REQUIRED ----------------------------------
Rinex Version  2.10,  File type Observation,  System G (GPS).
Prgm: RinexObsWriter,  Run: 11-14-01 10:04:27,  By: NIMA
Marker name: 85408.
Obs'r : Monitor Station,  Agency: NIMA
Rec#: 1,  Type: ZY12,  Vers:
Antenna # : 85408,  Type : AshTech Geodetic 3
Position (XYZ,m) : (-740289.7851, -5457071.6555, 3207245.8294).
Antenna offset (ENU,m) : (0.0000, 0.0000, 0.0000).
Wavelength factors (default) L1:1, L2: 1.
Observation types (7) :
 Type #0 = L1 L1 Carrier Phase (L1 cycles).
 Type #1 = L2 L2 Carrier Phase (L2 cycles).
 Type #2 = C1 C/A-code pseudorange (meters).
 Type #3 = P1 Pcode L1 pseudorange (meters).
 Type #4 = P2 Pcode L2 pseudorange (meters).
 Type #5 = D1 Doppler Frequency L1 (Hz).
 Type #6 = D2 Doppler Frequency L2 (Hz).
Time of first obs 1999/08/01 00:00:00.0000000 GPS
(This header is VALID 2.1 Rinex.)
---------------------------------- OPTIONAL ----------------------------------
Comments (3) :
The AS bit flag is set if receiver is in Z mode
Signal to Noise ratio information is omitted
This file contains SMOOTHED obs data
-------------------------------- END OF HEADER -------------------------------

 WARNING: Computed first time does not agree with header

 Computed interval is  0.00
 Computed first epoch is -4713/01/01 00:00:00.0000000
 Computed last epoch is 1999/08/01 23:59:30.0000000
 There were 0 epochs (-0.00% of -2147483647 possible epochs in this timespan) and 0 inline header blocks.

          Summary of data available in this file: (Totals are based on times and interval)
PRN/OT:     L1    L2    C1    P1    P2    D1    D2 Total  Begin - End time
TOTAL        0     0     0     0     0     0     0

 WARNING: ObsType L1 should be deleted from header.

 WARNING: ObsType L2 should be deleted from header.

 WARNING: ObsType C1 should be deleted from header.

 WARNING: ObsType P1 should be deleted from header.

 WARNING: ObsType P2 should be deleted from header.

 WARNING: ObsType D1 should be deleted from header.

 WARNING: ObsType D2 should be deleted from header.

+++++++++++++ End of RinSum summary of data_set/s081213a.99o +++++++++++++

-- NicoleQuindara - 05 Aug 2011

Rin3Sum Application

edit

Description

This application reads a RINEX-3 file and summarizes its content.

Command Summary

Optional Arguments:
Short Arg. Long Arg. Description
-i --input Input file name(s).
-f<file>   File containing more options.
-o --output Output file name.
-p --path Path for input file(s).
-R --Replace Replace header with full one.
-s --sort Sort the PRN/observations table on begin time.
-g --gps Print times in the PRN/observations table as GPS times.
  --EpochBeg Start time, argument is of the form YYYY,MM,DD,HH,Min,Sec.
  --GPSBeg Start time, argument is of the form GPSweek, sow.
  --EpochEnd End time, argument is of the form YYYY,MM,DD,HH,Min,Sec.
  --GPSEnd End time, argument is of the form GPSweek, sow.
-h --help Print syntax and quit.
-d --debug Print debugging information.

-- NicoleQuindara - 05 Aug 2011

rtAshtech Data Collector

edit

Description

This application logs observations from an Ashtech Z-XII receiver. It records observations directly into the RINEX format. A number of optional outputs are possible. The raw messages from a receiver can be recorded. Observations can also be recorded in a format that is easily imported into numerical packages.

Command Summary

Optional Arguments:
Short Arg. Long Arg. Description
-h --help Print help usage.
-v --verbose Increased diagnostic messages.
-r --raw Record raw observations.
-l --log Record log entries.
-t --text Record observations as simple text files.
-o --rinex-obs=<arg> Naming convention for RINEX observations files.
-n --rinex-nav=<arg> Naming convention for RINEX navigation files.
-T --text-obs=<arg> Naming convention for observations files in simple text files.
-i --input Where to read ashTech data. Can be a file or a serial device (ser:/dev/ttyS0), a tcp port (tcp:hostname:port), or standard input (the default).

Usage

> rtAshtech -p /dev/ttyS1
> rtAshtech -o "minute\%03j\%02H\%02M.\%02yo"

Notes

rtAshtech only works on UNIX systems with POSIX compliant serial ports.

-- NicoleQuindara - 05 Aug 2011

sp32bc File Converter

edit

Description

This application reads SP3 (a or c) file(s) and writes them to RINEX navigation file(s).

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
-p --pe Input precise ephemeris.
-r --output-rate Rate of broadcast ephemeris output (seconds).

Optional Arguments:

-h --help Display argument list.

-- NicoleQuindara - 05 Aug 2011

sp3version File Converter

edit

Description

This application reads an SP3 file (either a or c format) and writes it to another file (also either in a or c format).

Command Summary

Long Arg. Description
--in A file from which to take the input. The default is stdin.
--out A file into which to write the output. The default is sp3.out.
--outputC Output version c (otherwise a).
--msg Add message as a comment to the output header.
--verbose Output to screen: dump headers, data, etc.

-- NicoleQuindara - 05 Aug 2011

svvis Application

edit

Description

This application computes when satellites are visible at a given point on the Earth.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
-e --eph=<arg> Where to get the ephemeris data. Can be RINEX, nav, FIC, MDP, SP3, YUMA, and SEM.

Optional Arguments:

Short Arg. Long Arg. Description
-d --debug Increase debug level.
-v --verbose Increase verbosity.
-h --help Print help usage.
  --elevation-mask=<arg> The elevation above which an SV is visible. The default is 0 degrees.
-p --position=<arg> Receiver antenna position in ECEF (x,y,z) coordinates. Format as string: "X Y Z".
-c --msc=<arg> Station coordinates file.
-m --msid=<arg> Station number to use from the msc file.
  --graph-elev=<arg> Output data at the specified interval. Interval is in seconds.
-l --time-span=<arg> How much data to process, in seconds. Default is 86400.
  --start-time=<TIME> When to start computing positions. The default is the stat of the ephemeris data.
  --stop-time=<TIME> When to stop computing positions. The default is one day after the start time.
  --print-elev Print the elevation of the sv at each change in tracking. The default is just to output the PRN of the sv.
  --rise-set Print the visibility data by PRN in rise-set pairs.
  --tabular Print the visibility data in a tabular format.
  --recent-eph Use this if the ephemeris data provided uses 10-bit GPS weeks and it should be converted to the current epoch or to the epoch current to the "start-time", if specified.

-- NicoleQuindara - 05 Aug 2011

TECMaps Application

edit

Description

Program TECMaps reads RINEX data files containing extended RINEX observation types EL, AZ and SR or VR from several sites and at each epoch fits the vertical TEC data to a model of the ionosphere on a two-dimensional grid surface. Hardware TEC measurement biases are corrected, using input from the program IonoBias. The user can specify the type of grid, the type of TEC data and the model to be used. Output is in the form of files, one per epoch, which can be used to plot the 2D ionospheric TEC surface.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
  --input Input RINEX observation file name(s).

Optional Arguments:

Short Arg. Long Arg. Description
-f   File containing more options.
  --XSat Exclude this satellite (<sat> may be <system> only).
Reference Station Position (One Required)
  --RxLLH <l,l,h> Reference site position in geodetic lat, lon (E), ht (deg,deg,m).
  --RxXYZ <x,y,z> Reference site position in ECEF coordinates (m).
  --inputdir Path for input file(s).
Ephemeris Input
  --navdir Path of navigation file(s).
  --nav Navigation (RINEX navigation or SP3) file(s).
Output
  --log Output log file name.
Time Limits
  --BeginTime Start time, argument is of the form YYYY,MM,DD,HH,Min,Sec.
  --BeginGPSTime Start time, argument is of the form GPSweek, sow.
  --EndTime End time, argument is of the form YYYY,MM,DD,HH,Min,Sec.
  --EndGPSTime End time, argument is of the form GPSweek, sow.
Processing
  --noVTECmap Do NOT create the VTEC map.
  --MUFmap Create MUF map as well as VTEC map.
  --F0F2map Create F0F2 map as well as VTEC map.
  --Title1<TITLE> Title information.
  --Title2<TITLE> Second title information.
  --BaseName<name> Base name for output files.
  --DecorrError <de> Decorrelation error rate in TECU/1000 km.
  --Biases <file> File containing estimated satellite and receiver biases (Program IonoBias?).
  --ElevThresh <ele> Minimum elevation (6 degrees).
  --MinAcqTime <t> Minimum acquisition time (0 seconds).
  --FlatFit Flat fit type.
  --LinearFit Linear fit type.
  --IonoHeight <n> Ionosphere height (km).
  --Offset Overall bias to add to data (TECU).
Grid
  =--UniformSpacing Grid uniform in space (XYZ).
  =--UniformGrid Grid uniform in Lat and Lon.
  =--OutputGrid Output the grid to filename <basename.LL>.
  =--GnuplotOutput Write the grid file for gnuplot (default: for MATLAB).
  --NumLat <n> Number of latitude grid points (40).
  --NumLon <n> Number of longitude grid points (40).
  --BeginLat <n> Beginning latitude (21 degrees).
  --BeginLon <n> Beginning logintude (230 degrees E).
  --DeltaLat <del> Grid spacing in latitude (0.25 degrees).
  --DeltaLon <del> Grid spacing in longitude (1.0 degrees).
Help
-v --verbose Print extended output information.
-d --debug Increase debug level.
-h --help Print syntax and summary of input, then quit.

Platforms Supported

This application has been successfully used in Linux.

This application successfully build under these environments: linux-x86, linux-x86_64, solaris-ppc, Windows/.net2005, MacOS/X-Code.

Usage example for Linux/Solaris/Mac Command Shell

Example use session from the GPSTk source distribution.

  1. Change to the examples directory. cd ~/svn/gpstk/dev/examples
  2. Generate azimuth and elevation extended RINEX observation files.
  3. Execute TECMaps.

See also:

  • EditRinex - generating extended RINEX observation files
  • RinexPlot - plotting results

Notes

Input is on the command line, or of the same format in a file (-f<file>).

-- NicoleQuindara - 05 Aug 2011

timeconvert Transform Tool

edit

Description

This application allow the user to convert between time formats associated with GPS. Time formats include: civilian time, Julain day of year and year, GPS week and second of week, Z counts, and Modified Julian Date (MJD).

Command Summary

calgps [options]

where [options] can be

-d, --debug Increase debug level
-v, --verbose Increase verbosity
-h, --help Display argument list.
-A, --ansi = Time "Ansi-Second"
-c, --civil = TIME "Month(numeric) DayOfMonth Year Hour:Minute:Second"
-R, --rinex-file = TIME "Year(2-digit) Month(numeric) DayOfMonth Year Hour Minute Second"
-o, --ews = TIME "GPSEpoch 10bitGPSweek SecondsOfWeek"
-f, --ws = TIME "FullGPSweek SecondsOfWeek "
-w, --wz = TIME "FullGPSweek ZCount"
    --z29 = TIME
"29bitZcount"
-Z, --z32 = TIME "32bitZcount"
-j, --julian = TIME "JulianDate"
-m, --mjd = TIME "ModifiedJulianDate"
-u, --unixtime = TIME "!UnixSeconds UnixMicroseconds"
-y, --doy = TIME "Year DayOfYear SecondsOfDay"
    --input-format = ARG
Time format to use on input
    --input-time = ARG
Time to be parsed by "input-format" option
-F, --format = ARG Time format to use on output
-a, --add-offset = NUM "add NUM seconds to specified time"
-s, --sub-offset = NUM "sutract NUM seconds to specified time"

Usage examples

Example 1.

user@host:~$ timeconvert -R "85 05 06 13 50 02"

Month/Day/Year                    5/6/1985
Hour:Min:Sec                      13:50:02
Modified Julian Date              46191.576412037
GPSweek DayOfWeek SecOfWeek       278 1 136202.000000
FullGPSweek Zcount                278 90801
Year DayOfYear SecondOfDay        1985 126 49802.000000
Unix_sec Unix_usec                484235402 0
Zcount: 29-bit (32-bit)           145842865 (145842865)

Example 2.

timeconvert -o "01 1379 500"

Month/Day/Year                    1/25/2026
Hour:Min:Sec                      00:08:20
Modified Julian Date              61065.005787037
GPSweek DayOfWeek SecOfWeek       355 0 500.000000
FullGPSweek Zcount                2403 333
Year DayOfYear SecondOfDay        2026 25 500.000000
Unix_sec Unix_usec                1769299700 0
Zcount: 29-bit (32-bit)           186122573 (1259864397)

Example 3.

timeconvert -o "01 1379 500" -a "86400"

Month/Day/Year                    1/26/2026
Hour:Min:Sec                      00:08:20
Modified Julian Date              61066.005798600
GPSweek DayOfWeek SecOfWeek       355 1 86900.999000
FullGPSweek Zcount                2403 579333
Year DayOfYear SecondOfDay        2026 26 500.999000
Unix_sec Unix_usec                1769386100 999000
Zcount: 29-bit (32-bit)           186180173 (1259921997)

Example 4.

timeconvert -w "1381 500" -s "200"

Month/Day/Year                    6/25/2006
Hour:Min:Sec                      00:09:10
Modified Julian Date              53911.006365741
GPSweek DayOfWeek SecOfWeek       357 0 550.000000
FullGPSweek Zcount                1381 366
Year DayOfYear SecondOfDay        2006 176 550.000000
Unix_sec Unix_usec                1151194150 0
Zcount: 29-bit (32-bit)           187171182 (724042094)

Notes

If no arguments are given, it will convert the current time to all formats. When inputting time values, include quotation marks.

vecsol Positioning Application

edit

Description

The application computes a 3D vector solution using dual-frequency carrier phases. A double difference algorithm is applied with properly computed weights (elevation sine weighting) and correlations. The program iterates to convergence and attempts to resolve ambiguities to integer values if close enough. Crude outlier rejection is provided based on a triple-difference test. Ephemerides used are either broadcast or precise (SP3).

Alternatively, P code processing is additionally provided. The solution is computed using either the ionosphere-free linear combination, or the average of L1 and L2. The ionospheric model included in broadcast ephemeris may be used. A standard tropospheric correction is applied, or tropospheric parameters (zenith delays) may be estimated for the first station (vector mode) or both.

Usage

vecsol usage: vecsol <RINEX Obs file 1> <RINEX Obs file 2>

RINEX Observation Files

The two arguments are names of RINEX observation files. They contain the observations collected at the two end points 1 and 2 of the baseline. They must contain a sufficient set of simultaneous observations to the same satellites.

If no separate station coordinate files are provided, the initial station coordinates are taken from the RINEX headers. Upon finishing, vecsol creates or updates the coordinate file of the first station (vector mode) or both.

(vecsol.conf)

The file vecsol.conf contains the input options for the program, one per line.
Configuration File vecsol.conf
Options Value Meaning
obsMode 3/2/1/0 If 1 or 3, process carrier phase data (instead of P code data). if 0 or 1, iterate on ionosphere-free vector (not L1 + L2).
timeconv 1/0 If 1, use true double difference covariances. If 0, ignore any possible correlations.
precise 1/0 If 1, use true double-difference covariances. If 0, ignore any possible correlations.
iono 1/0 If 1, use the 8-parameter ionospheric model that comes with the broadcast ephemeris (.nav) files.
tropo 1/0 If 1, estimate troposphere parameters (zenith delays relative to the standard value, which is always applied).
vecmode 1/0 If 1, solve the vector, i.e., the three coordinate differences between the baseline end points. If 0, solve for the absolutely coordinates of both end points.
debug 1/0 If 1, produce lots of gory debugging output. See the source for what it all means.
refsat elev number Minimum elevation (degrees) of the reference satellite for computing inter-satellite difference. Good initial choice: 30.0
cutoff elev number Cut-off elevation (degrees). Good initial choice: 10.0, -20.0
rej TP, rejTC two numbers Phase code triple differences rejection limit (m).
reduce 1/0 Apply post-reduction to combine dependent unknowns.

Ephemeris File Lists

The file vecsol.nav contains the names of the navigation RINEX files ("nav files", extension). Good navigation RINEX files that are globally valid can be found from the CORS website at http://www.ngs.noaa.gov/CORS/.

The file vecsol.eph contains the names of the precise ephemeris SP3 files (extension .sp3) to be used. These should cover the time span of the observations, with time to spare on both ends. Note that the date in the filenames of the SP3 files is given as GPS week + weekday, not year + day of year, as in the observation and nav files.

In the .nav and .eph files, comment lines have \# in the first position.

Notes

Currently, vecsol does not recover from cycle slips, so the RINEX observation files used have to be fairly clean.

-- NicoleQuindara - 05 Aug 2011

WhereSat Application

edit

Description

This application uses input ephemeris to compute the predicted location of a satellite. The Earth-centered, Earth-fixed (ECEF) position of the satellite is reported. Optionally, the topocentric coordinates--azimuth, elevation, and range--can be generated. The user can specify the time interval between successive predictions. Also the output can generated in a format easily imported into numerical packages.

Command Summary

Required Arguments:
Short Arg. Long Arg. Description
-e --eph-files=<arg> Ephemeris source file(s). Can be RINEX navigation, SP3, or FIC.

Optional Arguments:

Short Arg. Long Arg. Description
-h --help Print help usage.
-u --position=<arg> Antenna position in ECEF (x,y,z) coordinates. Format as string "X Y Z", used to give user-centered data (SV range, azimuth, and elevation) when SV is in view.
  --start=<TIME> Ignore data before this time. Format as string: "MO/DD/YYYY HH:MM:SS".
  --end=<TIME> Ignore data after this time. Format as string: "MO/DD/YYYY HH:MM:SS".
-f --time-format=<arg> CommonTime format specifier used for times in the output. The default is "%4Y, %3j, %02H, %02M:%4.1f".
-p --prn=<num> Which SVs to analyze. Repeat option for multiple satellites. If this option is not specified, all ephemeris data will be processed.
-t --time=<num> Time increment in seconds for ephemeris calculation. Default is 900 seconds (15 minutes).

Examples

> WhereSat -b aira1720.06n -p 2 -u "918129.01 -4346070.45 803.18"
  -s "06/21/2006 17:00:00" -e "06/21/2006 20:00:00" -t 1800

 Antenna Position:  918129  -4.34607e+06  803.18
 Navigation File:   aira1720.06n
 Start Time:        06/21/2006 17:00:00
 End Time:          06/21/2006 20:00:00
 PRN:               2

 Prn 2 Earth-fixed position and clock information:

 Date       Time(UTC)   X (meters)          Y (meters)          Z (meters)      
 ===============================================================================
 06/21/2006 18:00:00  12758891.971859      18901201.616227      -14049016.596144
 06/21/2006 18:30:00  12847888.097031      21541501.416411      -9315422.851798 
 06/21/2006 19:00:00  12843576.989405      23087218.618683      -3957280.515764 
 06/21/2006 19:30:00  12450313.769289      23516935.034029      1667186.089065  

  . . .

    Clock Correc (s)
==================
     0.000007
     0.000007
     0.000007
     0.000007

 

 Data for user reference frame:

 Date       Time(UTC)   Azimuth        Elevation      Range to SV (m)
 =====================================================================
 06/21/2006 18:00:00  130.596202      -43.242769      29627531.177821
 06/21/2006 18:30:00  118.680085      -49.681012      29983796.522429
 06/21/2006 19:00:00  102.845663      -53.888528      30169796.433699
 06/21/2006 19:30:00  84.400419       -55.459042      30197072.648367

 Calculated 4 increments for prn 2 .

-- NicoleQuindara - 05 Aug 2011

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r24 < r23 < r22 < r21 < r20 | More topic actions
Documentation.UsersManualOnePage moved from Documentation.UsersManual on 29 Jan 2008 - 16:10 by BenHarris - put it back
 
WEBLOGOALT
This site is powered by the TWiki collaboration platformCopyright amp;© by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback