Generelt er det måske ikke ligetil at konvertere polygon til linje, fordi der er ingen en-til-en kortlægning og forskellige elementer af polygon kort til forskellige linjestrenge (ydre ring, indvendige ringe osv.).
I betragtning af det bliver du nødt til at opdele hver af dem separat ved at følge en mulig tilgang som denne:
SELECT ST_AsText( ST_MakeLine(sp,ep) )
FROM
-- extract the endpoints for every 2-point line segment for each linestring
(SELECT
ST_PointN(geom, generate_series(1, ST_NPoints(geom)-1)) as sp,
ST_PointN(geom, generate_series(2, ST_NPoints(geom) )) as ep
FROM
-- extract the individual linestrings
(SELECT (ST_Dump(ST_Boundary(geom))).geom
FROM mypolygontable
) AS linestrings
) AS segments;
afhængigt af hvilke polygondata der er gemt i mypolygontable
, vil du måske ikke kun dumpe grænsen (som ovenfor ved at bruge ST_Boundary
), men også andre elementer. Ovenstående kode med mere detaljeret oversigt er taget fra postgis-brugerlisten:Opdel en polygon til N linjestrenge
Der er også en generisk tilgang til problemet forklaret i Eksplosion af en linjestreng eller polygon i individuelle vektorer i PostGIS