将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)
文档内容是否对您有帮助?