Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_COLLECTIONHOMOGENIZE

📄字数 997
👁️阅读量 加载中...

功能描述

给定几何集合,返回最简单的表示形式。

语法格式

sql
GEOMETRY ST_COLLECTIONHOMOGENIZE(GEOMETRY collection);

参数说明

  • collection:目标 GEOMETRYCOLLECTION 对象;

函数返回类型

GEOMETRY 类型

使用说明

  1. 同质集合将以适当的多几何体形式返回。
  2. 混合类型集合将转换为单个平面几何集合。
  3. 包含单个基本元素的集合将作为该元素返回。
  4. 基本几何形状返回不变。如果需要,可以使用 ST_MULTI 将它们转换为多几何图形。

注意

该函数不保证结果有效。特别是,包含相邻或重叠多边形的集合将创建无效的多多边形。这种情况可以使用 ST_ISVALID 检查并使用 ST_MAKEVALID 修复。

示例

单个元素集合转为基本集合:

sql

SQL> SELECT TO_CHAR(ST_ASTEXT(ST_COLLECTIONHOMOGENIZE('GEOMETRYCOLLECTION(POINT(0 0))')));

+------------+
|   EXPR1    |
+------------+
| POINT(0 0) |
+------------+

将嵌套的单元素集合转换为基本几何:

sql

SQL> SELECT TO_CHAR(ST_ASTEXT(ST_COLLECTIONHOMOGENIZE('GEOMETRYCOLLECTION(MULTIPOINT((0 0)))')));

+------------+
|   EXPR1    |
+------------+
| POINT(0 0) |
+------------+

集合转换为多几何图形:

sql

SQL> SELECT TO_CHAR(ST_ASTEXT(ST_COLLECTIONHOMOGENIZE('GEOMETRYCOLLECTION(POINT(0 0),POINT(1 1))')));

+-------------------------+
|          EXPR1          |
+-------------------------+
| MULTIPOINT((0 0),(1 1)) |
+-------------------------+

将嵌套混合类型集合转换为平面几何集合:

sql

SQL> SELECT TO_CHAR(ST_ASTEXT(ST_COLLECTIONHOMOGENIZE('GEOMETRYCOLLECTION(POINT(0 0), GEOMETRYCOLLECTION( LINESTRING(1 1, 2 2)))')));

+----------------------------------------------------+
|                       EXPR1                        |
+----------------------------------------------------+
| GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(1 1,2 2)) |
+----------------------------------------------------+

将多边形集合转换为(无效的)多多边形:

sql

SQL> SELECT TO_CHAR(ST_ASTEXT(ST_COLLECTIONHOMOGENIZE('GEOMETRYCOLLECTION (POLYGON ((10 50, 50 50, 50 10, 10 10, 10 50)), POLYGON ((90 50, 90 10, 50 10, 50 50, 90 50)))')));

+-----------------------------------------------------------------------------------+
|                                       EXPR1                                       |
+-----------------------------------------------------------------------------------+
| MULTIPOLYGON(((10 50,50 50,50 10,10 10,10 50)),((90 50,90 10,50 10,50 50,90 50))) |
+-----------------------------------------------------------------------------------+