几何处理函数
空间运算函 数用于对空间几何对象进行各种操作和变换,包括形状修改、几何关系计算、空间查询和其他类型的空间分析。
seekdb 当前所支持的几何处理函数包括 _ST_MakeValid()。
_ST_MakeValid
在地理信息系统(GIS)中,空间数据经常需要满足一定的有效性标准。一个有效的多边形应该是简单的(不自相交)并且正确环绕的(外环顺时针,内环逆时针),而无效的多边形可能包括自相交、环重叠、孔洞外露等几何错误。
_ST_MakeValid 函数则是用来修复无效的几何图形(如多边形),使之成为有效的几何图形,且 _ST_MakeValid 函数只支持投影坐标系,不支持地理坐标系。
-
支持投影坐标系:该函数预期输入的几何对象使用的是投影坐标系,而非地理坐标系。投影坐标系是一种平面坐标系统,其中地面上的位置以两个坐标来表示。
-
不支持地理坐标系:地理坐标系基于地球的经纬度系统,它考虑了地球的曲率。
_ST_MakeValid函数不支持地理坐标系,输入的几何对象不能是基于经纬度的坐标。
语法如下:
_ST_MakeValid(geometry input)
参数释义:
geometry input: 这是函数的输入参数,表示需要被修复的几何对象。它可以是任意类型的几何图形,例如点(Point)、线(LineString)、多边形(Polygon)等。
示例如下:
select st_astext(_st_makevalid(st_geomfromtext('POLYGON((0 0,1 1,2 2,0 2,1 1,2 0,0 0))')));
在这个示例中,首先 st_geomfromtext('POLYGON((0 0,1 1,2 2,0 2,1 1,2 0,0 0))')将文本格式的多边形转换为几何对象。文本字符串 'POLYGON((0 0,1 1,2 2,0 2,1 1,2 0,0 0))' 表示一个多边形的顶点坐标序列,但是这个多边形是无效的,因为它有顶点自相交。
然后,_st_makevalid(...) 函数修复传入的无效多边形几何对象,使其变成有效的多边形。
最后,st_astext(...) 将修复后的几何对象转换回其 Well-Known Text(WKT)格式。
返回结果如下:
+-------------------------------------------------------------------------------------+
| st_astext(_st_makevalid(st_geomfromtext('POLYGON((0 0,1 1,2 2,0 2,1 1,2 0,0 0))'))) |
+-------------------------------------------------------------------------------------+
| MULTIPOLYGON(((1 1,2 2,0 2,1 1)),((1 1,0 0,2 0,1 1))) |
+-------------------------------------------------------------------------------------+
1 row in set (0.001 sec)