名前

ST_AsMVTGeom — ジオメトリをMVTタイルの座標空間に変換します。

概要

geometry ST_AsMVTGeom(geometry geom, box2d bounds, integer extent=4096, integer buffer=256, boolean clip_geom=true);

説明

ジオメトリをMVT (Mapbox Vector Tile)タイルの座標空間に変換し、必要ならタイルの境界で切り抜きます。ジオメトリは対象地図の座標系でなければなりません (必要ならST_Transformを使います)。一般にこれはWeb Mercator (SRID:3857)です。

この関数は、ジオメトリに妥当性を保持しようとし、必要なら修正します。これによって、結果ジオメトリが低い次元に落ちる可能性があります。

この関数は整数タイル座標空間に適切なジオメトリーの単純化を行います。タイル座標への変換の後、整数グリッドに座標値をスナップさせ、重複ポイントは除去され、直線上のポイントも除去されます。この関数は ST_Simplify.のような多目的、縮尺依存の単純化関数とは異なります。タイル変換前に細かい物を減らすには、ST_AsMVTGeomの前に地図の座標系のジオメトリーを単純化します。

対象地図の座標空間内のタイルを示す四角形の境界を与えなければなりません。ジオメトリが変換され、必要なら切り抜きます。境界はST_TileEnvelopeで生成できます。

この関数はジオメトリをST_AsMVTが求める座標空間に変換するために使います。

geomは変換するジオメトリで、対象地図の座標系です。

boundsは地図の座標空間内のタイルの四角形境界で、バッファはありません。

extentMVT specificationで定義されるタイル座標空間でのタイルのサイズです。デフォルトは4096です。

bufferは、ジオメトリの切り抜きを行うためのタイル座標空間におけるバッファサイズです。デフォルトは256です。

clip_geomはジオメトリを切り抜くかそのままで符号化するかを制御する真偽値です。デフォルトはTRUEです。

Availability: 2.4.0

[注記]

3.0からは、MVTポリゴンのクリップと検証にコンフィギュア時にWagyuを選択することができるようになりました。このライブラリは、デフォルトのGEOSと比べて、速度が速く、より正確な結果が得られますが、小さいポリゴンが削除されることがあります。

Code
SELECT ST_AsMVTGeom('POLYGON ((0 0,10 0,10 5,0 -5,0 0))',
    ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096, 4096)),
    4096, 0, false);
出力:
MULTIPOLYGON(((5 4096,10 4091,10 4096,5 4096)),((5 4096,0 4101,0 4096,5 4096)))
Figure
Geometry figure for visual-st-asmvtgeom-01

問い合わせとジオメトリのクリッピングを行うために計算されたタイル境界を使うWebメルカトルのタイルの標準的な例です。data.geomカラムのSRIDは4326です。

Code
SELECT ST_AsMVTGeom(ST_Transform(geom, 3857 ),
            ST_TileEnvelope(12, 513, 412),
            extent =
> 4096,
            buffer =
> 64) AS geom
  FROM data
  WHERE geom && ST_Transform(ST_TileEnvelope(12, 513, 412, margin =
> (64.0 / 4096)), 4326)