空间构造函数
空间构造函数用于构建新的空间数据类型和几何图形的函数。
seekdb 当前所支持的空间构造函数包括 _ST_MakeEnvelope。
_ST_MakeEnvelope
_ST_MakeEnvelope 函数通过输入左下角坐标与右上 角坐标,构造一个矩形,这个矩形常用作空间查询的边界框(bounding box)。
语法如下:
_ST_MakeEnvelope(float xmin, float ymin, float xmax, float ymax, integer srid=unknown)
参数释义:
float xmin:表示矩形左下角的 x 坐标(通常是经度)。float ymin:表示矩形左下角的 y 坐标(通常是纬度)。float xmax:表示矩形右上角的 x 坐标(通常是经度)。float ymax:表示矩形右上角的 y 坐标(通常是纬度)。integer srid:空间参照系统的标识符(Spatial Reference System Identifier),为有效标识符,用来指定坐标所使用的空间参考系统。默认值 unknown 表示不指定空间参照系统。
使用限制:
- 坐标值必须有 效。
xmin必须小于xmax,且ymin必须小于ymax,以构成一个有效的矩形。
示例 1 如下:
SELECT ST_AsText(_ST_MakeEnvelope(10, 10, 11, 11, 4326));
在这个示例中,创建了一个左下角坐标为 (10, 10) 和右上角坐标为 (11, 11) 的矩形。
返回结果如下:
+-----------------------------------------------------+
| ST_AsText( _ST_MakeEnvelope(10, 10, 11, 11, 4326) ) |
+-----------------------------------------------------+
| POLYGON((10 10,11 10,11 11,10 11,10 10)) |
+-----------------------------------------------------+
1 row in set (0.001 sec)
示例 2 如下:
SELECT ST_ASTEXT(_ST_ClipByBox2D(ST_GEOMFROMTEXT('POLYGON((-2 -2, -2 11, 11 11, 11 -2, -2 -2))'), _ST_MakeEnvelope(0,0,10,10)));
在这个示例中,首先创建了一个左下角坐标为 (0, 0) 和右上角坐标为 (10, 10) 的矩形作为裁剪范围。然后它使用 _ST_ClipByBox2D 函数将一个原始多边形 POLYGON((-2 -2, -2 11, 11 11, 11 -2, -2 -2)) 与矩形进行裁剪。
返回结果如下:
+--------------------------------------------------------------------------------------------------------------------------+
| ST_ASTEXT(_ST_ClipByBox2D(ST_GEOMFROMTEXT('POLYGON((-2 -2, -2 11, 11 11, 11 -2, -2 -2))'), _ST_MakeEnvelope(0,0,10,10))) |
+--------------------------------------------------------------------------------------------------------------------------+
| POLYGON((0 0,0 10,10 10,10 0,0 0)) |
+--------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.001 sec)