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

OSMnx graph_from_bbox()参数报错:提示仅接受1个位置参数但传入4个的问题排查

OSMnx graph_from_bbox()参数报错:提示仅接受1个位置参数但传入4个的问题排查

这个问题其实是OSMnx版本更新带来的参数格式变化导致的,我帮你一步步梳理清楚:

问题根源

从你贴出的help(ox.graph.graph_from_bbox)输出可以看到,当前你使用的OSMnx版本中,graph_from_bbox()函数的bbox参数是一个单独的元组/列表,格式要求是(left, bottom, right, top),而不是旧版本里的四个独立位置参数(north, south, east, west)。

你代码里用*bbox把元组(37.5, 32.0, -94.0, -104.0)拆成了四个单独的位置参数传入,这就导致函数收到了4个位置参数+1个关键字参数,和它预期的1个位置参数(bbox元组)不符,所以抛出了TypeError。

解决方案

  1. 去掉参数解包符*
    直接把整个bbox元组作为参数传入,不要用*拆分:

    # 原代码:
    # graph = ox.graph.graph_from_bbox(*bbox, network_type="drive")
    # 修改后:
    graph = ox.graph.graph_from_bbox(bbox, network_type="drive")
    
  2. 修正bbox的顺序
    注意你当前定义的bbox = (37.5, 32.0, -94.0, -104.0)是(north, south, east, west)的旧版顺序,但当前版本要求的是(left, bottom, right, top)(left=西经度,bottom=南纬度,right=东经度,top=北纬度),所以需要调整为:

    bbox = (-104.0, 32.0, -94.0, 37.5)  # 对应left=-104.0, bottom=32.0, right=-94.0, top=37.5
    

    这样才能正确获取你想要的俄克拉荷马、德克萨斯、堪萨斯区域的路网。

额外说明

如果之前你参考的是旧版OSMnx的教程,确实会看到graph_from_bbox接受四个独立参数的写法,但新版本为了参数更简洁统一,改成了单个bbox元组参数。你可以通过ox.__version__查看当前使用的版本,确保和参考文档的版本匹配。

修改后的关键代码片段:

# 修正后的bbox顺序,符合当前版本要求
bbox = (-104.0, 32.0, -94.0, 37.5)  # Approximate bounding box for OK, TX, KS

# 直接传入bbox元组,不要用*解包
graph = ox.graph.graph_from_bbox(bbox, network_type="drive")

备注:内容来源于stack exchange,提问作者plditallo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:47:57