Sidereon.Terrain (Sidereon v0.22.0)

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.

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

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(), keyword()) ::
  {: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()}], keyword()) ::
  [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.

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.