Как запросить Overpass API локально?

#openstreetmap #overpass-api #raspberry-pi-zero

#openstreetmap #overpass-api #raspberry-pi-zero

Вопрос:

Я хочу запустить Overpass API локально без необходимости доступа в Интернет на Raspberry pi zero w.

решение с установкой API не подходит, поскольку для этого требуется минимум 1 ГБ оперативной памяти https://wiki.openstreetmap.org/wiki/Overpass_API/Installation

как я могу выполнять свои запросы локально, которые будут выполняться только в одном городе. есть ли какое-либо решение для запроса из файла OSM или XML-файла?

QL используется для моей цели:

 node(around:300,35.7576,51.4100)[amenity];
(._;>;);
out body;
  

Ответ №1:

Вы не можете использовать стандартную процедуру установки, поскольку даже компиляция, скорее всего, приведет к сбою кода позже. То же самое относится и к загрузке данных.

Я собрал исчерпывающее руководство для Raspberry PI 2, которое вы могли бы использовать в качестве базового:https://wiki.openstreetmap.org/wiki/User:Mmd/Overpass_API/Raspberry

Вы должны использовать исходный код http://dev.overpass-api.de/releases/osm-3s_v0.7.55.tar.gz как упомянуто в официальном руководстве. Кроме того, обязательно измените параметры настройки на

 ./configure CXXFLAGS="-Og -g -fno-omit-frame-pointer -march=native"
  

в противном случае позже вы получите случайные ошибки сегментации из-за не выровненных обращений к памяти (!).

Для команды update_database важно ограничить потребление памяти с помощью --flush-size=1 , иначе этот процесс будет потреблять слишком много памяти и приведет к сбою.

512 МБ — это действительно очень ограниченный объем памяти, в вашем случае его все равно может быть недостаточно.

Ответ №2:

Если вы собираетесь импортировать в свою базу данных только один город, то вам может обойтись менее чем 1 ГБ оперативной памяти. Просто попробуйте. Однако ожидайте, что запросы будут медленными.

Запросы к файлам OSM XML или PBF не будут работать. Сначала необходимо обработать эти необработанные данные.