名前

ST_TileEnvelope — Web メルカトル (SRID:3857) 上で XYZ タイルを使った矩形ポリゴンを生成します。

概要

geometry ST_TileEnvelope(integer tileZoom, integer tileX, integer tileY, geometry bounds=SRID=3857;LINESTRING(-20037508.342789 -20037508.342789,20037508.342789 20037508.342789), float margin=0.0);

説明

XYZ tile systemでのタイルの範囲を示す長方形ポリゴンを生成します。タイルはズームレベルを示す Z と、そのレベルでのタイルインデックスを示す X, Y で指定します。ST_AsMVTGeomでジオメトリーを MVT タイルの座標空間に変換のために必要なタイル境界を定義するために使います。

デフォルトでは、タイルエンベロープの座標系はWeb Mercator (SRID: 3857) で、標準的なウェブメルカトルの範囲 (-20037508.342789, 20037508.342789) を取ります。これが MVT タイルで使用される最も標準的な座標系です。任意パラメータboundsを使うと、あらゆる座標系のタイルを生成することができます。SRID を持ち、ズームレベル 0の時の、ジオメトリーの XYZ タイルシステムが内側に存在する矩形を示すジオメトリーを与えます。

任意パラメータmarginは、タイルを与えられた割合だけ拡張するために使います。たとえばmargin=0.125と指定すると、12.5%拡張します。これは、ST_AsMVTGeomで使われている、タイルサイズが 4096の時に buffer=512と指定するのと等価です。タイル表示領域の外側にバッファを生成するために使いますが、この範囲はタイル描画に影響を与えます。たとえば、市名 (ポイント) を一つのタイルの端付近にあっても、そのラベルが二つのタイルで描画されるべきです。拡張したタイルをクエリで使うと、両方のタイルに市名のポイントが含まれることになります。負数を指定すると反対に縮小します。-0.5より小さい値は、タイルを完全に消すことになるので、許可されません。ST_AsMVTGeomと併用する時はマージンを指定しないでください。ST_AsMVTの例をご覧下さい。

Enhanced: 3.1.0 margin パラメータが追加されました。

Availability: 3.0.0

タイル (2, 1, 1) とルートタイル (0, 0, 0) の表示。

コード
SELECT ST_TileEnvelope(0, 0, 0) AS input_z0_x0_y0, ST_TileEnvelope(2, 1, 1) AS z2_x1_y1;
出力
input_z0_x0_y0 | z2_x1_y1
----------------+-----------
POLYGON((-20037508.342789244 -20037508.342789244,-20037508.342789244 20037508.342789244,20037508.342789244 20037508.342789244,20037508.342789244 -20037508.342789244,-20037508.342789244 -20037508.342789244)) | POLYGON((-10018754.171394622 0,-10018754.171394622 10018754.171394622,0 10018754.171394622,0 0,-10018754.171394622 0))
Geometry figure for visual-st-tileenvelope-01
コード
SELECT ST_TileEnvelope(3, 1, 1, ST_MakeEnvelope(-180, -90, 180, 90, 4326));
出力
POLYGON((-135 45,-135 67.5,-90 67.5,-90 45,-135 45))
Geometry figure for visual-st-tileenvelope-02

関連情報

ST_MakeEnvelope