OSMNx-是否有可能从节点获得最短路径,但没有任何边缘连接到该节点?

时间:2020-11-03 22:50:30

标签: osmnx

我正在进行仿真,我想记录人行道上步距。

图:

G = ox.graph_from_bbox(35.00843, 34.99174, 135.78775, 135.77495, network_type='walk')

所需路径为:

ox.shortest_path(G, 305371702, 305371770)

然后我使用以下方法获取边缘数据:

edges = ox.graph_to_gdfs(G, nodes=False, edges=True)
edges=edges[['u','v','length']]

但是在最短路径中的某个步骤,我到达节点5327529704,事情变得很奇怪。当我在True中获得该节点的G.nodes()时,该节点的'edges'数据框为空:

edges[edges['u']== 5327529704]

当然还有一个错误:

edges[edges['u']== 5327529704].loc[edges['v']== 5327529686].length.iloc[0]

在最短路径中的两个节点之间怎么可能没有边缘?我在做什么错了?

2 个答案:

答案 0 :(得分:0)

因此,我已经尝试使用:

G = ox.utils_graph.get_undirected(G)

但是那也没有解决。图我只需要检查两次,一次是起始节点在u上,一次是在v上。

不是我希望做的,但是现在我可以操纵数据以更好地满足我的目的。

答案 1 :(得分:0)

这一切似乎对我来说都很好...这是一个可复制的最小代码段:

import networkx as nx
import osmnx as ox
ox.config(use_cache=True, log_console=True)

# make the graph and get shortest path
G = ox.graph_from_bbox(35.00843, 34.99174, 135.78775, 135.77495, network_type='walk')
path = ox.shortest_path(G, 305371702, 305371770)
print(path)

# look up the length of a specific edge
edges = ox.graph_to_gdfs(G, nodes=False, edges=True)
edges=edges[['u','v','length']]
print(edges[edges['u']== 5327529704].loc[edges['v']== 5327529686].length.iloc[0])

# see that edge's attribute data in the graph itself
print(G.edges[(5327529704, 5327529686, 0)])

# get the lengths of each edge in the path
edge_lengths = ox.utils_graph.get_route_edge_attributes(G, path, 'length')
print(edge_lengths)