graph_from_place OSMNX 的响应时间极长

问题描述 投票:0回答:1

我正在尝试下载墨西哥地图以避免使用

save_graphml
进行查询并避免
graph_from_place
中的长时间响应,但我已经让这段代码运行了将近六个小时并且绝对没有任何反应。

import osmnx as ox

ox.config(use_cache=True, log_console=True)

G = ox.graph_from_place('Mexico', network_type = 'drive', simplify=False)
G = ox.add_edge_speeds(G)
G = ox.add_edge_travel_times(G)

ox.save_graphml(G, '/var/www/html/repmexico.graphml')

print("Success!!!")

今天我试图在具有 74GB RAM 和(Intel xeon x5570)X2 的服务器上运行代码

(我知道由于规定的区域时间很长,但我想知道是否有替代此过程的方法,或者是否有优化的方法以便更快地创建地图或如果有另一种方法可以加载地图以使用 osmnx 和 networkx 路由而不使用对服务器的查询)

python networkx openstreetmap osmnx enroute
1个回答
3
投票

我已经让这段代码运行了将近六个小时,但绝对没有任何反应。

发生了很多事情!不相信我?你跑了

ox.config(log_console=True)
,所以看看你的终端,看看它运行时发生了什么。您会看到类似“2021-10-14 13:05:39 在 1827 次请求中从 API 请求多边形内的数据”这样的行...所以您向立交桥服务器发出了 1,827 个请求,服务器正在询问您暂停许多请求之间的速率限制。

我知道由于规定的区域时间很长,但我想知道是否有替代此过程的方法,或者是否有优化方法以便更快地创建地图,或者是否还有另一种方法可以加载地图以使用 osmnx 和 networkx 进行路由,而无需使用对服务器的查询

是的。这个answer提供了更多细节。在 1) 模型精度与 2) 面积大小与 3) 内存/速度之间存在权衡。为了更快地建模,您可以从 .osm XML file 加载网络数据,而不必多次调用 Overpass API。我还建议使用链接答案中所述的

custom_filter
。默认情况下,OSMnx 将您的查询区域划分为 50 公里 x 50 公里的块,然后为每个块一次查询一次天桥,以不超过服务器的每次查询内存限制。如果您更喜欢使用 OSMnx 的 API 查询功能而不是其来自文件的功能,您可以config这个
max_query_area_size
参数以及服务器内存分配。

© www.soinside.com 2019 - 2024. All rights reserved.