ST_BuildArea — 创建由几何图形的线段构成的多边形几何图形。
geometry ST_BuildArea(
geometry geom)
;
创建由输入几何图形的组成线段构成的面积几何图形。输入可以是 LineString、MultiLineString、Polygon、MultiPolygon 或 GeometryCollection。结果是 Polygon 或 MultiPolygon,具体取决于输入。如果输入线段不构成多边形,则返回 NULL。
与 ST_MakePolygon 不同,此函数接受由多条线段形成的环,并且可以形成任意数量的多边形。
此函数将内环转换为孔。要将内环也转换为多边形,请使用 ST_Polygonize。
输入线段必须正确节点化,才能使此函数正常工作。可以使用 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 接口的包装器)