Чрезвычайно долгое время отклика с graph_from_place OSMNX
Я пытаюсь загрузить карту Мексики, чтобы не запрашивать, используя
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!!!")
Сегодня я пытаюсь запустить код на сервере с 74 ГБ ОЗУ и (Intel xeon x5570) X2
(Я знаю, что из-за указанной области время велико, но я хотел знать, есть ли альтернатива этой процедуре или есть ли способ оптимизации, чтобы создание карты происходило немного быстрее, или если есть другой способ загрузить карты для маршрутизации с помощью osmnx и networkx без использования запросов к серверам)
1 ответ
Я уже оставил этот код запущенным почти на шесть часов, и ничего не происходит.
Много чего произошло! Не верите мне? Ты бежал
ox.config(log_console=True)
, поэтому посмотрите на свой терминал и посмотрите, что происходит во время его работы. Вы увидите строку вроде «2021-10-14 13:05:39 Запрос данных внутри многоугольника из API в 1827 запросах» ... так что вы делаете 1827 запросов к серверу Overpass, и сервер спрашивает вас чтобы сделать паузу для ограничения скорости между многими из этих запросов.
Я знаю, что из-за указанной области время велико, но я хотел знать, есть ли альтернатива этой процедуре или есть ли способ оптимизации, чтобы создание карты происходило немного быстрее, или если есть это еще один способ загрузки карт для маршрутизации с помощью osmnx и networkx без использования запросов к серверам.
да. В этом ответе содержится более подробная информация. Есть компромиссы между 1) точностью модели и 2) размером области и 3) памятью / скоростью. Для более быстрого моделирования вы можете загружать сетевые данные из XML- файла .osm вместо того, чтобы выполнять многочисленные вызовы API Overpass. Я также рекомендую использовать
custom_filter
как описано в связанном ответе. OSMnx по умолчанию делит область запроса на части размером 50 км x 50 км, а затем запрашивает Overpass для каждой части по одному, чтобы не превысить лимиты памяти сервера для каждого запроса. Вы можете настроить это
max_query_area_size
параметр, а также выделение памяти сервера, если вы предпочитаете использовать функции запросов API OSMnx, а не функции из файла.