OSRM (Open Source Routing Machine) - проект, с открытым исходным кодом, который позволяет развернуть у себя на сервере, свой собственный сервис построения маршрутов.
Установка
Для начала устанавливаем нужные пакеты:
sudo apt-get install git libboost-dev gcc g++ make cmake libstxxl-dev libxml2-dev libbz2-dev zlib1g-dev libzip-dev libboost-filesystem-dev libboost-thread-dev libboost-system-dev libboost-regex-dev libboost-program-options-dev libboost-iostreams-dev libgomp1 libpng-dev libprotobuf-dev protobuf-compiler liblua5.1-0-dev libluabind-dev pkg-config libosmpbf-dev libboost-test1.55-dev libtbb-dev libexpat1-dev libxxf86vm1 libxxf86vm-dev libxi-dev libxrandr-dev
Далее клонируем репозиторий Project-OSRM:
git clone https://github.com/Project-OSRM/osrm-backend.git
cd osrm-backend
и выполняем команды, необходимые для сборки:
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
sudo cmake --build . --target install
Чтобы запустить сервер, ему необходимо подготовить данные, для построения графа. Чтобы загрузить их, необходимо их извлечь из карт OpenStreetMap. Делается это, входящими в комплект утилитами.
Настройка и запуск
Для начала скачаем файл osm с нужным регионом (сделать это можно с сайта OpenStreetMap) и с помощью утилиты osrm-extract
, извлекаем и сохраняем из него данные для дальнейшей загрузки.
osrm-extract -p osrm-backend/profile.lua map.osm
Если у вас при этой операции возникла ошибка сегментации, рекомендую обратиться у официальному мануалу (ссылка в конце статьи)
Далее необходимо извлечь иерархию и граф маршрутов из полученного osrm файла. Это делается с помощью утилиты osrm-contract
:
osrm-contract map.osrm
Для запуска сервера нужно выполнить команду:
osrm-routed map.osrm
Заключение
Данная статья это конспект официального мануала.
comments powered by Disqus