我在PostgreSQL / PostGIS中有一个多边形数据表。现在我需要将此Polygon数据转换为相应的线段。任何人都可以告诉我如何使用PostGIS查询转换它。
提前致谢
通常,将多边形转换为直线可能并不简单,因为there is no one-to-one mapping和多边形的各种元素映射到不同的线串(外环,内环等)。
考虑到这一点,您需要按照这样的可能方法分别拆分每个:
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;
根据mypolygontable
中存储的多边形数据,您可能不仅要转储边界(如上所述使用ST_Boundary
),还要转储其他元素。上面的代码更详细的概述来自postgis用户列表:Split a polygon to N linestrings
还有一种解决Exploding a linestring or polygon into individual vectors in PostGIS问题的通用方法
这是谷歌搜索此问题时的第一个热门话题。我不知道是否已经过了这么多时间已经创建了一个函数,但是对于未来的googlers ST_ExteriorRings(geom)对我来说非常有用。 http://postgis.net/docs/ST_ExteriorRing.html