GEOM-300 · Lesson 9 of 12 · 20 min

Precise point positioning

The canal's western end lay 60 km from the nearest permanent station and well outside comfortable RTK range. Ruth Albrecht wanted two new control points there, CR7 and CR8, with centimeter accuracy in NAD83(2011) and no base receiver tied up for a week. Theo Martel set up a geodetic receiver on each for eight hours and processed the files the next day with a precise point positioning service. The reports came back in minutes, each with coordinates, uncertainties of a few millimeters, and a plot showing the solution converging over the first hour. This lesson explains precise point positioning (PPP): how a single receiver, with nothing but precise satellite products, can position itself to centimeters or better anywhere on Earth.

The idea

Relative positioning removes satellite orbit and clock errors by differencing with a base. PPP removes them instead by replacing the broadcast orbits and clocks with precise ones estimated from a global network, as described in Lesson 3. With orbits good to a few centimeters and clocks good to a few hundredths of a nanosecond, the remaining unknowns of an undifferenced dual-frequency observation are the receiver's coordinates, its clock, the tropospheric delay and the carrier-phase ambiguities. A PPP processor forms ionosphere-free combinations of code and phase,

\[P_{\text{IF}} = \rho + c\,dt_r + m(E)\,Z_w + \varepsilon_P, \qquad \Phi_{\text{IF}} = \rho + c\,dt_r + m(E)\,Z_w + \lambda_{\text{IF}} N_{\text{IF}} + \varepsilon_\Phi\]

after applying the precise satellite clock, a hydrostatic delay model and many corrections, and estimates the coordinates, the receiver clock at every epoch, the zenith wet delay \(Z_w\) as a slowly varying parameter, and one ambiguity per satellite pass, usually in a Kalman filter or a sequential least-squares adjustment. The code observations pin the clock and give a rough position; the phase observations, once their ambiguities are well determined, give the precision.

What has to be modeled

Because nothing is differenced away, every effect that relative positioning cancels over a short baseline must be modeled explicitly, at the millimeter level. The list is long: satellite antenna phase center offsets and variations, which are large because the satellite's center of mass, to which precise orbits refer, is up to a few meters from its antenna; receiver antenna calibrations; phase wind-up as the satellites rotate; the relativistic clock and path effects; solid Earth tides, ocean tide loading and the pole tide; and the satellite attitude, which determines the direction of the antenna offsets and changes rapidly when satellites pass through the Earth's shadow. The models are set out in the conventions of the International Earth Rotation and Reference Systems Service and the standards of the IGS, and the precise products and the PPP software must use consistent conventions: the satellite clocks estimated by an analysis center absorb its modeling choices, so mixing products and models from different sources can bias results.

Convergence

The weakness of float PPP is the time it needs. Each ionosphere-free ambiguity is separated from the coordinates and the troposphere only by the slow change of satellite geometry, so the solution starts at the decimeter-to-meter level of the code and improves gradually. Typical dual-frequency static float PPP reaches about 10 cm horizontally in 20 to 30 minutes and a few centimeters after one to two hours, and millimeter-level precision needs many hours. Heights converge more slowly than horizontal positions. Kinematic PPP converges similarly but with more noise, and any loss of lock on many satellites restarts the convergence.

A graph of horizontal position uncertainty in centimeters on a logarithmic scale against observation time from 0 to 8 hours. A float PPP curve starts near 25 cm at a few minutes and falls gradually to about 1.3 cm at 8 hours. A PPP with ambiguity resolution curve follows it for the first 20 minutes, drops suddenly to about 4 cm when the ambiguities are fixed, and then falls to about 0.5 cm. Horizontal dashed lines mark 10, 5 and 2 cm.
Convergence of static PPP from a simple model. Ambiguity resolution shortens the time to a few centimeters from hours to tens of minutes.

Ambiguity resolution in PPP

In relative positioning the double-differenced ambiguities are integers because receiver and satellite phase biases cancel. In undifferenced PPP the biases do not cancel: the estimated ambiguity is the integer plus a fractional satellite bias and a fractional receiver bias. Since about 2008 several groups have shown how to estimate the satellite phase biases from a global network and distribute them, either as separate bias products or built into integer-recovery clocks, so that a user can remove them. The receiver bias is common to all satellites and cancels when differences between satellites are formed in the user's filter. The ambiguities can then be fixed, typically with the wide-lane, narrow-lane cascade of Lesson 7. This is PPP with ambiguity resolution (PPP-AR). It improves the east component especially, because float ambiguities correlate most strongly with east–west position, and it shortens the time needed to reach a given accuracy.

PPP-RTK goes further by adding precise ionospheric and tropospheric corrections from a regional network, so that the user can fix ambiguities almost instantly, like RTK, while the correction stream remains compact and valid over a wide area. Several commercial services and the Japanese QZSS centimeter-level service work in this way.

The program below uses a simple convergence model, fitted to the general behavior of dual-frequency static PPP rather than to any particular service, to compare float PPP with PPP-AR, and to find the time each takes to reach 10, 5 and 2 cm. It then addresses the second practical issue of PPP: bringing the result to the epoch of the national frame.

