我正在使用NetowrkX和osmnxpython包来分析道路网。 一旦我得到了简化图,我想通过最短路径计算来评估网络的性能。为了获得一个特定的索引,我需要最短路径的长度,其中包括选定的边,这些边是通过高速公路边的最短路径。你知道吗
首先我列出了我感兴趣的高速公路边缘(G5是我的网络的对应图):
MW_edges=[(u,v,k,d) for u,v,k,d in G5.edges(keys=True, data=True) if d['highway']=='motorway']
我使用以下函数来评估网络中所有成对节点的最短路径:
paths=dict(nx.all_pairs_dijkstra_path(G5, cutoff=None, weight='length'))
如何获得/提取所需的最短路径,包括高速公路边缘?你知道吗
我没有访问您的图形或玩具的例子,类似它,而且我也没有得到它是你想要的确切。主要是:
图是否加权?事实上,你使用dijkstra让我认为是这样,但事实上,你是一个道路网络工作,让我认为它不是。
你的目标是什么?给定两个节点(比如
source
和target
),您想得到构成它们之间最短路径的节点吗?或者您想要所有节点对的所有最短路径?有不同的功能,是为做这些事情优化。我做了一个玩具例子,给定两个节点,算法返回组成它们之间最短路径的节点。找到边很简单(只需从返回的列表中连续成对地选取节点):
我离开了画线,以帮助更好地形象化的事情。我还建议您查看文档here,以便更好地了解哪个算法更适合您的用例。
如果我误解了,请纠正我!你知道吗
相关问题 更多 >
编程相关推荐