Reading a CSRS-PPP report

The .sum and .pos files from a two-hour static occupation, block by block.

Submit a RINEX file to NRCan's CSRS-PPP service and you get back a zip archive: a PDF report, a .sum file, a .pos file, and per-epoch clock and troposphere files. The PDF is what most people open. The .sum is the one worth reading — it holds the whole run on one screen, including the orbit and clock products the answer rests on.

Every block below is copied byte for byte from a real result set: a two-hour static occupation on the Washington University campus with an Emlid Reach RS2, processed by CSRS-PPP 3.54.2 in 2024. Later service versions can format or compute things differently. The input file is the one annotated in Reading a RINEX observation file.

The run

What was submitted, over what span, and how much of it was used.

VER 3.54.2 (2022-11-10)
NOW 2024-09-13 15:23:28.00
RNX rudolph_static_02hr.23O
MKR UNKNOWN
MOD STATIC
BEG 2023-09-13 17:08:00.00
END 2023-09-13 19:07:30.00
INT 30.00
EPO 240 240 35933
EXE 4 sec
OBS G C1C C2X L1C L2X
OBS R C1C C2C L1C L2C
VER
Software version. Version 3 resolves carrier-phase ambiguities to integers and version 2 did not, so two reports on the same data are not interchangeable.
NOW
When the data set was processed, in UTC, a year after this occupation.
MKR
Marker name, as read from the RINEX header. UNKNOWN means that field was left empty, so nothing in the report says which point was occupied.
MOD
STATIC solves one position for the whole session; kinematic solves one per epoch.
BEG END INT
First and last observation used, and the processing interval in seconds. NRCan solved one epoch every 30 s.
EPO
Three counts: epochs processed, epochs attempted, and epochs present in the RINEX file over that span. 240 of 240 succeeded. The third number is far larger because the receiver logged at 5 Hz over its own, longer span: the RINEX file runs from 17:07:51.2 to 19:07:37.6, and (35933 − 1) × 0.2 s is exactly that span.
OBS
The observables used, one line per constellation — GPS and GLONASS here, two frequencies each. Whatever else the receiver recorded did not enter this solution.

Products and models applied

SP3 EMR0DCBFIN_20232560000_01D_15M_ORB.SP3
CLK EMR0DCBFIN_20232560000_01D_30S_CLK.CLK
ERP EMR0DCBFIN_20232530000_07D_01D_ERP.ERP
BIA EMR0DCBFIN_20232560000_01D_01D_OSB.BIA
ADV EMR0DCBFIN_20232560000_01D_01D_ADV.ADV
ATX igs20_2303_nrcan.atx
...  VMF (3 lines), SNX (1 line)
ELV 7.5
TZD VMF1
REC EMLID REACH RS2
ANT EML_REACH_RS2   NONE
ARP    0.000    0.000    0.000
PCO G01  -0.001  0.002  0.135
PCO G02  -0.000 -0.000  0.137
...  PCO (2 lines), OTL (2 lines)
IAR 91.76%
AVF 1.000
APR RINEX
ELL GRS80
SP3 CLK ERP BIA
The precise satellite orbits, clocks, Earth rotation parameters and bias corrections the solution rests on, named file by file. The PDF report calls this set NRCan/IGS Final. These filenames are what make a PPP solution reproducible.
ELV TZD
Elevation mask in degrees, and the a priori troposphere model. Observations below 7.5° above the horizon were not used.
REC ANT ARP
Receiver, antenna and antenna reference point, all read from the RINEX header. CSRS-PPP has no other way to know how high the antenna sat, so the reported height refers to wherever the header says the reference point was. Check this triple against your field notes before you use the height. The field descriptions shipped with the results list the three numbers as north, east, up, while the PDF report labels them H, E, N. Confirm which order you are reading.
PCO
Phase-center offsets for this antenna, from the ANTEX file, one line per system and frequency. The third number is the vertical offset from the reference point to the phase center: 0.135 m on L1, 0.137 m on L2.
IAR
Percentage of carrier-phase observations whose ambiguities were fixed to integers. Partial resolution is the norm. NRCan's own tutorial shows a 15-minute session at 68.54 % and treats the result as sound.
APR ELL
Where the a priori position came from, and the ellipsoid used to convert between Cartesian and geodetic coordinates. RINEX means the header, which is the next block.

The position block

The answer, twice: Cartesian on the first three rows, geodetic on the last three.

POS CRD  SYST        EPOCH          A_PRIORI         ESTIMATED       DIFF SIGMA(95%) CORRELATIONS
POS   X NAD83 23:256:65265       -26509.4860       -26509.6397    -0.1537     0.0071  1.0000
POS   Y NAD83 23:256:65265     -4987782.3281     -4987781.2374     1.0907     0.0237 -0.0287  1.0000
POS   Z NAD83 23:256:65265      3962072.6564      3962070.6041    -2.0523     0.0193  0.0816 -0.8312  1.0000
POS LAT NAD83 23:256:65265    38 38 57.28415    38 38 57.25425    -0.9221     0.0087  1.0000
POS LON NAD83 23:256:65265   -90 18 16.26326   -90 18 16.26986    -0.1595     0.0071  0.0912  1.0000
POS HGT NAD83 23:256:65265          145.6343          143.5014    -2.1329     0.0293 -0.0281  0.0679  1.0000

