2011-09-29 217 views

回答

16

通常,转换多边形线可以是不直接的,因为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

0

解释这是先打上谷歌,当你搜索这个问题。我不知道是否有这么多时间已经过去了,但是对于未来的谷歌用户来说,ST_ExteriorRings(geom)非常适合我。 http://postgis.net/docs/ST_ExteriorRing.html

+0

虽然你的答案是100%正确的,它也有可能成为100%无用 如果该链接被移动,更改合并到另一个或主站点 刚好消失... **: - (**因此,请[编辑]您的答案,并将 从链接中的相关步骤复制到您的答案中,从而保证您的答案为本网站整个生命周期的100%!**; - )**您可以随时保留 链接在您的答案的底部作为您的材料的来源...。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 –

相关问题