【发布时间】:2020-03-10 06:26:18
【问题描述】:
我正在使用 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'))
如何获取/提取所需的最短路径,包括高速公路边缘?
【问题讨论】:
-
我有类似的要求,并会考虑 a) 拆分路线以包括高速公路的一个节点或一组节点 - 即代替 source->target 获取路线 (source->motorway_node(s) , motorway_node(s)->target) - 取决于能够为每个源-> 目标对识别适当的高速公路节点。或者,创建自定义权重,其中高速公路边缘的权重低于非高速公路边缘(可能是速度限制/长度),因此 shortest_path source->target 会更喜欢这些边缘。然后通过边走边计算真实成本,计算长度。你有什么收获吗?
标签: python networkx shortest-path network-analysis osmnx