A model of float and fixed PPP convergence, and the epoch propagation of a PPP result.
# PPP convergence (simple model) and bringing a PPP result to the reference epoch
import math

def sigma_h(t_min, ar=False):
    """Horizontal 1-sigma (m) of a static float PPP solution after t minutes: a convergence model
    fitted to typical dual-frequency results; ambiguity resolution removes most of the slow tail."""
    floor, s0, tau = 0.004, 0.40, 6.0
    s = math.sqrt(floor ** 2 + s0 ** 2 * (tau / (t_min + tau)) ** 1.6)
    if ar and t_min >= 20:
        s = math.sqrt(floor ** 2 + (0.35 * (s - floor)) ** 2)
    return s

print("minutes  float PPP (cm)  with ambiguity resolution (cm)")
for t in (5, 10, 20, 30, 60, 120, 240, 480, 1440):
    print(str(t).rjust(7), format(100 * sigma_h(t), "12.1f"), format(100 * sigma_h(t, True), "18.1f"))
for target in (0.10, 0.05, 0.02):
    t = next(t for t in range(1, 3000) if sigma_h(t) <= target)
    ta = next(t for t in range(1, 3000) if sigma_h(t, True) <= target)
    print("time to", int(100 * target), "cm:", t, "min float,", ta, "min with AR")

# After the PPP result is transformed from the global frame to the national frame at the observation
# epoch, it must still be moved to the national frame's reference epoch with the station velocity
obs_epoch, ref_epoch = 2026.84, 2010.0
v_enu = (-0.5, -0.4, 0.9)          # station velocity in the national frame (mm/yr), from a velocity model
dt = ref_epoch - obs_epoch
shift = [v * dt for v in v_enu]
print("epoch change", round(dt, 2), "yr: shift east", round(shift[0], 1), "mm, north", round(shift[1], 1), "mm, up", round(shift[2], 1), "mm")
Output
minutes  float PPP (cm)  with ambiguity resolution (cm)
      5         24.6               24.6
     10         18.3               18.3
     20         12.4                4.2
     30          9.5                3.2
     60          5.9                2.0
    120          3.5                1.2
    240          2.1                0.7
    480          1.3                0.5
   1440          0.6                0.4
time to 10 cm: 28 min float, 20 min with AR
time to 5 cm: 76 min float, 20 min with AR
time to 2 cm: 255 min float, 59 min with AR
epoch change -16.84 yr: shift east 8.4 mm, north 6.7 mm, up -15.2 mm

In the model, float PPP needs about half an hour to reach 10 cm and more than an hour to reach 5 cm; ambiguity resolution, once possible after about 20 minutes, brings the solution to 5 cm at once and to 2 cm within an hour. After a full day both approaches reach a few millimeters. The times are typical rather than guaranteed: open sky, a good antenna and quiet ionospheric conditions shorten them; obstructions and storms lengthen them. The second part of the output is the subject of the next section.

Frames and epochs

Precise orbits are expressed in the frame of the IGS, IGS20, which is aligned with ITRF2020, and they place the satellites where they are today. A PPP solution is therefore in ITRF2020 at the epoch of observation. The North American plate moves about 2 to 3 cm per year relative to the ITRF, so ITRF coordinates of a fixed pillar in Alberta or Montana change every year. National frames such as NAD83 are fixed to the plate, so that points on stable ground keep nearly constant coordinates. To deliver a result in the national frame, the PPP coordinates are transformed from ITRF2020 to the national frame at the observation epoch, using published transformation parameters and their rates, and then moved from the observation epoch to the national frame's reference epoch using the station velocity in that frame.

In the United States the reference epoch for NAD83(2011) is 2010.00, and transformations and velocities come from NGS tools such as HTDP and the NCAT conversion tool. In central Montana the intraplate velocities are a millimeter or so per year, apart from the Intermountain Seismic Belt to the south-west. Over 16.84 years the program's example velocities move the pillar by 8 mm east, 7 mm north and 15 mm vertically, enough to matter for control. With NATRF2022, whose reference epoch is 2020.00 and which will include a model of intraplate velocities, the same epoch discipline will apply to the new frame.

Online PPP services

Several online services process GNSS data by PPP. NRCan's CSRS-PPP service is free, accepts RINEX files from anywhere in the world, and returns ITRF2020 coordinates with uncertainties and a full report; version 5, released in May 2025, added Galileo to its ambiguity resolution. Its NAD83(CSRS) output is meant for Canada, so United States users take its ITRF2020 result and transform it with NGS tools. Commercial services deliver PPP in real time or after the fact. NGS's own OPUS service, described in Lesson 10, uses relative processing to nearby CORS rather than PPP, and its modernized version for the new datums supports multi-GNSS. For control work, it is good practice to process with final products once they are available, about two weeks after the observations.

Worked problem

Bringing a PPP result to the reference epoch

