コンテンツにスキップ

Raster DEM Source

raster-dem Source は、RGB エンコードされた標高タイルを記述します。次の両方を駆動します。

  • 地形メッシュ化: terrain レイヤーを介して、
  • 陰影起伏 / 標高ヒートマップ: raster レイヤーを介して(レイヤーが hillshade / elevationHeatmap の描画オプションを供給します)。

RGB→高さのデコードは elevationDecoder で設定します。

プロパティデフォルト説明
type"raster-dem"(必須)Source のタイプ。
urlstring(必須)タイル URL テンプレート({z}/{x}/{y} を含む)。
tmsbooleanfalseタイルスキームが Y 軸方向に反転しているか(TMS)。
elevationDecoderElevationDecoderdefault decoderRGB チャンネルをどのように高さの値へデコードするか。
tileSizenumber256DEM タイルのピクセルサイズ。
minZoomnumber0タイルが提供される最小ズームレベル。
maxZoomnumber20新しいタイルを要求する最大ズームレベル。
overscaledMaxZoomnumber24オーバースケールタイルを使用する最大ズーム。
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,
});
// 3D 地形として
view.addLayer({ type: "terrain", source: dem });
// 陰影起伏ラスターレイヤーとして(同じ Source を再利用)
view.addLayer({ type: "raster", source: dem, hillshade: { exaggeration: 1.5 } });

elevationDecoder は、タイルの RGB(A) チャンネルをどのように高さの値へデコードするかを記述します。

@navaramap/three は、一般的な標高タイルプロバイダー向けのデコーダ定数を提供しています。

定数ユースケース
JAPAN_GSI_ELEVATION_DECODER()国土地理院(GSI)の標高タイル
MAPBOX_ELEVATION_DECODER()Mapbox Terrain-RGB タイル
TERRARIUM_ELEVATION_DECODER()Terrarium 形式の標高タイル
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(),
});

明示的なデコーダオブジェクトを渡すこともできます。

プロパティ説明
r_scalernumber赤チャンネルのスケーラー。
g_scalernumber緑チャンネルのスケーラー。
b_scalernumber青チャンネルのスケーラー。
offsetnumber高さのオフセット。
max_offsetnumberオフセットの最大値。
min_offsetnumberオフセットの最小値。
boundarynumber境界値。
epsilonnumberイプシロン(微小値)。
{
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,
},
}