OSMNX 最短路径节点 - 获取节点行进时间

我想使用 Osmnx 获取最短路径路线中节点之间的旅行时间。有没有办法获得节点之间的旅行时间。


import networkx as nx

import osmnx as ox

ox.config(use_cache=True, log_console=True)

import pandas as pd


pla__version__Piedmont, CA, USA

G = ox.graph_from_place(place, network_type='drive')


orig = list(G)[0]

dest = list(G)[-1]

route = nx.shortest_path(G, orig, dest)

#fig, ax = ox.plot_graph_route(G, route, route_linewidth=6, node_size=0, bgcolor='k')



for i, val in enumerate(route):

    print(i, val, G.nodes[val]['x'], G.nodes[val]['y'])

我想存储节点,在上面的循环中实现的纬度和经度,但是有没有办法存储两个节点之间的旅行时间和/或两个节点之间的距离。


动漫人物
浏览 155回答 1
1回答

MYYA

OSM 关于速度和旅行时间的数据往往参差不齐。使用 OSMnx 的速度模块估算缺失的边缘速度并计算自由流动的行驶时间。import networkx as nximport osmnx as oximport pandas as pdox.config(use_cache=True, log_console=True)place = 'Piedmont, CA, USA'G = ox.graph_from_place(place, network_type='drive')# impute missing edge speeds and add travel timesG = ox.add_edge_speeds(G)G = ox.add_edge_travel_times(G)# calculate route minimizing some weightorig, dest = list(G)[0], list(G)[-1]route = nx.shortest_path(G, orig, dest, weight='travel_time')# OPTION 1: see the travel time for the whole routetravel_time = nx.shortest_path_length(G, orig, dest, weight='travel_time')print(round(travel_time))# OPTION 2: loop through the edges in your route# and print the length and travel time of each edgefor u, v in zip(route[:-1], route[1:]):    length = round(G.edges[(u, v, 0)]['length'])    travel_time = round(G.edges[(u, v, 0)]['travel_time'])    print(u, v, length, travel_time, sep='\t')# OPTION 3: use get_route_edge_attributescols = ['osmid', 'length', 'travel_time']attrs = ox.utils_graph.get_route_edge_attributes(G, route)print(pd.DataFrame(attrs)[cols])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go