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

如何用OSMnx自定义过滤器获取区域内所有OSM道路类型?

获取指定区域所有OSM道路类型的简便方法
  • 错误原因分析

    • 第一段代码用custom_filter="%s"报错,是因为%s是Python字符串占位符,未赋值就直接作为Overpass QL过滤器传入,语法无效导致报错。
    • 第二段代码custom_filter="highway"未返回所有道路类型,是因为network_type="all"会覆盖custom_filter的部分逻辑,且单纯的highway不符合Overpass QL的标签匹配语法。
  • 正确实现代码
    无需逐个枚举道路类型,直接用Overpass QL的标签存在性匹配语法,同时不要指定network_type(指定后会覆盖custom_filter):

    import osmnx as ox
    
    place_name = "Moscow"
    # 匹配所有带highway标签的OSM元素
    G = ox.graph_from_place(place_name, custom_filter='["highway"]')
    
  • 验证获取的道路类型
    提取图中所有边的highway属性,确认所有返回的道路类型:

    highway_types = set()
    for u, v, data in G.edges(data=True):
        highway_val = data.get("highway")
        if isinstance(highway_val, list):
            highway_types.update(highway_val)
        else:
            highway_types.add(highway_val)
    
    print("该区域现存的OSM道路类型:", highway_types)
    

内容的提问来源于stack exchange,提问作者something-original

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 13:50:05