Skip to content
Guillaume W. Bres edited this page May 29, 2024 · 10 revisions

Single Point Positioning (SPP)

SPP is the "simplest" resolution method, it requires observation of Pseudo Range (PR) code on a single signal.
Since it does take the signal phase into account, it is roughly x100 less accurate than PPP.

It is the easiest strategy to comply with, because it only requires a single signal.
Our framework will elect the best candidate within the preset criteria.
Unless you apply stringent criteria on signal quality, every single Epoch is taken into account in the navigation process.

By tuning the configuration scripts, providing high quality data on the input and long period of observations, we're able to obtain very good results.

SPP versus PPP

  • Single carrier method: need to gather fewer signals
  • Providing L2 or L5 observations will enable more candidates but will not improve overall performances
  • Phase observation is not required: we're most likely capable to resolve for every single Epoch. This means more accumulation in the navigation filter, but we also start farther from truth.
  • No Ionosphere contribution cancellation, its impact can only be modeled
  • Troposphere is modeled, but we will soon have the ability to inject it in a Kalman filter (if Navigation filter is set to Kalman), which is typically implied in PPP strategy
  • Precise products like SP3 and Clock RINEX are originally not intended to be loaded, but you can provide them and directly reach more accurate solutions

SPP versus CPP

  • Single carrier method: need to gather fewer signals
  • Ionosphere bias is modeled, less performant and not ideal. You should prefer working with RINEX4 files because they offer better modeling and possibly avoids a discontinuity when working with several RINEX files (more than 24h of data). RINEX3 is still the most common use case, and RINEX2 should be avoided.

Basic SPP using GPS

It is possible to deploy the SPP strategy on a PPP compliant context, it will naturally exhbit very good results.
The Phase observations are always discarded, and navigation is still based on a single signal

rinex-cli \
    -f test_resources/CRNX/V3/ESBC00DNK_R_20201770000_01D_30S_MO.crx.gz \
    -f test_resources/CLK/V3/GRG0MGXFIN_20201770000_01D_30S_CLK.CLK.gz \
    -f test_resources/NAV/V3/ESBC00DNK_R_20201770000_01D_MN.rnx.gz \
    -f test_resources/SP3/GRG0MGXFIN_20201770000_01D_15M_ORB.SP3.gz \
    -P GPS \
    -p -c config/survey/spp_lsq.json \
    | tee logs.txt

In the previous example, the solutions are expressed in GPST but you can modify that in the configuration file.

Basic SPP using Galileo

Galileo is about x10 more precise than GPS, when switching to this constellation,

rinex-cli \
    -f test_resources/CRNX/V3/ESBC00DNK_R_20201770000_01D_30S_MO.crx.gz \
    -f test_resources/CLK/V3/GRG0MGXFIN_20201770000_01D_30S_CLK.CLK.gz \
    -f test_resources/NAV/V3/ESBC00DNK_R_20201770000_01D_MN.rnx.gz \
    -f test_resources/SP3/GRG0MGXFIN_20201770000_01D_15M_ORB.SP3.gz \
    -P GAL \
    -p -c config/survey/spp_lsq.json \
    | tee logs.txt

What's next

Clone this wiki locally