GNSS precise point positioning (PPP)

This cookbook chapter describes an example of GNSS precise point positioning (PPP) for a ground station using GPS, GLONASS, and Galileo. For information on how to generate the GNSS products (orbits, clocks, signal biases, etc.) required for PPP, see the cookbook GNSS satellite orbit determination and station network analysis.

Scientific details about the underlying processing approach and the applied parametrizations, models, and corrections can be found in a doctoral thesis available under DOI 10.3217/978-3-85125-885-1.

An example scenario for this task is available at https://ftp.tugraz.at/outgoing/ITSG/groops/scenario/scenarioGnssPPP.zip. It includes GROOPS scripts and data for the example, but not the general GROOPS data and metadata found at https://ftp.tugraz.at/outgoing/ITSG/groops (data folder or zipped archive). The scenario generally represents what is described in this cookbook, but may slightly differ in certain settings.

Data preparation

Most of the required metadata files are provided in GROOPS file formats at https://ftp.tugraz.at/outgoing/ITSG/groops. These files are regularly updated.

Data that has to be gathered from other sources comprises:

Receiver observations, precise satellite orbits and clocks, and possibly attitude and signal biases can be downloaded from the IGS Data Centers. GPS, GLONASS, and Galileo orbits, clocks, attitude, and signal biases for the period 1994-2020 are also available as part of Graz University of Technology's contribution to IGS repro3.

The example scenario includes a small set of this data. The script 010groopsConvert.xml can be used to convert these external formats into GROOPS formats.

Prepare a station list file that contains the stations (one per line) to be processed.

Processing of a ground station

The script 02groopsGnssProcessing.xml in the example scenario implements the following steps and settings.

These are the settings for GnssProcessing. If not otherwise stated use the default values.

The first step is setting the processing sampling, in this example it is 30 seconds. The processing interval usually is a single 24-hour day, timeSeries:uniformSampling with timeStart=<mjd>, timeEnd=<mjd>+1, sampling=30/86400 (processing sampling).

Add the appropriate transmitters:gnss (e.g. GPS, GLONASS, and Galileo) and provide the required files (from Data preparation):

The following settings are needed in receiver:stationNetwork:

Add the following parametrizations and define the outputfiles you are interested in inside each of them:

Add the following processingSteps:

When processing multiple stations at the same time, moving estimate and resolveAmbiguities into the processing step forEachReceiverSeparately sets up and solves the normal equations independently for each station.