ST_BOUNDARY
📄字数 1.0K
👁️阅读量 加载中...
功能描述
返回此 GEOMETRY 的组合边界的闭合。
组合边界的定义如 OGC SPEC 第 3.12.3.2 节中所述。由于该函数的结果是一个闭包,因此是拓扑封闭的,因此可以使用 OGC SPEC 第 3.12.2 节中讨论的表征几何基元来表示生成的边界。
语法格式
sql
GEOMETRY ST_BOUNDARY(GEOMETRY geomA);参数说明
- geomA: 目标 GEOMETRY 对象;
函数返回类型
GEOMETRY 类型。
使用说明
- 此方法实现了 SQL 1.1 的 OGC 简单功能规范。 OGC SPEC s2.1.1.1
- 该方法实现了SQL/MM规范。 SQL-MM IEC 13249-3: 5.1.17
- 该函数支持 3d 并且不会丢失 z-index。
- 该函数支持三角函数和 TIN,不使用地理,不线性化曲线
- 该函数通过GEOS模块实现的;
示例
具有重叠边界点的线串:
sql
SELECT ST_BOUNDARY(geom) FROM (SELECT 'LINESTRING(100 150,50 60, 70 80, 160 170)'::GEOMETRY As geom) As f;
EXPR1 |
---------------------------+
MULTIPOINT(100 150,160 170)|具有边界多线串的多边形孔:
sql
SELECT ST_ASTEXT(ST_BOUNDARY(geom))
FROM (SELECT
'POLYGON (( 10 130, 50 190, 110 190, 140 150, 150 80, 100 10, 20 40, 10 130 ),
( 70 40, 100 50, 120 80, 80 110, 50 90, 70 40 ))'::GEOMETRY As geom) As f;
+----------------------------------------------------------------------------------------------------------------------+
| EXPR1 |
+----------------------------------------------------------------------------------------------------------------------+
| MULTILINESTRING((10 130,50 190,110 190,140 150,150 80,100 10,20 40,10 130),(70 40,100 50,120 80,80 110,50 90,70 40)) |
+----------------------------------------------------------------------------------------------------------------------+sql
SQL> SELECT ST_ASTEXT(ST_BOUNDARY(ST_GEOMFROMTEXT('LINESTRING(1 1,0 0, -1 1)')));
+--------------------------+
| EXPR1 |
+--------------------------+
| MULTIPOINT((1 1),(-1 1)) |
+--------------------------+
SQL> SELECT ST_ASTEXT(ST_BOUNDARY(ST_GEOMFROMTEXT('POLYGON((1 1,0 0, -1 1, 1 1))')));
+------------------------------+
| EXPR1 |
+------------------------------+
| LINESTRING(1 1,0 0,-1 1,1 1) |
+------------------------------+
--3d POLYGON:
SQL> SELECT ST_ASEWKT(ST_BOUNDARY(ST_GEOMFROMEWKT('POLYGON((1 1 1,0 0 1, -1 1 1, 1 1 1))')));
+--------------------------------------+
| EXPR1 |
+--------------------------------------+
| LINESTRING(1 1 1,0 0 1,-1 1 1,1 1 1) |
+--------------------------------------+
--3d MULTILINESTRING:
SQL> SELECT ST_ASEWKT(ST_BOUNDARY(ST_GEOMFROMEWKT('MULTILINESTRING((1 1 1,0 0 0.5, -1 1 1),(1 1 0.5,0 0 0.5, -1 1 0.5, 1 1 0.5) )')));
+--------------------------+
| EXPR1 |
+--------------------------+
| MULTIPOINT(1 1 1,-1 1 1) |
+--------------------------+