En general, la conversión de polígono a línea puede no ser sencilla porque hay sin mapeo uno a uno y varios elementos del mapa de polígonos a diferentes cadenas lineales (anillo exterior, anillos interiores, etc.).
Teniendo en cuenta eso, deberá dividir cada uno de ellos por separado siguiendo un enfoque posible como este:
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;
dependiendo de qué datos de polígono se almacenan en mypolygontable
, es posible que desee volcar no solo el límite (como arriba usando ST_Boundary
) sino también otros elementos. El código anterior con una descripción más detallada se tomó de la lista de usuarios de postgis:Dividir un polígono en N cadenas lineales
También hay un enfoque genérico del problema explicado en Explosión de una cadena lineal o polígono en vectores individuales en PostGIS