Over het algemeen is het converteren van polygoon naar lijn niet eenvoudig omdat er is geen één-op-één mapping en verschillende elementen van polygoon worden toegewezen aan verschillende lijnen (buitenring, binnenringen, enz.).
Als u dat in overweging neemt, moet u elk van deze afzonderlijk splitsen volgens een mogelijke benadering als volgt:
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;
afhankelijk van welke polygoongegevens zijn opgeslagen in mypolygontable
, wilt u misschien niet alleen de grens dumpen (zoals hierboven met behulp van ST_Boundary
) maar ook andere elementen. De bovenstaande code met meer gedetailleerd overzicht is afkomstig uit de postgis-users lijst:Een polygoon splitsen in N lijnstrings
Er is ook een algemene benadering van het probleem dat wordt uitgelegd in Een lijnstring of polygoon exploderen in individuele vectoren in PostGIS