Repolode
Project-OSRM

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. 1

    Скачайте выгрузку OpenStreetMap (пример для Берлина)

    wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf
  2. 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. 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. 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.

6,8 тыс.+6 за неделю2 тыс.JavaApache-2.0Активно поддерживаетсяОбновлён вчера

QGIS — бесплатная кроссплатформенная настольная ГИС для просмотра, редактирования, анализа и картографирования пространственных данных.

14,8 тыс.+50 за неделю3,6 тыс.C++GPL-2.0Активно поддерживаетсяОбновлён 23 часа назад

Сервер с открытым исходным кодом для мультимодального планирования поездок на общественном транспорте, велосипеде, пешком, с велопрокатом и вызовом автомобиля.

2,8 тыс.+5 за неделю1,2 тыс.JavaOtherОбновлён вчера

Открытый сервис геокодирования: ищет по имени и адресу в данных OpenStreetMap, а также выполняет обратное геокодирование.

4,6 тыс.+9 за неделю869PythonGPL-3.0Активно поддерживаетсяОбновлён 4 дня назад

Открытый браузерный глобус с фотореалистичным 3D-рельефом, на который нанесены данные о рейсах, судах, спутниках, землетрясениях, пробках и общедоступных камерах; есть голосовое управление.

63,2 тыс.+1,7 тыс. за неделю12,4 тыс.JavaScriptOtherОбновлён 22 часа назад