#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 не будут работать. Сначала необходимо обработать эти необработанные данные.