# `Sidereon.GNSS.Ephemeris.Row`
[🔗](https://github.com/neilberkman/sidereon-ex/blob/main/lib/sidereon/gnss/ephemeris.ex#L64)

One sampled satellite state at one epoch in the unified ephemeris table.

`satellite_id` is the canonical RINEX token (e.g. `"G01"`); `epoch` is the
`NaiveDateTime` in GPST the cell was evaluated at. When `status` is `:ok`,
`x_m`/`y_m`/`z_m` are the ITRF/IGS ECEF position in meters and `clock_s` is the
satellite clock offset in seconds (positive = satellite clock ahead of system
time, see `Sidereon.GNSS.Ephemeris`). When `status` is `:no_ephemeris` the source
had no valid ephemeris at that epoch and the four value fields are `nil`; a
gap is never extrapolated.

# `t`

```elixir
@type t() :: %Sidereon.GNSS.Ephemeris.Row{
  clock_s: float() | nil,
  epoch: NaiveDateTime.t(),
  satellite_id: String.t(),
  status: :ok | :no_ephemeris,
  x_m: float() | nil,
  y_m: float() | nil,
  z_m: float() | nil
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
