名前

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 Vector Tile 表現で返す集約関数です。行には地物ジオメトリーとして符号化される geometry が必ずあります。ジオメトリーはタイルの座標空間に存在しなければならず、MVT specification として妥当でなければなりません。ST_AsMVTGeom はジオメトリーをタイルの座標空間に変換するのに使えます。他のカラムは地物の属性として符号化されます。

Mapbox Vector Tile 書式は、様々な属性就業を持つ地物を格納することができます。この能力を使うには、JSON オブジェクトを1レベルの深さで持っている行データ内の JSONB カラムを提供します。JSONB 値のキーと値は地物の属性として符号化されます。

この関数への複数の呼び出しを || や STRING_AGG で繋げることで、複数レイヤのタイルを作ることができます。

[重要]

GEOMETRYCOLLECTION を行の要素として、この関数を呼ばないでください。しかしながら、ジオメトリーコレクションを含ませるための準備として、ST_AsMVTGeom を使うことができます。

row 少なくとも一つのジオメトリーカラムを持つ行データ。

name はレイヤ名です。デフォルトは"default"という文字列です。

extent は、仕様で定義されている画面空間内のタイル範囲です。NULL の場合には、4096をデフォルト値とします。

geom_name は、行データ内のジオメトリーカラム名です。デフォルトはジオメトリーカラムのうちの先頭です。PostgreSQL はデフォルトでは自動的に 引用符で括らない識別子は小文字になります。これは、ジオメトリーカラムがカラム名が引用符で括られる ("MyMVTGeom" 等) ようになっていない場合には、このパラメーターは小文字で渡さなければなりません。

feature_id_name は行データの地物 ID カラムの名前です。NULL または負数の場合には地物 ID は設定されません。名前が合致し、妥当な型 (smallint, integer, bigint) である最初のカラムが地物 ID に使われます。後続のカラムは全てプロパティとして追加されます。JSON プロパティには対応していません。

Enhanced: 3.0 - 地物 ID への対応を追加。

Enhanced: 2.5.0 - パラレルクエリーへの対応の追加。

Availability: 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;