名稱

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 向量瓦片格式可以儲存具有不同屬性集的特徵。要使用此功能,請在包含 JSON 物件的列資料中提供 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;