このトピックでは、ST_AsMVT3D関数について説明します。 この関数は、mvtgeomデータのバイナリ表現をMapbox Vector Tile (MVT) 形式で返します。
構文
構文1
bytea ST_AsMVT3D(anyelement set row);
構文2
bytea ST_AsMVT3D(anyelement row, text name);
構文3
bytea ST_AsMVT3D(anyelement row, text name, integer extent);
構文4
bytea ST_AsMVT3D(anyelement row, text name, integer extent, text geom_name);
構文5
bytea ST_AsMVT3D(anyelement row, text name, integer extent, text geom_name, text feature_id_name);
Parameters
パラメーター | 説明 |
row | 少なくとも1つの3Dジオメトリ列を含む行。 |
name | レイヤーの名前。 デフォルト値:デフォルト |
extent | 画面スペース内のタイルの数。 有効な値: 256〜8192。 デフォルト値: 4096 |
geom_name | 行のジオメトリ列の名前。 デフォルトでは、最初のジオメトリ列の名前が使用されます。 |
feature_id_name | 行の [機能ID] 列の名前。 このパラメーターがNULLまたは負の値に設定されている場合は、[機能ID] 列を無視します。 |
説明
この関数は、MVT形式のバイナリ表現を返す集計関数です。
行には、geometric属性の空間フィーチャとしてエンコードする必要があるジオメトリ列が含まれている必要があります。
ST_AsMVTGeom3D関数を呼び出して、タイトル座標系で3Dジオメトリを表現し、他の行と列を非幾何学的属性の空間的特徴としてエンコードできます。
| |
またはSTRING_AGG
を使用して、複数のレイヤーを持つベクトルタイルを作成できます。 例:SELECT ST_AsMVT3D() | | ST_AsMVT3D() ASタイル;
次のリストは、z軸のエンコード方法を示しています。
CommandID encoding: 3Dグラフィックスをエンコードするための
MoveTo3D(5)\LineTo3D(6) XYZXYZ...
がサポートされています。z軸上の数値計算:
数値=7 × (z + 450)
。 有効な値の範囲は-450から8848です。
詳細については、「vector-tile-spec」をご参照ください。
次の図は、3D MVTタイルテクノロジーを使用した大規模な3Dシナリオを示しています。
例
mvtgeomと
WITH mvtgeom AS
(
SELECT ST_AsMVTGeom3D(
ST_Transform('SRID=4326; MULTIPOLYGON(((100 50 0, -100 50 1, -100 -50 2, 100 -50 3, 100 50 0)), ((0 0 0, 1 0 1, 2 2 2, 0 0 0)))'::geometry, 3857),
ST_TileEnvelope(1, 0, 0)) AS geom, 'test' AS name
)
SELECT ST_AsMVT3D(mvtgeom.*) FROM mvtgeom;
st_asmvt3d
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
\x1a760a0764656661756c74125812020000180322500d8044a842b83116ff23d80105802400080f0d810481041d162e000e2e590e0f0dd920dc0405168024d70106c727f3160d0f0dc827f4160e1600f31615c72700080f0d0000001600cc1808c80300000f1a046e616d6522060a04746573742880207802
(1 row)