名称

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;