Umumnya, mengubah poligon menjadi garis mungkin tidak mudah karena ada tidak ada pemetaan satu-ke-satu dan berbagai elemen peta poligon ke string garis yang berbeda (cincin eksterior, cincin interior, dll.).
Mempertimbangkan itu, Anda perlu membagi masing-masing secara terpisah mengikuti kemungkinan pendekatan seperti ini:
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;
tergantung pada data poligon apa yang disimpan di mypolygontable
, Anda mungkin ingin membuang tidak hanya batas (seperti di atas menggunakan ST_Boundary
) tetapi juga elemen lainnya. Kode di atas dengan gambaran yang lebih rinci diambil dari daftar pengguna postgis:Pisahkan poligon menjadi N string
Ada juga pendekatan umum untuk masalah yang dijelaskan di Meledakkan linestring atau poligon ke dalam vektor individu di PostGIS