名稱

ST_BuildArea — 建立由幾何圖形的線條形成的複合幾何圖形。

概要

geometry ST_BuildArea(geometry geom);

說明

建立由輸入幾何圖形的組成線條形成的面積幾何圖形。輸入可以是 LineString、MultiLineString、Polygon、MultiPolygon 或 GeometryCollection。結果會是 Polygon 或 MultiPolygon,取決於輸入。如果輸入的線條沒有形成多邊形,則會回傳 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_CollectST_MakePolygonST_MakeValidST_NodeST_PolygonizeST_BdPolyFromTextST_BdMPolyFromText(此函數的包裝,具有標準 OGC 介面)