Obecně platí, že převod polygonu na čáru nemusí být přímočarý, protože existuje žádné individuální mapování a různé prvky mapy polygonů na různé čáry (vnější prstenec, vnitřní prstence atd.).
Vzhledem k tomu budete muset každou z nich rozdělit samostatně podle možného přístupu, jako je tento:
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;
v závislosti na tom, jaká data polygonu jsou uložena v mypolygontable
, možná budete chtít vypsat nejen hranici (jako výše pomocí ST_Boundary
), ale i další prvky. Výše uvedený kód s podrobnějším přehledem je převzat ze seznamu uživatelů postgis:Rozdělit mnohoúhelník na N linestring
Existuje také obecný přístup k problému vysvětlený v Rozložení čárového řetězce nebo polygonu na jednotlivé vektory v PostGIS