Name

ST_BuildArea — 创建由几何体的线条形成的多边形几何体。

Synopsis

geometry ST_BuildArea(geometry geom);

描述

创建由输入几何体的组成线条形成的面几何体。 输入可以是 LineString、MultiLineString、Polygon、MultiPolygon 或 GeometryCollection。 结果是多边形或多多边形,具体取决于输入。 如果输入线条未形成多边形,则返回 NULL。

ST_MakePolygon 不同,此函数接受由多条线形成的环,并且可以形成任意数量的多边形。

此功能将内环转换为孔。 要将内环也转换为多边形,请使用 ST_Polygonize

[Note]

输入线条必须正确,节点才能使此功能正常工作。ST_Node可用于节点线。

如果输入线条交叉,此函数将生成无效的多边形。ST_MakeValid可用于确保输出有效。

可用性:1.1.0

示例

输入线

生成的多边形

WITH data(geom) AS (VALUES
   ('LINESTRING (180 40, 30 20, 20 90)'::geometry)
  ,('LINESTRING (180 40, 160 160)'::geometry)
  ,('LINESTRING (160 160, 80 190, 80 120, 20 90)'::geometry)
  ,('LINESTRING (80 60, 120 130, 150 80)'::geometry)
  ,('LINESTRING (80 60, 150 80)'::geometry)
)
SELECT ST_AsText( ST_BuildArea( ST_Collect( geom )))
    FROM data;

------------------------------------------------------------------------------------------
POLYGON((180 40,30 20,20 90,80 120,80 190,160 160,180 40),(150 80,120 130,80 60,150 80))

用两个圆形多边形创建一个环形

SELECT ST_BuildArea(ST_Collect(inring,outring))
FROM (SELECT
    ST_Buffer('POINT(100 90)', 25) As inring,
    ST_Buffer('POINT(100 90)', 50) As outring) As t;

相关信息

ST_Collect, ST_MakePolygon, ST_MakeValid, ST_Node, ST_Polygonize, ST_BdPolyFromText, ST_BdMPolyFromText (使用标准 OGC 接口对该函数进行包装)