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))
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))