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

在Jupyter中运行Dijkstra算法时遇OSMnx大子集下载警告的解决方法咨询

解决OSMnx下载法国完整驾驶路网的性能问题

1. 分区域分批下载后合并

法国全境路网数据量极大,直接一次性下载容易超时或内存溢出。可以将法国拆分为多个子区域(比如大区、省),逐个下载后合并为完整路网:

import osmnx as ox

# 法国主要大区列表(可根据需要细化到省)
regions = [
    "Île-de-France", "Auvergne-Rhône-Alpes", "Nouvelle-Aquitaine",
    "Occitanie", "Hauts-de-France", "Grand Est", "Bretagne",
    "Pays de la Loire", "Normandie", "Provence-Alpes-Côte d'Azur"
]

# 批量下载并合并路网
graphs = []
for region in regions:
    print(f"下载{region}路网...")
    g = ox.graph_from_place(region, network_type='drive')
    graphs.append(g)

# 合并所有子图
G_france = ox.utils_graph.combine_graphs(graphs)
G_france_simplified = ox.simplify_graph(G_france)
print("合并后的路网已简化完成")

2. 过滤道路类型减少数据量

如果不需要包含所有次级道路,可以通过自定义过滤器只保留主干道,大幅降低数据规模:

import osmnx as ox

# 只保留高速、干线、主次干道
custom_filter = '["highway"~"motorway|trunk|primary|secondary"]'
G = ox.graph_from_place("France", network_type='drive', custom_filter=custom_filter)
G_simplified = ox.simplify_graph(G)

3. 预下载OSM PBF文件本地导入

直接从OpenStreetMap官方下载法国全境的OSM PBF文件(体积约数GB),再用OSMnx本地导入,比在线下载更稳定:

import osmnx as ox

# 假设已下载法国最新OSM PBF文件到本地
G = ox.graph_from_xml("france-latest.osm.pbf", network_type='drive')
G_simplified = ox.simplify_graph(G)

4. 优化运行环境

  • 增加内存:法国完整路网需要至少16GB以上内存,内存不足会导致频繁磁盘交换,拖慢处理速度
  • 启用多进程:开启OSMnx的多进程支持加速处理:
    ox.settings.use_multiprocessing = True
    
  • 本地运行:避免使用资源受限的云端Jupyter环境,改用本地高性能机器运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:03:15