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

gou*_*aik 12 sql gis postgresql postgis

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

提前致谢

mlo*_*kot 20

通常,将多边形转换为直线可能并不简单,因为没有一对一的映射,并且多边形的各种元素映射到不同的线串(外环,内环等).

考虑到这一点,您需要按照这样的可能方法分别拆分每个:

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;
Run Code Online (Sandbox Code Playgroud)

根据存储的多边形数据mypolygontable,您可能不仅要转储边界(如上所述ST_Boundary),还要转储其他元素.上面的代码更详细的概述来自postgis-users列表:将多边形拆分为N个线串

对于在PostGIS中将线串或多边形爆炸成单个矢量所解释的问题,还有一种通用的方法