高效(空间)网络邻居?

2024-09-27 07:31:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想确定一个网络边缘的第k个顺序的邻居,特别是一个大型街道集的邻居。例如,我有一条我感兴趣的街道,叫它焦点街。对于每个焦点街道,我想找到共用一个交叉口的街道,这些是第一级邻居。然后对于每个与焦点街道共用一个交叉口的街道,我想找到他们的邻居(这些是二级邻居),等等。。。在

使用ArcGIS的地理处理库(arcpy)计算一阶邻域需要6个多小时,二阶邻居需要18个多小时。不用说,我想找到一个更有效的解决办法。我已经创建了一个python字典,它在每条街道上键入,并将连接的街道作为值。例如:

st2neighs = {street1: [street2, street3, street5], street2: [street1, street4], ...}.  

街道1与街道2、3、5相连;街道2与街道1、4相连;等等。。研究区域内约有30000条街道,大多数街道的连通街道不到7条。下面代码中使用的数据的pickle版本IS HERE。在

我假设知道一阶邻居可以让我有效地追踪高阶邻居。但以下代码提供的结果不正确:

^{pr2}$

救命啊!在


Tags: 代码网络顺序街道地理感兴趣边缘焦点
1条回答
网友
1楼 · 发布于 2024-09-27 07:31:23

在我看来,您想要实现的是以下内容:http://en.wikipedia.org/wiki/Composition_of_relations

它实际上是一个直接的算法。设R是关系“是一阶邻居”,因此,如果两条街道x,y在R中,那么x是y的一阶邻居。所以,对于二阶邻居,你要计算由R组成的R,对于由R组成的三阶邻居(R由R组成),依此类推。在

相关问题 更多 >

    热门问题