ST_BuildArea — Skapar en polygonal geometri som bildas av linjerna i en geometri.
geometry ST_BuildArea(
geometry geom)
;
Skapar en ytgeometri som består av de ingående linjerna i indatageometrin. Indata kan vara en LineString, MultiLineString, Polygon, MultiPolygon eller en GeometryCollection. Resultatet är en polygon eller multipolygon, beroende på indata. Om indatalinjerna inte bildar polygoner returneras NULL.
Till skillnad från ST_MakePolygon accepterar denna funktion ringar som bildas av flera linjer och kan bilda valfritt antal polygoner.
Denna funktion omvandlar inre ringar till hål. Om du även vill omvandla inre ringar till polygoner använder du ST_Polygonize.
![]() |
|
Ingångslinjen måste vara korrekt nodad för att denna funktion ska fungera korrekt. ST_Node kan användas för att noda linjer. Om inmatningslinjerna korsar varandra kommer denna funktion att producera ogiltiga polygoner. ST_MakeValid kan användas för att säkerställa att utdata är giltiga. |
Tillgänglighet: 1.1.0
![]() Inmatningsrader
|
![]() Resultat för området
|
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))
Skapa en munk av två cirkulära polygoner
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 (wrappers till denna funktion med standard OGC-gränssnitt)