A PPP solution, transformed to NAD83(2011), gives coordinates for CR7 at the observation epoch 2026.84. The intraplate velocity is \(v_E = -0.5\), \(v_N = -0.4\) and \(v_U = +0.9\) mm/yr. Find the shift needed to bring the coordinates to the reference epoch 2010.00, and the corrected height if the observation-epoch ellipsoidal height is 1031.338 m.

Show solution
  1. \[\Delta t = 2010.00 - 2026.84 = -16.84\ \text{yr}\]
  2. \[\Delta E = -0.5 \times (-16.84) = +8.4\ \text{mm}, \quad \Delta N = -0.4 \times (-16.84) = +6.7\ \text{mm}\]
  3. \[\Delta U = 0.9 \times (-16.84) = -15.2\ \text{mm}\]
  4. \[h_{2010.00} = 1031.338 - 0.015 = 1031.323\ \text{m}\]

Answer: The pillar has been rising by about a millimeter per year, so its 2010 height was 15 mm lower. Horizontally it moves about 11 mm between the two epochs. Control published at the reference epoch must include these shifts; otherwise surveys at different dates disagree by the accumulated motion.

Real-time PPP

Real-time PPP uses orbit and clock corrections streamed over the internet or by satellite, such as the IGS real-time service, Galileo's High Accuracy Service and commercial services, in the RTCM state space representation (SSR) format, which describes errors per satellite rather than as base observations. Accuracy after convergence is a few centimeters to a decimeter depending on the service, and convergence takes minutes to tens of minutes. Real-time PPP serves precision agriculture, offshore work, machine guidance far from networks, and the positioning of remote sites. For a surveyor its main weakness is the convergence time after each outage, which makes it awkward for stop-and-go work in obstructed areas.

Using PPP well

PPP is now often the simplest way to establish accurate control far from other control, to check a network, or to coordinate an RTK base. A few practices make it reliable. Observe long enough: several hours for millimeter-level static control, and never less than about an hour for centimeter work. Use a geodetic antenna whose calibration is known to the service, enter its standard name and height exactly, and submit dual-frequency data at 30 s or 1 s intervals. Process with final products for control. Check that the solution has converged, using the convergence plot and the reported uncertainty, and compare two independent sessions on different days. And state the frame and epoch of every coordinate delivered.

Common mistakes

  • MistakeDelivering PPP coordinates without stating frame and epoch.

    InsteadReport, for example, NAD83(CSRS) epoch 2010.0 or ITRF2020 at the observation epoch, and keep the velocities used.

  • MistakeStopping a static PPP session after 15 minutes.

    InsteadFloat PPP needs an hour or more for a few centimeters; PPP-AR shortens this but still needs time to converge.

  • MistakeMixing precise products and models from different conventions.

    InsteadUse products and software with consistent antenna, attitude and bias conventions.

  • MistakeAssuming PPP heights are as good as horizontal positions.

    InsteadHeights converge more slowly and are correlated with the tropospheric delay.

  • MistakeUsing ultra-rapid products for final control.

    InsteadReprocess with final products when they are available.

Summary and key terms

  • PPP replaces broadcast orbits and clocks with precise products and positions a single receiver without a base.
  • It estimates coordinates, receiver clock, zenith wet delay and ambiguities from ionosphere-free code and phase.
  • Effects that cancel in relative positioning, such as satellite antenna offsets, wind-up and tides, must be modeled.
  • Float PPP converges slowly; PPP-AR uses satellite phase biases to fix ambiguities and shortens convergence.
  • PPP results are in ITRF2020 at the observation epoch and must be transformed and moved to the national frame's epoch.
  • Online services such as CSRS-PPP process RINEX files for free; real-time PPP uses SSR correction streams.
  • Good practice: long sessions, calibrated antennas, final products, independent repeats and stated frames and epochs.
Precise point positioning
Positioning a single receiver to centimeters or better using precise orbits, clocks and models.
Convergence
The time needed for a PPP solution to reach a given accuracy as ambiguities become well determined.
PPP-AR
PPP with ambiguity resolution, using satellite phase bias products.
PPP-RTK
PPP augmented with regional atmospheric corrections to allow near-instant ambiguity resolution.
Reference epoch
The date to which coordinates in a frame are referred when points move with time.
SSR
State space representation: correction messages describing orbit, clock, bias and atmosphere errors per satellite.

Practice problems

Work each problem on paper first, then reveal the answer to check.

  1. Why are satellite antenna offsets negligible for short baselines but essential for PPP?

    Show answer

    Over a short baseline they cancel in differences; in PPP they enter every range directly.

  2. A station moves 1.2 mm/yr north. What is the shift from 2026.5 to 2010.0?

    Show answer

    −16.5 × 1.2 = −19.8 mm.

  3. How long does float PPP typically need for 10 cm horizontal?

    Show answer

    About 20 to 30 minutes of static dual-frequency data.

  4. What does a PPP-AR user need that a float PPP user does not?

    Show answer

    Satellite phase bias products or integer-recovery clocks.

  5. Which product latency would you use for final control?

    Show answer

    Final products, about two weeks after the end of the week.

Lesson quiz · 5 questions

Score 60% or more to complete this lesson.

Take the quiz