pub struct Dop {
pub gdop: f64,
pub pdop: f64,
pub hdop: f64,
pub vdop: f64,
pub tdop: f64,
pub system_tdops: Vec<(GnssSystem, f64)>,
}Expand description
The dilution-of-precision scalars for a geometry.
Each is dimensionless: the standard deviation of the solution component is the corresponding DOP times the (range) measurement standard deviation. The position split is in the local ENU frame at the receiver.
Produced by dop for a single receiver-clock state and by the positioning
pipeline’s multi-clock geometry path for a multi-system state; the field
meanings below cover both.
Fields§
§gdop: f64Geometric DOP: the square root of the trace of the cofactor matrix over every state - the three position coordinates and every clock (one for a single-system solve, one per constellation for a multi-system solve).
pdop: f64Position DOP: sqrt(qE + qN + qU) over the ENU position block.
hdop: f64Horizontal DOP: sqrt(qE + qN).
vdop: f64Vertical DOP: sqrt(qU).
tdop: f64Time (clock) DOP: the square root of the reference clock’s cofactor
variance (Q[3][3]). With several clocks this is the first (reference)
system’s clock; the others enter gdop through the trace.
system_tdops: Vec<(GnssSystem, f64)>Per-system time DOP: one entry per receiver-clock column, (system, sqrt(Q[3+i][3+i])) for the constellation that owns clock column i.
Entry 0 is the reference clock and its value always equals
tdop.
The multi-GNSS geometry path (dop_multi) is given the system that owns
each clock column and tags every entry, so this is exactly the tagged
Vec<(GnssSystem, f64)> shape the positioning layer’s system_tdops
uses: a consumer can pair a Dop with an SPP solution without
re-tagging. The system-agnostic single-clock dop has no
constellation context, so it leaves this empty - read
tdop for its lone clock.
Trait Implementations§
impl StructuralPartialEq for Dop
Auto Trait Implementations§
impl Freeze for Dop
impl RefUnwindSafe for Dop
impl Send for Dop
impl Sync for Dop
impl Unpin for Dop
impl UnsafeUnpin for Dop
impl UnwindSafe for Dop
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Scalar for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.