ST_TileEnvelope
Name
ST_TileEnvelope — Creates a rectangular Polygon in Web Mercator (SRID:3857) using the XYZ tile system .
Synopsis
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
)
;
Description
Creates a rectangular Polygon giving the extent of a tile in the XYZ tile system . The tile is specifed by the zoom level Z and the XY index of the tile in the grid at that level. Can be used to define the tile bounds required by ST_AsMVTGeom to convert geometry into the MVT tile coordinate space.
By default, the tile envelope is in the
Web Mercator
coordinate system (SRID:3857)
using the standard range of the Web Mercator system (-20037508.342789, 20037508.342789).
This is the most common coordinate system used for MVT tiles.
The optional
bounds
parameter can be used to generate tiles in any coordinate system.
It is a geometry that has the SRID and extent of the "Zoom Level zero" square within which the XYZ tile system is inscribed.
The optional
margin
parameter can be used to expand a tile by the given percentage.
E.g.
margin=0.125
expands the tile by 12.5%, which is equivalent to buffer=512 when the tile extent size is 4096, as used in
ST_AsMVTGeom
.
This is useful to create a tile buffer to include data lying outside of the tile's visible area, but whose existence affects the tile rendering.
For example, a city name (a point) could be near an edge of a tile, so its label should be rendered on two tiles, even though the point is located in the visible area of just one tile.
Using expanded tiles in a query will include the city point in both tiles.
Use a negative value to shrink the tile instead. Values less than -0.5 are prohibited because that would eliminate the tile completely.
Do not specify a margin when using with
ST_AsMVTGeom
.
See the example for
ST_AsMVT
.
Enhanced: 3.1.0 Added margin parameter.
Availability: 3.0.0
Example: Building a tile envelope
SELECT ST_AsText( ST_TileEnvelope(2, 1, 1) ); st_astext ------------------------------ POLYGON((-10018754.1713945 0,-10018754.1713945 10018754.1713945,0 10018754.1713945,0 0,-10018754.1713945 0)) SELECT ST_AsText( ST_TileEnvelope(3, 1, 1, ST_MakeEnvelope(-180, -90, 180, 90, 4326) ) ); st_astext ------------------------------------------------------ POLYGON((-135 45,-135 67.5,-90 67.5,-90 45,-135 45))