# `Sidereon.GNSS.RTK.RinexArc`
[🔗](https://github.com/neilberkman/sidereon-ex/blob/main/lib/sidereon/gnss/rtk.ex#L65)

A single-frequency RTK arc built from paired RINEX observation handles and
an SP3 ephemeris handle.

The resource retains the core-generated arc. Accessors expose the core
epoch ordering and observation lists without re-reading either input file.

# `epoch`

```elixir
@type epoch() :: %{
  :base =&gt; [map()],
  :rover =&gt; [map()],
  :satellite_positions_m =&gt; %{
    required(String.t()) =&gt; {float(), float(), float()}
  },
  :base_satellite_positions_m =&gt; %{
    required(String.t()) =&gt; {float(), float(), float()}
  },
  :rover_satellite_positions_m =&gt; %{
    required(String.t()) =&gt; {float(), float(), float()}
  },
  optional(:velocity_mps) =&gt; {float(), float(), float()} | nil,
  optional(:prediction_time_s) =&gt; float() | nil
}
```

Core-generated single-frequency RTK epoch.

# `t`

```elixir
@type t() :: %Sidereon.GNSS.RTK.RinexArc{handle: reference()}
```

Single-frequency RINEX RTK arc resource handle.

# `epoch_count`

```elixir
@spec epoch_count(t()) :: non_neg_integer()
```

Return the retained epoch count.

# `epochs`

```elixir
@spec epochs(t()) :: [epoch()]
```

Return core-generated epochs in engine order.

# `offset_pairs`

```elixir
@spec offset_pairs(t()) :: [{String.t(), float()}]
```

Return code-to-phase offsets in the core's deterministic map order.

# `offsets_m`

```elixir
@spec offsets_m(t()) :: %{required(String.t()) =&gt; float()}
```

Return code-to-phase offsets as a map keyed by core ambiguity id.

# `skipped_epoch_count`

```elixir
@spec skipped_epoch_count(t()) :: non_neg_integer()
```

Return the base-epoch count skipped by the core builder.

# `to_epochs`

```elixir
@spec to_epochs(t()) :: [epoch()]
```

Alias for `epochs/1`, useful when passing the arc to a solver.

# `wavelength_pairs`

```elixir
@spec wavelength_pairs(t()) :: [{String.t(), float()}]
```

Return ambiguity wavelengths in the core's deterministic map order.

# `wavelengths_m`

```elixir
@spec wavelengths_m(t()) :: %{required(String.t()) =&gt; float()}
```

Return ambiguity wavelengths as a map keyed by core ambiguity id.

---

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