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 で繋げることで、複数レイヤのタイルを作ることができます。
|
|
|
|
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;