7

Is there a PostGIS function that creates polygons from multiple line segments?

I want to convert the pictured thirteen lines to four polygons. All lines belong to the table "boundary" (gid, geom). I've categorized them by the gid column for a better illustration.

Is ST_MakePolygon what I'm looking for? Can anyone help me with the SQL syntax that QGIS requires for loading the polygons?

line geometry Edit: changed "closed line geometries" to "multiple line segments"

15

ST_Polygonize will do the job:

CREATE VIEW boundarypolygons AS
SELECT 
   g.path[1] as gid, 
   g.geom::geometry(polygon, 31492) as geom 
FROM
   (SELECT 
     (ST_Dump(ST_Polygonize(geom))).* 
   FROM boundary
) as g;

enter image description here

3

Since you are using PostGIS and QGIS, you can try to convert them using both, to decide which one is best suited for your problem. To use PostGIS, the LINESTRING must be closed. You can check if they are closed with the query:

select gid, st_isclosed(geom) from boundary;

If the lines are closed, you can create another table to check the results, with:

create table newboundary as
select gid, ST_MakePolygon(geom) 
from boundary
where st_isclosed(geom);

Add the newboundary to QGIS afterwards.

To use QGIS, check Create polygon layer from polyline layer.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.