我正在使用NetowrkX和OsmnX Python包来分析道路网络。一旦我得到了简化的图,我想通过最短路径计算来评估网络的性能。为了获得特定的索引,我需要包括选定的边的最短路径的长度,这些边是通过高速公路边的最短路径。
首先,我列出了我感兴趣的高速公路边(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'))
如何获取/提取包括高速公路边在内的所需最短路径?
发布于 2019-11-14 19:01:06
我无法访问您的图表或类似它的玩具示例,加上我不知道它到底是什么,你想要的。主要有:
source
和target
)的情况下,您是否希望获得构成它们之间最短路径的节点?或者您想要所有节点对的所有最短路径?有不同的函数针对这些事情进行了优化。我做了一个玩具示例,在给定两个节点的情况下,算法返回组成它们之间最短路径的节点。找到边就很简单了(只需从返回的列表中连续选择成对的节点即可):
import networkx as nx
import matplotlib.pyplot as plt
nodes = [i for i in range(10)]
edges = [(i, i+1) for i in range(len(nodes)-1)] + [(nodes[0], nodes[-1])] + [(nodes[4], nodes[8])]
G = nx.Graph()
G.add_nodes_from(nodes)
G.add_edges_from(edges)
source, target = 4, 9
print("Shortest path between nodes {} and {} = {}"
.format(source, target, nx.bidirectional_shortest_path(G, source, destination)))
nx.draw_networkx(G)
我离开了绘制线,以帮助更好地可视化事物。我还建议您查看文档here,以便更好地了解哪种算法更适合您的用例。
如果我误解了什么,请纠正我!
https://stackoverflow.com/questions/58854347
复制相似问题