A_PRIORI — the position in the RINEX header

The three X Y Z values under A_PRIORI are not a survey. They are whatever position was written into the RINEX header as the marker's approximate location — typically an autonomous fix the receiver computes for itself in the field, though RINEX does not record how a given value was obtained. That header line reads:

   -26509.4860 -4987782.3281  3962072.6564                  APPROX POSITION XYZ 

Digit for digit the same three numbers, which is what APR RINEX promised.

DIFF — how far the answer moved

DIFF is the estimate minus the a priori, in meters, including on the latitude and longitude rows where the coordinates themselves are printed as degrees, minutes and seconds. Here the solution moved 0.92 m south, 0.16 m west and 2.13 m down — 0.94 m horizontally, 2.33 m in three dimensions.

A move of a couple of meters is the service working, not a problem. How far it moves depends on how good the receiver's autonomous fix was, and says nothing about the quality of the solution; for that, read SIGMA(95%).

SIGMA(95%) — the confidence level

This column is how sure NRCan is about its own answer, stated at 95 %. A 95 % value is about 1.96 times one standard deviation. The latitude sigma of 0.0087 m at 95 % is about 0.0044 m at 1σ. Many instrument datasheets and software outputs quote 1σ instead, so setting a CSRS-PPP number beside one of those makes the PPP solution look twice as bad as it is.

SYST and EPOCH — the frame line

SYST reads NAD83 on every row and EPOCH reads 23:256:65265: year 2023, day of year 256, second 65265 of the day, in GPS time — the RINEX header declares GPS on its TIME OF FIRST OBS line, and the .sum's own BEG and END are in that same system. That is 18:07:45 GPST, the midpoint of the 17:08:00 to 19:07:30 observation — and 18:07:27 UTC, since GPS time ran 18 s ahead of UTC in 2023. NRCan's PDF report writes the same thing as NAD83(CSRS) (2023.7).

So the coordinate is realized at the moment it was observed, not at the fixed epoch a control network or a basemap is published on.

CORRELATIONS

The lower triangle of the correlation matrix, read row by row: the Y row gives the X–Y correlation then its own 1.0000, the Z row gives X–Z and Y–Z, and so on. The −0.8312 between Y and Z follows from where the site is. At longitude −90° 18′ the local vertical lies almost entirely in the Y–Z plane and barely touches the X axis. On the geodetic rows the latitude–longitude correlation is 0.0912, which is what tilts the error ellipse below.

Plan view of the two-hour occupation. The solution sits 0.94 m from the a priori position taken from the RINEX header, while its own 95 % error ellipse has semi-major and semi-minor axes of 11 and 9 millimeters — the correction is about 85 times the uncertainty.
The horizontal shift and the 95 % error ellipse, drawn from the position block. The ellipse is not printed in the report: it is the two-dimensional 95 % region implied by the latitude and longitude sigmas and their correlation, and it reproduces the semi-axes and the azimuth on NRCan's PDF report to the printed precision. Generated by scripts/guides/csrs-ppp-report_figure.py.

Orthometric height and map projection

PRJ TYPE ZONE    EASTING     NORTHING   SCALE_POINT   SCALE_COMBINED HEMISPHERE
PRJ  UTM   15 734573.626  4281300.785    1.00027765       1.00025513          N
PRJ  MTM OUTSIDE_PROJ_LIMIT
OHT     SYST    MODEL             HEIGHT
OHT   CGVD28 HT2_1997 OUTSIDE_GRID_LIMIT
GHT OUTSIDE_GRID_LIMIT

The height in the position block is ellipsoidal: measured from the GRS80 ellipsoid named on the ELL line, not from anything a level would find. The OHT block is where an orthometric height would appear, converted through a geoid model, and the GHT line is the geoid height used to do it.

Both read OUTSIDE_GRID_LIMIT here, and the reason is on the same line: the vertical datum is CGVD28 and the model is HT2_1997, both Canadian. This point is in Missouri, outside the grid. PRJ MTM fails the same way, since the Modified Transverse Mercator zones are Canadian too. The UTM row is filled in, because UTM zone 15 covers the site.

This result shows only that a point outside Canada — outside the coverage of CGVD28/HT2_1997, specifically — gets an ellipsoidal height and no orthometric conversion. Converting it to an orthometric height on a US vertical datum takes a US geoid model, applied separately; nothing in this report does that for you. The difference between the two is the geoid height, the number the GHT line would have carried had the point fallen inside the model.

Residuals and rejected observations

Root-mean-square residuals per signal, in meters.

RES G C1C 0.643  
RES G C2X 0.707  
RES G L1C 0.005  
RES G L2X 0.003  
RES R C1C 0.734  
RES R C2C 0.722  
RES R L1C 0.005  
RES R L2C 0.003  

