pub fn sample(
source: &dyn ObservableEphemerisSource,
satellites: &[GnssSatelliteId],
start_j2000_s: f64,
stop_j2000_s: f64,
step_s: f64,
) -> Result<Vec<EphemerisSampleRow>, ObservablesError>Expand description
Sample an ephemeris source on a regular inclusive time grid.
Rows are returned in satellite-major order: for each satellite in
satellites, the function emits start_j2000_s, start_j2000_s + step_s,
and so on up to stop_j2000_s, with a final row snapped to stop_j2000_s
when the step does not land exactly on the end. If start_j2000_s > stop_j2000_s, the returned grid is empty.
Missing satellite data and out-of-fit-interval epochs are represented as
EphemerisSampleStatus::Gap rows, not as errors. Invalid inputs and invalid
source states remain errors.