如何使用PostGIS将多边形数据转换为线段

时间:2011-09-29 10:01:03

标签: sql postgresql gis postgis

我在PostgreSQL / PostGIS中有一个多边形数据表。现在我需要将此Polygon数据转换为相应的线段。任何人都可以告诉我如何使用PostGIS查询转换它。

先谢谢

2 个答案:

答案 0 :(得分:17)

通常,将多边形转换为直线可能并不简单,因为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-users列表:Split a polygon to N linestrings

对于Exploding a linestring or polygon into individual vectors in PostGIS

中解释的问题,还有一种通用的方法

答案 1 :(得分:-1)

这是Google搜索此问题时第一次点击。我不知道是否已经过了这么多时间已经创建了一个函数,但是对于未来的googlers ST_ExteriorRings(geom)对我来说非常有用。 http://postgis.net/docs/ST_ExteriorRing.html