GEOM-300 · Lesson 5 of 12 · 23 min

Error sources

On the third day of the canal survey, a geomagnetic storm reached the prairies. The aurora was visible from the field office in the evening, and during the afternoon the RTK rovers kept losing their fixed solutions. Theo Martel's static sessions from that day showed residuals two or three times larger than usual. Ruth Albrecht used the day to make a point to the crew: every GNSS error has a physical cause, a typical size and a remedy, and good practice consists of knowing which errors matter for the job at hand and how each is reduced or eliminated. This lesson goes through them one by one, from the satellites to the receiver, and ends with an error budget.

A cross-section from a satellite at the top to an antenna on the ground. Along the signal path, labels mark the error sources in order: satellite orbit and clock at the satellite; the ionosphere as a band from about 60 to 1000 km with a peak density near 350 km; the troposphere as a thin band near the ground up to about 10 km; and at the ground, a reflected path from a nearby building representing multipath, the antenna phase centre and the receiver noise. Small annotations give typical sizes: orbit and clock 0.3 to 1 m, ionosphere 1 to 30 m, troposphere 2.3 to 25 m, multipath 0.1 to several metres for code.
The main error sources along a GNSS signal path and their typical sizes before correction.

Satellite orbit and clock errors

The broadcast orbit and clock are predictions, and their combined effect along the line of sight, the signal-in-space range error, is typically 0.3 to 1 m for GPS and Galileo today. The clock part dominates, because an atomic clock that is predicted well for an hour can drift by nanoseconds over several hours. The orbit error is mostly along-track and cross-track, and only part of it projects onto the line of sight. Both errors are common to all users who see the satellite, so they cancel almost completely in relative positioning over short baselines, and they are replaced by precise products for precise point positioning. Occasionally a satellite clock jumps or a satellite is manoeuvred without being flagged in time; such faults are rare but can produce errors of tens or hundreds of metres, and they are the reason integrity monitoring exists.

The ionosphere

The ionosphere is the region of the upper atmosphere, roughly 60 to 1000 km up, where solar ultraviolet and X-ray radiation ionizes the thin gas and free electrons persist. The electrons slow the code and advance the carrier phase by \(40.3\,\text{TEC}/f^2\) metres, where TEC is the total electron content along the path, measured in TEC units of \(10^{16}\) electrons per square metre. One TEC unit delays the L1 code by 0.162 m. Vertical TEC over mid-latitudes ranges from a few units at night to 20 to 60 units in the early afternoon, depending on season and on the eleven-year solar cycle, whose recent maximum fell around 2024 and 2025. Under storm conditions TEC can rise much higher and vary sharply over short distances.

A slanted path through the ionosphere is longer than a vertical one. With the common thin-shell model, which concentrates all electrons in a layer at about 350 km, the slant TEC is the vertical TEC divided by the cosine of the zenith angle at the point where the signal pierces the shell, which gives an obliquity factor of up to about three at low elevations.

Single-frequency receivers correct the ionosphere with a broadcast model. GPS broadcasts the eight coefficients of the Klobuchar model, which describes the vertical delay as a half-cosine in local time; it typically removes about half of the delay. Galileo broadcasts coefficients for the NeQuick model, which is somewhat better. Dual-frequency receivers do far better by measuring the delay directly and forming the ionosphere-free combination, which removes the first-order effect completely. Second-order effects, caused by the Earth's magnetic field, amount to a few millimetres to a centimetre or two and are modelled only in the most precise processing.

At high latitudes, and therefore occasionally over Alberta and Montana when the auroral oval expands during storms, irregularities in the ionosphere cause scintillation: rapid fluctuations of amplitude and phase. Phase scintillation can make receivers lose lock and slip cycles on many satellites at once, which is what broke the RTK fixes on the storm day. Space weather services of Natural Resources Canada and of the United States National Oceanic and Atmospheric Administration publish forecasts and alerts; for critical work it is worth checking them before going to the field.

Worked problem

Slant ionospheric delay

The vertical TEC above CR1 in the early afternoon is 20 TEC units. A satellite is at 30° elevation. Using a thin shell at 350 km and an Earth radius of 6371 km, find the slant delay on L1 (1575.42 MHz) and on L5 (1176.45 MHz).

