ST_AsMVT — 聚合函数,返回一组行的 MVT 表示形式。
bytea ST_AsMVT(
anyelement set row)
;
bytea ST_AsMVT(
anyelement row, text name)
;
bytea ST_AsMVT(
anyelement row, text name, integer extent)
;
bytea ST_AsMVT(
anyelement row, text name, integer extent, text geom_name)
;
bytea ST_AsMVT(
anyelement row, text name, integer extent, text geom_name, text feature_id_name)
;
一个聚合函数,返回一组对应于切片图层的行的二进制 Mapbox 矢量瓦片 表示形式。这些行必须包含一个几何列,该列将被编码为要素几何。几何必须位于切片坐标空间中,并且根据 MVT 规范有效。ST_AsMVTGeom 可用于将几何转换为切片坐标空间。其他行列将编码为要素属性。
Mapbox 矢量瓦片格式可以存储具有不同属性集的要素。要使用此功能,请在行数据中提供一个 JSONB 列,其中包含一层深的 Json 对象。JSONB 值中的键和值将被编码为要素属性。
可以使用 ||
或 STRING_AGG
连接多次调用此函数来创建具有多个图层的切片。
不要使用 |
row
行数据,至少包含一个几何列。
name
是图层的名称。默认为字符串 "default"。
extent
是规范定义的屏幕空间中的切片范围。默认为 4096。
geom_name
是行数据中几何列的名称。默认为第一个几何列。请注意,PostgreSQL 默认会自动将未加引号的标识符折叠为小写,这意味着除非几何列被引用,例如 "MyMVTGeom"
,否则此参数必须以小写形式提供。
feature_id_name
是行数据中要素 ID 列的名称。如果为 NULL 或负数,则不会设置要素 ID。将使用第一个匹配名称且类型有效(smallint、integer、bigint)的列作为要素 ID,并且任何后续列都将作为属性添加。不支持 JSON 属性。
增强功能:3.0 - 添加了对要素 ID 的支持。
增强功能:2.5.0 - 添加了对并行查询的支持。
可用性:2.4.0
WITH mvtgeom AS ( SELECT ST_AsMVTGeom(geom, ST_TileEnvelope(12, 513, 412), extent => 4096, buffer => 64) AS geom, name, description FROM points_of_interest WHERE geom && ST_TileEnvelope(12, 513, 412, margin => (64.0 / 4096)) ) SELECT ST_AsMVT(mvtgeom.*) FROM mvtgeom;