답변:
두 가지 옵션이 떠 오릅니다. 특정 LINESTRING
을 원하면 ST_NumGeometries () 및 ST_GeometryN ()을 사용할 수 있습니다 . 또는 모든 하위 형상을 원할 경우 ST_Dump () 를 사용하는 것이 좋습니다.
실제로 질문을 읽은 후에 는 postgis-users 목록 에서이 게시물 과 비슷한 작업을 수행해야 합니다.
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
'는에서들MULTILINESTRING
. 그러나 한 단계 더 깊이 가고 싶습니다. 병합LINESTRING
할 때 다시 병합 할 때 원래 라인을 형성하는 개별 선 세그먼트를 원합니다MULTILINESTRING
. 말이 돼?