Sidereon.Terrain (Sidereon v0.29.2)

Copy Markdown View Source

DTED terrain loading and elevation lookup.

Summary

Functions

Open a DTED terrain directory.

Open a DTED terrain directory or raise.

Look up terrain height at {longitude_deg, latitude_deg}.

Look up one ORTHOMETRIC terrain height in meters or raise.

Look up a batch of terrain heights.

Look up a batch of ORTHOMETRIC terrain heights in meters or raise.

Alias for height/4, matching the Rust/Python/WASM height_m name.

Look up terrain height with explicit lookup options.

Load one DTED tile from disk.

Load one DTED tile or raise.

Read the nearest posting elevation from a loaded DTED tile.

Read one ORTHOMETRIC tile posting height in meters or raise.

Types

interpolation()

@type interpolation() :: :bilinear | :nearest_posting

lookup_options()

@type lookup_options() :: keyword() | Sidereon.Terrain.DtedLookupOptions.t()

Functions

dted(root)

@spec dted(String.t()) :: {:ok, Sidereon.Terrain.Dted.t()} | {:error, term()}

Open a DTED terrain directory.

The returned handle loads tiles lazily as lookups request them.

dted!(root)

Open a DTED terrain directory or raise.

height(dted, longitude_deg, latitude_deg, opts \\ [])

@spec height(Sidereon.Terrain.Dted.t(), number(), number(), lookup_options()) ::
  {:ok, float()} | {:error, atom()}

Look up terrain height at {longitude_deg, latitude_deg}.

Returns {:ok, height_m} in meters above the DTED ORTHOMETRIC vertical datum, or {:error, reason}. Points outside cached DTED coverage return 0.0 from the core terrain model. Longitude is first by design.

height!(terrain, longitude_deg, latitude_deg, opts \\ [])

Look up one ORTHOMETRIC terrain height in meters or raise.

height_batch(dted, points, opts \\ [])

@spec height_batch(
  Sidereon.Terrain.Dted.t(),
  [{number(), number()}],
  lookup_options()
) ::
  [ok: float(), error: atom()] | {:error, term()}

Look up a batch of terrain heights.

points is a list of {longitude_deg, latitude_deg} pairs. The returned list has one {:ok, height_m} or {:error, reason} entry per input, preserving order. Heights are meters above the DTED ORTHOMETRIC vertical datum.

height_batch!(terrain, points, opts \\ [])

Look up a batch of ORTHOMETRIC terrain heights in meters or raise.

height_m(terrain, longitude_deg, latitude_deg, opts \\ [])

@spec height_m(Sidereon.Terrain.Dted.t(), number(), number(), lookup_options()) ::
  {:ok, float()} | {:error, atom()}

Alias for height/4, matching the Rust/Python/WASM height_m name.

height_m_with_options(terrain, longitude_deg, latitude_deg, opts)

@spec height_m_with_options(
  Sidereon.Terrain.Dted.t(),
  number(),
  number(),
  lookup_options()
) ::
  {:ok, float()} | {:error, atom()}

Look up terrain height with explicit lookup options.

load_tile(path)

@spec load_tile(String.t()) :: {:ok, Sidereon.Terrain.DtedTile.t()} | {:error, term()}

Load one DTED tile from disk.

load_tile!(path)

Load one DTED tile or raise.

tile_elevation(dted_tile, longitude_deg, latitude_deg)

@spec tile_elevation(Sidereon.Terrain.DtedTile.t(), number(), number()) ::
  {:ok, integer()} | {:error, atom()}

Read the nearest posting elevation from a loaded DTED tile.

Returns an integer height in meters above the DTED ORTHOMETRIC vertical datum. Longitude is first.

tile_elevation!(tile, longitude_deg, latitude_deg)

Read one ORTHOMETRIC tile posting height in meters or raise.