將MVTGeom資料編碼成MVT(Mapbox Vector Tile)標準的二進位格式。
文法
文法一
bytea ST_AsMVT3D(anyelement set row);
文法二
bytea ST_AsMVT3D(anyelement row, text name);
文法三
bytea ST_AsMVT3D(anyelement row, text name, integer extent);
文法四
bytea ST_AsMVT3D(anyelement row, text name, integer extent, text geom_name);
文法五
bytea ST_AsMVT3D(anyelement row, text name, integer extent, text geom_name, text feature_id_name);
參數
參數名稱 | 描述 |
row | 至少包含一個Geometry3D列的行資料。 |
name | 圖層的名稱,預設值Default。 |
extent | 螢幕空間中的平鋪範圍。 取值範圍:256~8192,預設值是4096。 |
geom_name | 行資料中幾何列的名稱,預設是第一個幾何列。 |
feature_id_name | 行資料中Feature ID列的名稱。 如果為NULL或為負值,則不設定Feature ID。 |
描述
該函數是一個彙總函式,將MVTGeom資料編碼成MVT(Mapbox Vector Tile)標準的二進位格式。
行資料必須包含一個幾何列,該列將被編碼為空白間要素的幾何屬性。
ST_AsMVTGeom3D可用於將3D資料處理成瓦片座標空間,其他行列被編碼為空白間要素的非幾何屬性。
可以通過使用
||
或STRING_AGG
來建立多個圖層的VectorTile,例如SELECT ST_AsMVT3D() || ST_AsMVT3D() AS tile;
。
Z座標的編碼方式:
CommandID編碼:新增3D圖形編碼指令
MoveTo3D(5)\LineTo3D(6) XYZXYZ...
。Z座標的數值計算方式:
value = 7 * (z + 450),表達範圍是(-450, 8848)
。
說明
更多資訊,請參見vector tile spec。
使用MVT3D瓦片技術展示大規模三維情境:
樣本
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)