You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OSMnx与NetworkX:如何获取同一路径的总长度与行驶时间?

优化方案:基于最短路径计算对应权重(NetworkX 3.1、OSMnx 1.5.1)

问题背景

你需要先获取长度最短的路径,再计算该路径对应的行驶时间,避免nx.shortest_path_length()因使用不同权重(travel_time/length)返回不同路径的问题。

优雅高效的实现方式

无需手动遍历边累加,直接使用NetworkX内置的nx.path_weight()函数即可完成计算,该函数内部经过优化,性能优于自定义循环:

# 1. 获取按长度优先的最短路径
route = nx.shortest_path(route_graph, start_node, destination_node, weight='length')

# 2. 计算该路径的总长度(单位:米)
total_length = nx.path_weight(route_graph, route, weight='length')

# 3. 计算该路径的总行驶时间(单位:秒)
total_travel_time = nx.path_weight(route_graph, route, weight='travel_time')

方案优势

  • 代码简洁:替代手动循环边的繁琐逻辑,可读性更强
  • 性能更优:NetworkX内置函数采用优化实现,比自定义循环效率更高
  • 避免异常:自动处理OSMnx默认创建的MultiDiGraph类型,无需手动处理边的key下标问题(函数会自动选取节点间的第一条边,与你原代码逻辑一致)

内容的提问来源于stack exchange,提问作者Kevin P.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 12:57:46