Hai lựa chọn đến với tâm trí. Nếu bạn muốn cụ thể LINESTRING
thì bạn có thể sử dụng ST_NumGeometries () và ST_GeometryN () . Ngoài ra, nếu bạn muốn tất cả các hình học phụ, ST_Dump () là cách để đi.
Sau khi thực sự đọc câu hỏi, bạn sẽ cần phải làm một cái gì đó tương tự như bài đăng này từ danh sách người dùng postgis :
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
từ aMULTILINESTRING
. Nhưng tôi muốn đi sâu hơn một cấp độ, tôi muốn các phân đoạn dòng riêng lẻ, khi được hợp nhất sẽ tạo thànhLINESTRING
một lần nữa, khi được hợp nhất, tạo thành bản gốcMULTILINESTRING
. Điều đó có ý nghĩa?