Duas opções vêm à mente. Se você quiser um específico LINESTRING
, poderá usar ST_NumGeometries () e ST_GeometryN () . Como alternativa, se você deseja todas as sub-geometrias, ST_Dump () é o caminho a seguir.
Depois de realmente ler a pergunta, você precisará fazer algo semelhante a este post da lista 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
deMULTILINESTRING
. Mas quero ir um nível mais profundo, quero os segmentos de linha individuais que, quando mesclados, formam osLINESTRING
que, novamente, quando mesclados, formam o originalMULTILINESTRING
. Isso faz sentido?