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

One satellite row in an ARAIM geometry snapshot.

`:line_of_sight` is an ECEF receiver-to-satellite unit vector, and
`:elevation_rad` is the receiver elevation angle in radians.

# `t`

```elixir
@type t() :: %Sidereon.GNSS.ARAIM.Row{
  elevation_rad: float(),
  id: String.t(),
  line_of_sight: {float(), float(), float()} | [float()] | map(),
  system: String.t()
}
```

# `from_az_el_deg`

```elixir
@spec from_az_el_deg(
  String.t(),
  number(),
  number(),
  Sidereon.GNSS.ARAIM.Geometry.receiver(),
  atom() | String.t() | nil
) :: {:ok, t()} | {:error, term()}
```

Build a row from receiver-relative azimuth and elevation in degrees.

Azimuth is clockwise from north, elevation is above the local horizon, and
`receiver` is `{lat_rad, lon_rad, height_m}`.

# `new`

```elixir
@spec new(
  String.t(),
  {number(), number(), number()} | [number()] | map(),
  number(),
  atom() | String.t() | nil
) :: t()
```

Build a satellite geometry row.

`line_of_sight` is dimensionless ECEF `{e_x, e_y, e_z}` and
`elevation_rad` is radians. If `system` is omitted, it is derived from the
satellite token's leading letter.

---

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