2

我正在尝试下载墨西哥的地图,以避免在 中使用查询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 进行路由,而无需使用对服务器的查询)

4

1 回答 1

2

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

发生了很多事情!不相信我?你跑了ox.config(log_console=True),所以看看你的终端,看看它运行时发生了什么。您会看到类似“2021-10-14 13:05:39 Requesting data within polygon from API in 1827 request(s)”之类的行...所以您正在向 Overpass 服务器发出 1,827 个请求,而服务器正在询问您在许多请求之间暂停以限制速率。

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

是的。这个答案提供了更多细节。在 1) 模型精度与 2) 区域大小与 3) 内存/速度之间存在权衡。为了加快建模速度,您可以从 .osm XML文件加载网络数据,而不必多次调用 Overpass API。我还建议使用custom_filter链接答案中描述的 a 。默认情况下,OSMnx 将您的查询区域划分为 50 公里 x 50 公里的块,然后每次查询每个块的 Overpass 以不超过服务器的每次查询内存限制。如果您更喜欢使用 OSMnx 的 API 查询功能而不是其源文件功能,则可以配置max_query_area_size参数以及服务器内存分配。

于 2021-10-14T20:09:20.553 回答