Открытый движок маршрутизации на Java: маршруты, изохроны, матрицы и привязка к дорогам на основе данных OpenStreetMap.
Project-OSRM/osrm-backend
Высокопроизводительный маршрутизатор на C++, который строит маршруты, таблицы расстояний, сопоставляет GPS-треки с картой и решает другие задачи на данных OpenStreetMap.
Open source альтернатива:Google Maps Platform Directions API
- Звёзды
- 8,195
- Форки
- 3,979
- Открытые issues
- 374
- Последний коммит
- 5 дней назад
Что это?
OSRM (Open Source Routing Machine) — написанный на C++ маршрутизатор, работающий с дорожной сетью OpenStreetMap. Он предоставляет сервисы через HTTP API, интерфейс библиотеки C++ и обёртку для Node.js; также доступен binding для Python.
Движок предоставляет шесть сервисов: nearest (привязка координат к уличной сети), route (быстрейший маршрут между координатами), table (время в пути или расстояния между всеми парами точек), match (привязка зашумлённых GPS-треков к дорогам), trip (решение задачи коммивояжёра с помощью жадной эвристики) и tile (генерация Mapbox Vector Tiles с метаданными маршрутизации).
Проект поддерживает два конвейера предобработки: Multi-Level Dijkstra (MLD, рекомендуемый вариант по умолчанию) и Contraction Hierarchies (CH). Для быстрого старта доступны Docker-образы, а при сборке из исходников зависимости устанавливаются с помощью vcpkg.
Ключевые возможности
- 01Сервисы route, nearest, table, match, trip и tile для данных OpenStreetMap
- 02HTTP API, библиотека C++, а также bindings для Node.js и Python
- 03Конвейеры предобработки MLD и CH
- 04Docker-образы для быстрой настройки
- 05Пользовательские профили маршрутизации на скриптах Lua
Сценарии использования
- Создание собственного бэкенда маршрутизации или навигации на данных OpenStreetMap
- Расчёт больших матриц времени в пути или расстояний для логистики и диспетчеризации
- Привязка GPS-треков автомобилей или фитнес-устройств к дорожной сети
- Решение небольших задач маршрутизации транспорта или упорядочивания посещений в стиле TSP
Быстрый старт
- 1
Скачайте выгрузку OpenStreetMap (пример для Берлина)
wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf - 2
Выполните предварительную обработку выгрузки с профилем car с помощью Docker
docker run -t -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-extract -p /opt/car.lua /data/berlin-latest.osm.pbf || echo "osrm-extract failed" - 3
Разбейте выгрузку на разделы (затем запустите osrm-customize так же, как описано в README)
docker run -t -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-partition /data/berlin-latest.osrm || echo "osrm-partition failed" - 4
Запустите HTTP-сервер маршрутизации на порту 5000
docker run -t -i -p 5000:5000 -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-routed --algorithm mld /data/berlin-latest.osrm
Что важно знать
- Обработка больших выгрузок OpenStreetMap может занять очень много времени: например, около 30 минут для файла размером 550 МБ.
- Для сборки из исходного кода необходимы компилятор C++20, CMake версии 3.29 или новее и vcpkg; при первой настройке компилируется множество зависимостей.
Темы
Частые вопросы
- Что такое osrm-backend?
- Высокопроизводительный маршрутизатор на C++, который строит маршруты, таблицы расстояний, сопоставляет GPS-треки с картой и решает другие задачи на данных OpenStreetMap. OSRM (Open Source Routing Machine) — написанный на C++ маршрутизатор, работающий с дорожной сетью OpenStreetMap. Он предоставляет сервисы через HTTP API, интерфейс библиотеки C++ и обёртку для Node.js; также доступен binding для Python.
- osrm-backend можно использовать бесплатно? Какая у него лицензия?
- osrm-backend распространяется с открытым исходным кодом под лицензией BSD-2-Clause. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- osrm-backend всё ещё поддерживается?
- Активно поддерживается. Последний коммит в osrm-backend — 2 нояб. 2026 г..
- Для чего можно использовать osrm-backend?
- Создание собственного бэкенда маршрутизации или навигации на данных OpenStreetMap Расчёт больших матриц времени в пути или расстояний для логистики и диспетчеризации Привязка GPS-треков автомобилей или фитнес-устройств к дорожной сети Решение небольших задач маршрутизации транспорта или упорядочивания посещений в стиле TSP
- Как установить osrm-backend?
- Скачайте выгрузку OpenStreetMap (пример для Берлина): wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf Выполните предварительную обработку выгрузки с профилем car с помощью Docker: docker run -t -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-extract -p /opt/car.lua /data/berlin-latest.osm.pbf || echo "osrm-extract failed" Разбейте выгрузку на разделы (затем запустите osrm-customize так же, как описано в README): docker run -t -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-partition /data/berlin-latest.osrm || echo "osrm-partition failed" Запустите HTTP-сервер маршрутизации на порту 5000: docker run -t -i -p 5000:5000 -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-routed --algorithm mld /data/berlin-latest.osrm
- Где скачать osrm-backend?
- Исходный код и инструкции по установке — на GitHub: https://github.com/Project-OSRM/osrm-backend
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Маршрутизатор с открытым исходным кодом для OpenStreetMap: доступен как Java-библиотека и отдельный веб-сервер для запросов маршрутизации, изохрон и map matching.
QGIS — бесплатная кроссплатформенная настольная ГИС для просмотра, редактирования, анализа и картографирования пространственных данных.
Сервер с открытым исходным кодом для мультимодального планирования поездок на общественном транспорте, велосипеде, пешком, с велопрокатом и вызовом автомобиля.
Открытый сервис геокодирования: ищет по имени и адресу в данных OpenStreetMap, а также выполняет обратное геокодирование.
Открытый браузерный глобус с фотореалистичным 3D-рельефом, на который нанесены данные о рейсах, судах, спутниках, землетрясениях, пробках и общедоступных камерах; есть голосовое управление.