Orbis.GNSS.PPPCorrections (Orbis v0.30.0)

Copy Markdown View Source

Precomputed, state-independent PPP per-range corrections for the static-arc float/fixed solve: solid-earth tide, carrier-phase wind-up, and satellite antenna PCO/PCV.

All three depend only on epoch geometry (Sun/Moon direction, satellite position, and a fixed reference receiver position), not on the estimated receiver coordinates, so they are computed once before the Gauss-Newton loop at the seed/approx position and looked up by the row builders and the shared range_corrections_m chokepoint. The Rust core owns the modeling and orchestration; this module keeps the Orbis API shape, marshals parsed ANTEX calibration data across the NIF, and rebuilds the unchanged public maps.

Summary

Functions

Build the precomputed correction tables for the arc.

Empty correction tables (no precomputed corrections).

Types

t()

@type t() :: %{
  tide: %{optional(NaiveDateTime.t()) => vec3()},
  windup_m: %{optional({String.t(), NaiveDateTime.t()}) => float()},
  sat_pco_ecef: %{optional({String.t(), NaiveDateTime.t()}) => vec3()},
  sat_pcv_m: %{optional({String.t(), NaiveDateTime.t()}) => float()}
}

vec3()

@type vec3() :: {float(), float(), float()}

Functions

build(sp3, epochs, ref_pos, config)

@spec build(Orbis.GNSS.SP3.t(), [map()], vec3(), keyword() | map()) :: t()

Build the precomputed correction tables for the arc.

config keys (all optional; absent = that correction is off):

  • :solid_earth_tide - true to compute the per-epoch tide displacement.
  • :phase_windup - true to compute per-(sat,epoch) wind-up metres.
  • :satellite_antenna - %{antex: %Antex{}, freq1: "G01", freq2: "G02"} to compute per-(sat,epoch) satellite PCO (ECEF vector) and nadir PCV (metres).

ref_pos is the reference receiver ECEF {x,y,z} (the solve seed/approx).

empty()

@spec empty() :: t()

Empty correction tables (no precomputed corrections).