我如何解决问题发生在osmnx plot_graph_route()keyError:'长度'
我目前正在开发一种用于包裹交付的最佳交付算法。我有一个问题,因为在开发程序时,我遇到了OSMNX的plot_graph_route()函数的问题。 当我像下面的代码一样编码时,我将获得KeyError的结果:“长度”。
这是错误代码。
"C:\Python38\lib\site-packages\osmnx\plot.py", line 303, in plot_graph_route
data = min(G.get_edge_data(u, v).values(), key=lambda d: d["length"])
File "C:\Python38\lib\site-packages\osmnx\plot.py", line 303, in <lambda>
data = min(G.get_edge_data(u, v).values(), key=lambda d: d["length"])
KeyError: 'length'
由于我的测试,假定以下列表A中的两个节点之间发生错误。连接两个节点,即使我任意在两个节点之间添加了一个边缘,也会发生错误。节点之间的路径是通过使用NetWokx的Shortest_path_length()函数获得的结果。
这是我的代码
import networkx as nx
import osmnx as ox
import requests
import numpy as np
a= [1916534315,1916534308] #list_of_problem_node
G = ox.graph_from_place('Gumi, Gyeongsangbuk-do, Korea', network_type='drive')#graph of I want to find
########## for save and load convinience
# ox.save_graphml(G,'gumimap')
# G = ox.load_graphml('gumimap')
G.add_edge(1916534315,1916534308)
G.add_edge(1916534308,1916534315)
G=ox.utils_graph.get_largest_component(G,strongly=True)
path=nx.shortest_path_length(G,a[0],a[1])
fig1_1, ax = ox.plot_graph_route(G, path, route_linewidth=6, node_size=0.5)
谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
正如您的错误所暗示的那样,您的新边缘缺乏
长度
属性,plot_graph_route
函数需要。您可以手动添加它或使用add_edge_lengths
函数。As your error suggests, your new edges lack a
length
attribute, which theplot_graph_route
function needs. You can add it manually or use theadd_edge_lengths
function. https://osmnx.readthedocs.io/en/stable/osmnx.html#osmnx.distance.add_edge_lengths