Dua pilihan muncul di benak. Jika Anda menginginkan spesifik LINESTRING
maka Anda dapat menggunakan ST_NumGeometries () dan ST_GeometryN () . Atau, jika Anda menginginkan semua sub-geometri, ST_Dump () adalah cara yang harus dilakukan.
Setelah benar-benar membaca pertanyaan, Anda perlu melakukan sesuatu yang mirip dengan posting ini dari daftar postgis-pengguna :
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
-- eliminate 0 length linestring
where st_x(st_startpoint(geom))<> st_x(st_endpoint(geom))
) AS linestrings
) AS segments;
LINESTRING
dariMULTILINESTRING
. Tetapi saya ingin melangkah lebih dalam, saya ingin segmen garis individual, yang ketika digabungkan membentuk segmen manaLINESTRING
yang lagi, ketika digabungkan, membentuk yang asliMULTILINESTRING
. Apakah itu masuk akal?