如何简化线路网络的保留拓扑?


9

我有一个Shapefile(由欧洲主要道路组成),其中包含大约250.000个路段,为了进行注浆,我必须对其进行简化。但是我似乎找不到适当的方法。

看起来是这样的:

http://i.stack.imgur.com/qJ2OJ.png

它应该是这样的:

http://i.stack.imgur.com/FN4Z6.png

我必须以某种方式删除连接到少于3条线(不是交叉点)的线的每个点,同时保留其余点之间的拓扑连接。如果有人有想法,将不胜感激!

最好的祝福

编辑:我试图实现@dkastl的想法,并设法通过下面的代码从网络中仅获取不需要的节点(只有2个相邻线串的节点)(网络生成来自underdark的博客http://underdark.wordpress.com / 2011/02/07 / a-beginners-guide-to-pgrouting /):

SELECT * FROM
   (SELECT tmp.id as gid, node.the_geom FROM 
     (SELECT id, count(*) FROM network 
     JOIN node 
     ON (start_id = id OR end_id = id) AND (end_id = id OR start_id = id)
     GROUP BY id ORDER BY id) as tmp
   JOIN node ON (tmp.id = node.id)
   WHERE tmp.count = 2) as unn_node;

因此,我现在要做的就是合并这些行。但是,我不知道如何。我想它必须是一个循环,对于以上查询结果的每一行,都将获取相邻的行并将其合并。然后它将完全重建网络并重复该过程,直到上面的查询返回空结果。


1
为什么要对pgRouting这样做?如果已经分配了源/目标ID,则可以创建一个仅包含源和目标ID的线串的新几何图形。那应该看起来像您的第二张图片。
dkastl 2012年

问题是线被分割了(如果您查看我发布的第一张图像,看到的每个点都将开始/结束一个新的线段),那么您的方法可以简化几何结构(这很好),但不能简化拓扑。
chriserik

1
我认为从您的图像中看不出每个点都开始了新的线串几何。您是否已经运行pgRouting的assign_vertex_id函数来填充源/目标列?在这种情况下,您以后可以进行一些查询以识别仅存在两次的源/目标ID,这意味着您应该能够在此时合并两个线段。如果源/目标ID存在两次以上,则它必须是交集。
dkastl 2012年

@dkastl:一个很好的主意!我更新了我的问题,显示了我的理解程度。
chriserik

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.