In genere, la conversione del poligono in linea potrebbe non essere semplice perché è nessuna mappatura uno-a-uno e vari elementi della mappa del poligono su diverse linee (anello esterno, anelli interni, ecc.).
Considerando ciò, dovrai dividere ciascuno di questi separatamente seguendo un possibile approccio come questo:
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;
a seconda di quali dati del poligono sono memorizzati in mypolygontable
, potresti voler scaricare non solo il confine (come sopra usando ST_Boundary
) ma anche altri elementi. Il codice sopra con una panoramica più dettagliata è tratto dall'elenco postgis-users:Dividi un poligono in N stringhe lineari
Esiste anche un approccio generico al problema spiegato in Esplosione di una stringa o di un poligono in singoli vettori in PostGIS