Code residuals run 0.64 to 0.73 m; carrier-phase residuals run 0.003 to 0.005 m. Two orders of magnitude separate them, and that gap is why precise point positioning works: the code observations give an unambiguous range that is noisy, and the phase observations give a precise one whose whole-cycle count has to be recovered.

Then a row per satellite, counting what happened to it.

FLG PRN    EPO    TRK    CLK    EPH    ELV    YAW    DCB    SLP    MIS    RES
FLG G08    159     51      0      0     20      0      0      8      0      0
FLG G10    240      0      0      0      0      0      0      0      0      0
...  26 more satellite rows
FLG GXX   1866    420      0      0    126      0      0     15      0      0
FLG RXX   1537    444      0      0    231      0      0     12      0      0

EPO counts the epochs where the satellite was used. Most of the other columns count a reason it was not: TRK missing observations, CLK and EPH missing clock or orbit corrections, ELV below the elevation mask, YAW an eclipse maneuver, DCB a missing bias correction, MIS and RES blunders and large residuals. SLP is different: it counts cycle slips detected on that satellite, not epochs rejected because of one. G08 was used at 159, lost tracking at 51, sat below 7.5° for 20, and had 8 cycle slips detected.

The GXX and RXX rows total each constellation: 1866 GPS plus 1537 GLONASS satellite-epochs is 3403, and summing the NSV column over all 240 rows of the .pos file gives the same 3403 — 14.2 satellites per epoch on average, ranging from 12 to 16.

The .pos file

One row per epoch, plus two summary rows. The header row names the columns.

DIR FRAME  STN   DAYofYEAR YEAR-MM-DD HR:MN:SS.SS NSV GDOP RMSC(m) RMSP(m)       DLAT(m)       DLON(m)       DHGT(m) SDLAT(95%) SDLON(95%) SDHGT(95%) LATDD LATMN    LATSS LONDD LONMN    LONSS     HGT(m)
FWD NAD83 rudo  256.713889 2023-09-13 17:08:00.00  13  1.4   0.520  0.0000       -2.1029        0.8311       -7.3583     5.7730     4.2483     9.8282    38    38 57.21596   -90    18 16.22889   138.2760
...  238 more FWD rows, one per epoch
FWD NAD83 rudo  256.796875 2023-09-13 19:07:30.00  15  1.3   0.443  0.0038       -0.9280       -0.1344       -2.1388     0.0046     0.0076     0.0118    38    38 57.25406   -90    18 16.26882   143.4955
FIX NAD83 rudo  256.796875 2023-09-13 19:07:30.00   0  0.0   0.000  0.0000       -0.9222       -0.1596       -2.1330     0.0024     0.0019     0.0080    38    38 57.25425   -90    18 16.26986   143.5013
SCA NAD83 rudo  256.796875 2023-09-13 19:07:30.00   0  0.0   0.000  0.0000       -0.9222       -0.1596       -2.1330     0.0087     0.0071     0.0293    38    38 57.25425   -90    18 16.26986   143.5013

DIR is the processing direction. The 240 FWD rows are the forward filter walking through the session one epoch at a time. The last two rows are the session's answer: FIX the final estimated position, and SCA the same position with scaled sigmas. The coordinates are identical and the sigmas are 3.6 to 3.7 times larger. The SIGMA(95%) column in the summary file matches the SCA row exactly, so the scaled figures are the ones the report publishes; NRCan's tutorial says static sigmas are scaled to give more realistic values, and does not print the factor.

DLAT DLON DHGT are differences from the same a priori as the summary file, in meters north, east and up. SDLAT SDLON SDHGT are the 95 % standard deviations of that epoch's estimate, not of the session — at the first epoch they are 5.8, 4.2 and 9.8 m, and at the last forward epoch 0.0046, 0.0076 and 0.0118 m.

The rest of the row is per-epoch quality and the position itself: NSV satellites used, GDOP geometric dilution of precision, RMSC and RMSP the code and phase residuals for that epoch, then latitude and longitude in degrees, minutes and seconds and the ellipsoidal height.

Checks before you use the coordinate

  1. Read SYST and EPOCH, and carry both with the coordinate. A position without its frame and epoch is a number, not a location.
  2. Divide SIGMA(95%) by about 1.96 before comparing it with any figure quoted at 1σ — that holds when both quantities are comparable marginal Gaussian uncertainties, not, say, a 1σ range on a differently distributed quantity.

Field definitions quoted here come from output_descriptions.txt, which NRCan included in this result archive. The service and its documentation are at webapp.geod.nrcan.gc.ca. Statements about ambiguity resolution and sigma scaling are from S. Banville, CSRS-PPP Version 3: Tutorial, Canadian Geodetic Survey, Natural Resources Canada, last updated 2020-08-25.

GNSS surveying at the lab

The lab runs GNSS control surveys, base-station occupations, and PPK workflows, and postprocesses the results.