Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


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 类型。

使用说明

  1. 此方法实现了 SQL 1.1 的 OGC 简单功能规范。 OGC SPEC s2.1.1.1
  2. 该方法实现了SQL/MM规范。 SQL-MM IEC 13249-3: 5.1.17
  3. 该函数支持 3d 并且不会丢失 z-index。
  4. 该函数支持三角函数和 TIN,不使用地理,不线性化曲线
  5. 该函数通过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) |
+--------------------------+