Skip to content

Raster DEM Source

A raster-dem source describes RGB-encoded elevation tiles. It powers both:

  • terrain meshing — via a terrain layer, and
  • hillshade / elevation-heatmap — via a raster layer (the layer supplies the hillshade / elevationHeatmap render options).

The RGB→height decoding is configured by elevationDecoder.

PropertyTypeDefaultDescription
type"raster-dem"(required)Source type.
urlstring(required)Tile URL template (contains {z}/{x}/{y}).
tmsbooleanfalseWhether the tile scheme is flipped along the Y axis (TMS).
elevationDecoderElevationDecoderdefault decoderHow RGB channels decode into a height value.
tileSizenumber256Pixel size of a DEM tile.
minZoomnumber0Minimum zoom level tiles are provided for.
maxZoomnumber20Maximum zoom level new tiles are requested for.
overscaledMaxZoomnumber24Maximum zoom overscaled tiles are used up to.
import ThreeView, { TERRARIUM_ELEVATION_DECODER } from "@navaramap/three";
const dem = view.addSource({
type: "raster-dem",
url: "https://example.com/dem/{z}/{x}/{y}.png",
elevationDecoder: TERRARIUM_ELEVATION_DECODER(),
tileSize: 512,
maxZoom: 17,
});
// As 3D terrain
view.addLayer({ type: "terrain", source: dem });
// As a hillshade raster layer (same source reused)
view.addLayer({ type: "raster", source: dem, hillshade: { exaggeration: 1.5 } });

The elevationDecoder describes how the tile’s RGB(A) channels decode into a height value.

@navaramap/three provides decoder constants for common elevation tile providers:

ConstantUse case
JAPAN_GSI_ELEVATION_DECODER()Japan’s Geospatial Information Authority (GSI) elevation tiles
MAPBOX_ELEVATION_DECODER()Mapbox Terrain-RGB tiles
TERRARIUM_ELEVATION_DECODER()Terrarium format elevation tiles
import ThreeView, { JAPAN_GSI_ELEVATION_DECODER } from "@navaramap/three";
view.addSource({
type: "raster-dem",
url: "https://cyberjapandata.gsi.go.jp/xyz/dem_png/{z}/{x}/{y}.png",
elevationDecoder: JAPAN_GSI_ELEVATION_DECODER(),
});

You can also pass an explicit decoder object:

PropertyTypeDescription
r_scalernumberRed channel scaler.
g_scalernumberGreen channel scaler.
b_scalernumberBlue channel scaler.
offsetnumberHeight offset.
max_offsetnumberMaximum offset value.
min_offsetnumberMinimum offset value.
boundarynumberBoundary value.
epsilonnumberEpsilon (small value).
{
elevationDecoder: {
r_scaler: 256.0,
g_scaler: 1.0,
b_scaler: 1.0 / 256.0,
offset: -32768.0,
max_offset: 8848.0,
min_offset: -11034.0,
boundary: 0.01,
epsilon: 0.001,
},
}