Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_POLYGONIZE

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

功能描述

创建一个 GeometryCollection,其中包含由一组几何图形的线条形成的多边形。

语法格式

sql
GEOMETRY ST_POLYGONIZE(GEOMETRY SET geomfield);

参数说明

  • geomfield:目标 GEOMETRY 对象。

函数返回类型

GEOMETRY 类型

使用说明

  1. 如果输入线条未形成任何多边形,则返回空的 GeometryCollection。
  2. 此函数创建覆盖所有分隔区域的多边形。 如果结果旨在形成有效的多边形几何体,请使用 ST_BuildArea 来防止填充孔。
  3. 输入线条必须正确节点才能使该功能正常工作。 为了确保输入已节点化,请在多边形化之前在输入几何体上使用 ST_Node。

示例

输入线,输出多边形化集合:

sql
SQL> WITH data(geom) AS (
        SELECT 'LINESTRING (180 40, 30 20, 20 90)'::geometry union all
       SELECT 'LINESTRING (180 40, 160 160)'::geometry union all
       SELECT 'LINESTRING (80 60, 120 130, 150 80)'::geometry union all
       SELECT 'LINESTRING (80 60, 150 80)'::geometry union all
       SELECT 'LINESTRING (20 90, 70 70, 80 130)'::geometry union all
       SELECT 'LINESTRING (80 130, 160 160)'::geometry union all
       SELECT 'LINESTRING (20 90, 20 160, 70 190)'::geometry union all
       SELECT 'LINESTRING (70 190, 80 130)'::geometry union all
       SELECT 'LINESTRING (70 190, 160 160)'::geometry
     )
     SELECT ST_AsText( ST_Polygonize( geom )) FROM data;

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                                     EXPR1                                                                                                                     |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GEOMETRYCOLLECTION(POLYGON((180 40,30 20,20 90,70 70,80 130,160 160,180 40),(150 80,120 130,80 60,150 80)),POLYGON((80 60,120 130,150 80,80 60)),POLYGON((80 130,70 70,20 90,20 160,70 190,80 130)),POLYGON((160 160,80 130,70 190,160 160))) |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

(1 row)