Se me ocurren dos opciones. Si desea un específico LINESTRING, puede usar ST_NumGeometries () y ST_GeometryN () . Alternativamente, si desea todas las subgeometrías , ST_Dump () es el camino a seguir.
Después de leer la pregunta, deberá hacer algo similar a esta publicación desde la lista de usuarios de 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;
LINESTRINGde aMULTILINESTRING. Pero quiero ir un nivel más profundo, quiero los segmentos de línea individuales, que cuando se fusionan forman elLINESTRING's que nuevamente, cuando se fusionan, forman el originalMULTILINESTRING. ¿Tiene sentido?