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

问题描述 投票:10回答:2

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

提前致谢

sql postgresql gis postgis
2个回答
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用户列表:Split a polygon to N linestrings

还有一种解决Exploding a linestring or polygon into individual vectors in PostGIS问题的通用方法


-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.