首页 > 解决方案 > 如何在 OSMNX 中找到转弯最少的路径?

问题描述

在 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)


预期的结果应该是一条在路线方向总变化方面转弯最少的路径。

标签: pythonnetworkxpath-findingosmnx

解决方案


推荐阅读