# `Sidereon.Terrain.MmapTerrain.Egm96FifteenMinuteGeoid`
[🔗](https://github.com/neilberkman/sidereon-ex/blob/main/lib/sidereon/terrain/mmap_terrain.ex#L252)

Loaded EGM96 15-minute `WW15MGH.DAC` geoid grid.

This grid is only used when a caller explicitly chooses the
`:egm96_fifteen_minute` terrain geoid model. Missing files return a typed
`TerrainDatumError` and do not fall back to the embedded 1-degree grid.

# `t`

```elixir
@type t() :: %Sidereon.Terrain.MmapTerrain.Egm96FifteenMinuteGeoid{
  handle: reference()
}
```

Loaded EGM96 15-minute geoid handle.

# `from_ww15mgh_dac_bytes`

```elixir
@spec from_ww15mgh_dac_bytes(binary()) ::
  {:ok, t()}
  | {:error, Sidereon.Terrain.MmapTerrain.TerrainDatumError.t() | term()}
```

Load `WW15MGH.DAC` bytes as an EGM96 15-minute geoid grid.

# `from_ww15mgh_dac_path`

```elixir
@spec from_ww15mgh_dac_path(String.t()) ::
  {:ok, t()}
  | {:error, Sidereon.Terrain.MmapTerrain.TerrainDatumError.t() | term()}
```

Load a `WW15MGH.DAC` path as an EGM96 15-minute geoid grid.

If the file is absent, the result is
`{:error, %TerrainDatumError{kind: :missing_egm96_dac}}` with the path and a
remediation string.

---

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