Nói chung, việc chuyển đổi đa giác thành dòng có thể không đơn giản vì có không có ánh xạ 1-1 và các yếu tố khác nhau của đa giác ánh xạ tới các chuỗi đường khác nhau (vòng ngoài, vòng trong, v.v.).
Xem xét điều đó, bạn sẽ cần phải chia từng phương pháp riêng biệt theo cách tiếp cận có thể có như sau:
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;
tùy thuộc vào dữ liệu đa giác nào được lưu trữ trong mypolygontable
, bạn có thể không chỉ muốn kết xuất ranh giới (như ở trên bằng cách sử dụng ST_Boundary
) mà còn các yếu tố khác. Đoạn mã ở trên với tổng quan chi tiết hơn được lấy từ danh sách người dùng postgis: Tách một đa giác thành N chuỗi dòng
Cũng có một cách tiếp cận chung cho vấn đề được giải thích trong Giải thích một chuỗi dòng hoặc đa giác thành các vectơ riêng lẻ trong PostGIS