我有一个Shapefile(由欧洲主要道路组成),其中包含大约250.000个路段,为了进行注浆,我必须对其进行简化。但是我似乎找不到适当的方法。
看起来是这样的:
它应该是这样的:
我必须以某种方式删除连接到少于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
我认为从您的图像中看不出每个点都开始了新的线串几何。您是否已经运行pgRouting的assign_vertex_id函数来填充源/目标列?在这种情况下,您以后可以进行一些查询以识别仅存在两次的源/目标ID,这意味着您应该能够在此时合并两个线段。如果源/目标ID存在两次以上,则它必须是交集。
—
dkastl 2012年
@dkastl:一个很好的主意!我更新了我的问题,显示了我的理解程度。
—
chriserik