名称

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 连接对该函数的多次调用来创建具有多个图层的切片。

[Important]

不要使用 GEOMETRYCOLLECTION 作为行中的元素进行调用。但是,可以使用 ST_AsMVTGeom 为几何集合准备包含项。

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;

另请参阅

ST_AsMVTGeomST_TileEnvelope