Show solution
  1. \[\sin z' = \frac{R}{R + h}\cos E = \frac{6371}{6721} \times \cos 30^\circ = 0.820\,93, \qquad z' = 55.18^\circ\]
  2. \[\text{STEC} = \frac{\text{VTEC}}{\cos z'} = \frac{20}{0.571\,0} = 35.03\ \text{TECU}\]
  3. \[I_1 = \frac{40.3 \times 35.03 \times 10^{16}}{(1.575\,42 \times 10^{9})^2} = 5.69\ \text{m}\]
  4. \[I_5 = I_1 \big(\tfrac{f_1}{f_5}\big)^2 \text{ with } \tfrac{f_1}{f_5} = 1.3391: \quad I_5 = 5.69 \times 1.7933 = 10.20\ \text{m}\]

Answer: The L1 code is delayed by about 5.7 m and the L5 code by about 10.2 m. The carrier phases are advanced by the same amounts. A broadcast model removing half the delay would leave almost 3 m on L1, which is why single-frequency stand-alone positions are limited to a few metres.

The troposphere

Below about 50 km, and mostly in the lowest 10 km, the neutral atmosphere delays all GNSS signals equally on every frequency, so the delay cannot be removed by combining frequencies. The zenith delay has two parts. The hydrostatic or dry part, about 2.3 m at sea level, depends on surface pressure and can be computed to a millimetre or two from it, for example with the Saastamoinen formula. It is smaller at higher sites because there is less atmosphere above them. The wet part, caused by water vapour, is typically 5 to 30 cm, varies quickly in space and time, and cannot be predicted accurately from surface measurements. Over the dry prairies it is often under 10 cm; in a humid summer thunderstorm it can exceed 25 cm.

The slant delay is the zenith delay multiplied by a mapping function of elevation, roughly \(1/\sin E\) at high elevations but growing more slowly than that near the horizon because of the Earth's curvature. Precise work uses separate hydrostatic and wet mapping functions derived from numerical weather models, such as the Vienna mapping functions or their empirical approximations. In precise processing the residual zenith wet delay is estimated as an unknown parameter every hour or so, together with horizontal gradients; the estimates are so good that they are used in weather forecasting.

The program below computes the standard-atmosphere pressure at CR1, about 910 hPa at 893 m, the Saastamoinen hydrostatic and wet zenith delays, and the slant delay at several elevations with a simple mapping function. It then computes the L1 ionospheric delay for three levels of vertical TEC and three elevations, and finally combines typical range error sizes into a user equivalent range error.

Tropospheric and ionospheric delays at CR1 and a range error budget.
# Atmospheric delays at the site and a user range error budget
import math

LAT, H = 49.6967306, 893.412                     # pillar CR1, ellipsoidal height used for the model
# Standard atmosphere at the site height
P = 1013.25 * (1 - 2.2557e-5 * H) ** 5.2568       # pressure, hPa
T = 288.15 - 0.0065 * H                          # temperature, K
e = 8.0                                          # partial pressure of water in the air on a dry prairie day, hPa
phi = math.radians(LAT)
zhd = 0.0022768 * P / (1 - 0.00266 * math.cos(2 * phi) - 0.00028 * H / 1000)   # Saastamoinen hydrostatic
zwd = 0.002277 * (1255 / T + 0.05) * e                                          # Saastamoinen wet
print("pressure", round(P, 1), "hPa  zenith hydrostatic", round(zhd, 3), "m  zenith wet", round(zwd, 3), "m")

def mapping(el_deg):                              # a simple continued-fraction style mapping function
    s = math.sin(math.radians(el_deg))
    return 1.0 / (s + 0.00143 / (math.tan(math.radians(el_deg)) + 0.0445))

for el in (90, 45, 30, 15, 10, 5):
    print("elevation", str(el).rjust(2), "deg  mapping", format(mapping(el), "6.3f"),
          "  slant troposphere", format((zhd + zwd) * mapping(el), "6.3f"), "m")

# Ionosphere: vertical TEC with a thin-shell obliquity factor at 350 km
R_E, h_ion = 6371.0, 350.0
f1 = 1575.42e6
for vtec in (5, 20, 60):
    for el in (90, 30, 10):
        z = math.asin(R_E / (R_E + h_ion) * math.cos(math.radians(el)))
        stec = vtec * 1e16 / math.cos(z)
        print("VTEC", str(vtec).rjust(2), "TECU, el", str(el).rjust(2), "deg: L1 delay", format(40.3 * stec / f1 ** 2, "6.2f"), "m")

# User equivalent range error (1 sigma, m) for a single-frequency and a dual-frequency receiver
budget = {
    "single-frequency": {"satellite clock and orbit": 0.6, "ionosphere after broadcast model": 2.5,
                         "troposphere after model": 0.2, "multipath": 0.6, "receiver noise": 0.3},
    "dual-frequency": {"satellite clock and orbit": 0.6, "ionosphere residual (ionosphere-free)": 0.1,
                       "troposphere after model": 0.2, "multipath": 0.6, "receiver noise": 0.5},
}
for mode, items in budget.items():
    uere = math.sqrt(sum(v * v for v in items.values()))
    print(mode, "UERE", round(uere, 2), "m -> horizontal 95 % with HDOP 0.94:", round(2 * 0.94 * uere, 1), "m;",
          "vertical 95 % with VDOP 1.47:", round(2 * 1.47 * uere, 1), "m")
Output
pressure 910.4 hPa  zenith hydrostatic 2.072 m  zenith wet 0.082 m
elevation 90 deg  mapping  1.000   slant troposphere  2.154 m
elevation 45 deg  mapping  1.411   slant troposphere  3.041 m
elevation 30 deg  mapping  1.991   slant troposphere  4.289 m
elevation 15 deg  mapping  3.797   slant troposphere  8.179 m
elevation 10 deg  mapping  5.552   slant troposphere 11.960 m
elevation  5 deg  mapping 10.205   slant troposphere 21.985 m
VTEC  5 TECU, el 90 deg: L1 delay   0.81 m
VTEC  5 TECU, el 30 deg: L1 delay   1.42 m
VTEC  5 TECU, el 10 deg: L1 delay   2.26 m
VTEC 20 TECU, el 90 deg: L1 delay   3.25 m
VTEC 20 TECU, el 30 deg: L1 delay   5.69 m
VTEC 20 TECU, el 10 deg: L1 delay   9.06 m
VTEC 60 TECU, el 90 deg: L1 delay   9.74 m
VTEC 60 TECU, el 30 deg: L1 delay  17.06 m
VTEC 60 TECU, el 10 deg: L1 delay  27.17 m
single-frequency UERE 2.66 m -> horizontal 95 % with HDOP 0.94: 5.0 m; vertical 95 % with VDOP 1.47: 7.8 m
dual-frequency UERE 1.01 m -> horizontal 95 % with HDOP 0.94: 1.9 m; vertical 95 % with VDOP 1.47: 3.0 m

The zenith tropospheric delay at CR1 is about 2.15 m, of which only 8 cm is wet on a dry day. At 15° elevation the slant delay is already 8.2 m, and at 5° it is 22 m, which shows why low satellites need good mapping functions or should be excluded. The ionosphere spans a much wider range, from under a metre at night overhead to 27 m at low elevation under very high TEC. Combined into a budget, a single-frequency receiver has a UERE of about 2.7 m, giving 95 % horizontal accuracy of about 5 m with the HDOP of Lesson 4, while a dual-frequency receiver has about 1 m and 2 m.

Multipath

Multipath is the arrival of reflected copies of a signal along with the direct one. The reflected signal travels a longer path and distorts the correlation peak, biasing the code measurement. Code multipath can reach several metres near large reflectors such as metal buildings, vehicles, fences and water surfaces, though it is usually a few decimetres in good sites. Carrier phase multipath is much smaller, limited to a quarter of a wavelength, about 5 cm, and usually a few millimetres, but it does not average out quickly: for a static antenna the reflection geometry changes slowly with the satellite's motion, so multipath appears as errors with periods of minutes, and with GPS it repeats every sidereal day.

Mitigation starts with site selection: avoid reflecting surfaces near the antenna, especially above it, and avoid setting up next to vehicles. Antenna design helps: geodetic antennas with ground planes or choke rings attenuate signals arriving from below the horizon and left-hand circularly polarized reflections. Receiver correlator designs reduce code multipath, and modern wideband signals such as L5 and Galileo E5 are inherently more resistant. Long observation sessions average the remaining errors, and elevation masks remove the satellites most affected. For permanent stations, multipath maps can be estimated and removed.

Receiver, antenna and hardware effects

Receiver noise in the tracking loops is typically a few decimetres for C/A code, a few centimetres for modern codes, and about a millimetre for carrier phase. Hardware delays in satellites and receivers differ between signals; for code they are expressed as differential code biases, a few nanoseconds, which affect single-frequency users and ionosphere estimation and are published by analysis centres. For carrier phase, the corresponding biases are what stop simple ambiguity resolution in precise point positioning and are the subject of Lesson 9. Antenna phase centre offsets and variations, introduced in Lesson 2, must be applied with calibrations, especially when different antenna types are combined. Finally, because GNSS signals are right-hand circularly polarized, rotating either antenna changes the measured phase; this phase wind-up is a few centimetres per rotation and matters for precise point positioning, where satellite antennas rotate as the satellites turn to keep their solar panels facing the Sun.

The moving ground

A geodetic receiver bolted to a pillar is not stationary. The solid Earth tide raises and lowers the ground by up to about 30 cm twice a day, with horizontal motions of a few centimetres. Ocean tides load the crust and depress coastal sites by up to several centimetres; inland in Alberta and Montana this ocean loading is only a few millimetres. The changing rotation axis causes a pole tide of up to about a centimetre. These effects are computed from conventional models and applied to coordinates so that a station's position refers to a conventional tide-free or mean-tide crust. Over a short baseline they are almost identical at both ends and cancel; for precise point positioning they must be modelled. Long-term plate motion, about 2 to 3 cm per year relative to the ITRF in North America, and slow vertical motions such as glacial isostatic adjustment are handled by reference frames and epochs, discussed in Lesson 9.

The error budget

Typical sizes of GNSS errors and their treatment. Values vary widely with conditions; the purpose of the table is to rank the effects.
Error sourceSize before correctionSingle-frequency, after modelsDual-frequency or differential
Satellite orbit and clock (broadcast)0.3–1 m0.3–1 mcancels over short baselines; 2–5 cm with precise products
Ionosphere1–30 m at L11–5 m (broadcast model)first order removed; mm to cm residual
Troposphere2.3–25 m0.1–0.5 m (model)cancels over short baselines; mm with estimation
Code multipath0.1–5 msamereduced by smoothing and antenna design
Phase multipath1–50 mmsameaverages with time; does not cancel
Receiver noise (code / phase)0.05–0.5 m / 1 mmsamesame
Antenna phase centremm to cmmm to cmremoved with calibrations
Solid Earth tideup to 0.3 musually ignoredcancels over short baselines; modelled in PPP

The budget explains the hierarchy of methods in the rest of this course. Stand-alone single-frequency positioning is limited by the ionosphere to a few metres; dual-frequency stand-alone positioning by broadcast orbits, clocks and code multipath to a metre or two. Differential code methods remove most of the common errors and reach decimetres to a metre. Carrier-phase methods, relative or with precise products, reach centimetres and millimetres, limited in the end by multipath, antenna models, the troposphere and the treatment of ambiguities.

Common mistakes

  • MistakeRemoving the troposphere with two frequencies.

    InsteadThe troposphere is non-dispersive at GNSS frequencies; it must be modelled or estimated.

  • MistakeAssuming the broadcast ionospheric model removes the ionosphere.

    InsteadThe Klobuchar model removes about half the delay; dual-frequency observations remove the first-order effect.

  • MistakeSetting up beside a vehicle or metal building.

    InsteadReflections cause code multipath of metres and phase multipath of millimetres to centimetres; choose open, reflection-free sites.

  • MistakeExpecting phase multipath to average out in a few minutes.

    InsteadIt varies with satellite geometry over tens of minutes; long sessions or repeat days are needed.

  • MistakeIgnoring space weather.

    InsteadGeomagnetic storms raise TEC and cause scintillation, cycle slips and lost RTK fixes; check forecasts for critical work.

Summary and key terms

  • Broadcast orbit and clock errors are typically 0.3–1 m and cancel over short baselines.
  • The ionosphere delays code and advances phase by 40.3 TEC/f²; dual-frequency combinations remove it.
  • Broadcast models such as Klobuchar remove about half the ionospheric delay.
  • The tropospheric delay is about 2.3 m at the zenith at sea level, mostly hydrostatic; the wet part is hard to predict and is estimated.
  • Mapping functions scale zenith delays to slant delays; low-elevation delays exceed 10 m.
  • Multipath biases code by up to metres and phase by millimetres; site selection and antenna design mitigate it.
  • Earth tides, loading and plate motion move the ground and must be modelled for precise work.
TEC
Total electron content: the number of free electrons in a column of unit cross-section along a signal path.
Klobuchar model
The broadcast GPS ionospheric model, which removes about half of the delay for single-frequency users.
Mapping function
A function of elevation that converts a zenith atmospheric delay to the slant delay.
Multipath
Reception of reflected signals along with the direct signal, biasing range measurements.
Scintillation
Rapid fluctuations of signal amplitude and phase caused by ionospheric irregularities.
Zenith wet delay
The part of the tropospheric delay caused by water vapour, measured at the zenith.

Practice problems

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

  1. How much does 10 TECU delay the L1 code?

    Show answer

    10 × 0.162 = 1.62 m.

  2. The zenith total delay is 2.3 m. Approximately what is the slant delay at 20° elevation with a 1/sin E mapping?

    Show answer

    2.3 / sin 20° = 6.7 m.

  3. Why does multipath not cancel in relative positioning?

    Show answer

    It depends on each antenna's surroundings and is not common to the two receivers.

  4. Which error is most important for a single-frequency stand-alone user?

    Show answer

    The residual ionospheric delay after the broadcast model.

  5. Over a 5 km baseline, why can the solid Earth tide be ignored?

    Show answer

    It is nearly identical at both ends and cancels in the baseline.

Lesson quiz · 5 questions

Score 60% or more to complete this lesson.

Take the quiz