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

基于OSMnx计算城市道路网络最大通行容量的技术咨询

利雅得道路网络最大通行容量计算问题解答

1. 车道数数组格式的含义

[3,2]这类数组格式的车道数,代表道路双向车道数量不相等:数组第一个数值是当前有向边(从节点u到节点v方向)的车道数,第二个数值是反向边(从节点v到节点u方向)的车道数。这是OSM数据用来记录双向车道数差异的方式,比如进城方向3车道、出城方向2车道的道路,就会被标记为[3,2]。

2. 实现公式计算的步骤

要完成公式Σ(Lₛ/Lᵥ)*Nₗ的计算,需要先统一车道数的格式,再逐段计算后求和,具体代码如下:

步骤1:处理车道数字段

先把lanes列中的列表格式值转换为当前方向的车道数:

def parse_lanes(lanes_val):
    if isinstance(lanes_val, list):
        # 提取当前有向边的车道数(列表第一个元素)
        return int(lanes_val[0])
    else:
        # 单个数值直接转为整数
        return int(lanes_val)

# 生成处理后的车道数列
edges['lanes_parsed'] = edges['lanes'].apply(parse_lanes)

步骤2:计算总容量

定义平均车辆占用长度(示例取6米,可根据实际场景调整),然后逐段计算容量并求和:

# 平均车辆占用长度(单位:米)
Lv = 6

# 计算每条道路段的容量
edges['segment_capacity'] = (edges['length'] / Lv) * edges['lanes_parsed']

# 求和得到总容量
total_capacity = edges['segment_capacity'].sum()

print(f"利雅得道路网络最大同时容纳车辆数:{round(total_capacity)}")

补充说明

  • OSMnx导出的edges是有向边集合,双向道路会拆分为两条相反方向的边,因此上述计算已经覆盖了所有方向的车道容量。
  • 若需要验证车道数处理是否正确,可以用edges['lanes_parsed'].value_counts()查看处理后的车道数分布。

内容的提问来源于stack exchange,提问作者NGM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:33:25