Raster DEM Source
raster-dem Source は、RGB エンコードされた標高タイルを記述します。次の両方を駆動します。
- 地形メッシュ化:
terrainレイヤーを介して、 - 陰影起伏 / 標高ヒートマップ:
rasterレイヤーを介して(レイヤーがhillshade/elevationHeatmapの描画オプションを供給します)。
RGB→高さのデコードは elevationDecoder で設定します。
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
type | "raster-dem" | (必須) | Source のタイプ。 |
url | string | (必須) | タイル URL テンプレート({z}/{x}/{y} を含む)。 |
tms | boolean | false | タイルスキームが Y 軸方向に反転しているか(TMS)。 |
elevationDecoder | ElevationDecoder | default decoder | RGB チャンネルをどのように高さの値へデコードするか。 |
tileSize | number | 256 | DEM タイルのピクセルサイズ。 |
minZoom | number | 0 | タイルが提供される最小ズームレベル。 |
maxZoom | number | 20 | 新しいタイルを要求する最大ズームレベル。 |
overscaledMaxZoom | number | 24 | オーバースケールタイルを使用する最大ズーム。 |
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 } });Elevation Decoder
Section titled “Elevation Decoder”elevationDecoder は、タイルの RGB(A) チャンネルをどのように高さの値へデコードするかを記述します。
定義済みの定数
Section titled “定義済みの定数”@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(),});カスタムデコーダ
Section titled “カスタムデコーダ”明示的なデコーダオブジェクトを渡すこともできます。
| プロパティ | 型 | 説明 |
|---|---|---|
r_scaler | number | 赤チャンネルのスケーラー。 |
g_scaler | number | 緑チャンネルのスケーラー。 |
b_scaler | number | 青チャンネルのスケーラー。 |
offset | number | 高さのオフセット。 |
max_offset | number | オフセットの最大値。 |
min_offset | number | オフセットの最小値。 |
boundary | number | 境界値。 |
epsilon | number | イプシロン(微小値)。 |
{ 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, },}