名称

ST_TileEnvelope — 使用 Web Mercator (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 切片系统中切片的范围。切片由缩放级别 Z 和该级别网格中切片的 XY 索引指定。可用于定义 ST_AsMVTGeom 所需的切片边界,以便将几何图形转换为 MVT 切片坐标空间。

默认情况下,切片包络采用 Web Mercator 坐标系 (SRID:3857),使用 Web Mercator 系统的标准范围 (-20037508.342789, 20037508.342789)。这是 MVT 切片最常用的坐标系。可选的 bounds 参数可用于生成任何坐标系中的切片。它是一个几何图形,具有 SRID 和“缩放级别零”正方形的范围,XYZ 切片系统就包含在该正方形内。

可选的 margin 参数可用于按给定百分比扩展切片。例如,margin=0.125 将切片扩展 12.5%,这相当于缓冲区=512,当切片范围大小为 4096 时(如在 ST_AsMVTGeom 中使用)。这对于创建一个切片缓冲区非常有用,该缓冲区可以包含位于切片可见区域之外但其存在会影响切片渲染的数据。例如,一个城市名称(一个点)可能靠近切片的边缘,因此其标签应该在两个切片上渲染,即使该点仅位于一个切片的可见区域内。在查询中使用扩展切片会将城市点包含在两个切片中。使用负值可以缩小切片。禁止使用小于 -0.5 的值,因为这会完全消除切片。当与 ST_AsMVTGeom 一起使用时,请勿指定边距。请参阅 ST_AsMVT 的示例。

增强功能: 3.1.0 添加了 margin 参数。

可用性: 3.0.0

示例:构建切片包络

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

另请参阅

ST_MakeEnvelope