在 OSMNX 中,我们可以推导出道路网络中的街道角度,使得网络中的每条边都有一个方位属性。我试图找到一条从特定来源到特定目的地的转弯最少(最简单的路径)的路径。那是角度最小的路径(路线方向的总变化)
我知道我们可以在 osmnx 和 networkx 中使用最短路径算法,例如 Dijkstra。但是,权重参数只能测量街道(边缘)的距离。它无法在最简单的路径中按预期测量两条街道(边缘)之间的角度,转弯最少。
到目前为止,这是我的代码:
import numpy as np
import osmnx as ox
import networkx as nx
import matplotlib.pyplot as plt
ox.config(log_console=True, use_cache=True)
%matplotlib inline
G = ox.graph_from_place('Turi, Sleman, Yogyakarta, Indonesia', network_type='drive', simplify=False)
G = ox.core.add_edge_lengths(G)
G = ox.add_edge_bearings(G)
route = nx.shortest_path(G, 3728658006, 5388482029, weight='bearing')
fig, ax = ox.plot_graph_route(G, route, node_size=0, fig_height=10)
预期的结果应该是一条在路线方向总变化方面转弯最少的路径。