我正在尝试下载墨西哥地图以避免使用查询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 进行路由,而无需使用对服务器的查询)
我已经让这段代码运行了近六个小时,但完全没有任何反应。
发生了很多事情!不相信我?你跑了ox.config(log_console=True)
,因此请查看您的终端并观察其运行时发生的情况。您将看到类似“2021-10-14 13:05:39 Requesting data inside from API in 1827 request(s)”的行...因此您正在向 Overpass 服务器发出 1,827 个请求,而服务器正在询问您暂停以限制其中许多请求之间的速率。
我知道由于规定的区域,时间很长,但我想知道是否有此过程的替代方案,或者是否有一种优化方法,以便地图的创建速度更快一点,或者是否有是另一种加载地图以使用 osmnx 和 networkx 进行路由而不使用对服务器的查询的方法
是的。这answer https://stackoverflow.com/a/69576295/7321942提供更多详细信息。 1) 模型精度与 2) 区域大小与 3) 内存/速度之间存在权衡。为了更快地建模,您可以从 .osm XML 加载网络数据file https://osmnx.readthedocs.io/en/stable/osmnx.html#osmnx.graph.graph_from_xml而不必多次调用 Overpass API。我还建议使用custom_filter
如链接答案中所述。默认情况下,OSMnx 将您的查询区域划分为 50km x 50km 的块,然后每次对每个块查询 Overpass,以免超出服务器的每次查询内存限制。你可以配置 https://osmnx.readthedocs.io/en/stable/osmnx.html#module-osmnx.settings this max_query_area_size
参数以及服务器内存分配(如果您更喜欢使用 OSMnx 的 API 查询函数而不是其来自文件的功能)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)