Im Allgemeinen ist die Konvertierung von Polygonen in Linien möglicherweise nicht einfach, da dies der Fall ist keine Eins-zu-Eins-Zuordnung und verschiedene Elemente des Polygons werden verschiedenen Linienfolgen zugeordnet (äußerer Ring, innere Ringe usw.).
In Anbetracht dessen müssen Sie jede davon separat aufteilen, indem Sie wie folgt vorgehen:
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;
abhängig davon, welche Polygondaten in mypolygontable
gespeichert sind , möchten Sie vielleicht nicht nur die Grenze ausgeben (wie oben mit ST_Boundary
), sondern auch andere Elemente. Der obige Code mit genauerer Übersicht stammt aus der Postgis-Benutzerliste:Ein Polygon in N Linienfolgen aufteilen
Es gibt auch einen generischen Ansatz für das Problem, der in Auflösen einer Linienfolge oder eines Polygons in einzelne Vektoren in PostGIS