名前

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;