Repolode
Project-OSRM

Project-OSRM/osrm-backend

OpenStreetMapデータを使って、経路や距離テーブル、GPSのマップマッチングなどを計算する高性能なC++ルーティングエンジン。

代替できる製品:Google Maps Platform Directions API

スター
8,195
フォーク
3,979
未解決の Issue
374
最終コミット
2 時間前

これは何?

OSRM (Open Source Routing Machine) は、OpenStreetMapの道路網データ上で動作するC++製のルーティングエンジンです。HTTP API、C++ライブラリのインターフェース、Node.jsラッパーを通じてサービスを提供し、Pythonバインディングも利用できます。

エンジンは6種類のサービスを提供します。nearest(座標を道路網にスナップ)、route(座標間の最速経路)、table(すべての地点間の所要時間または距離)、match(ノイズを含むGPS軌跡を道路にスナップ)、trip(貪欲法で巡回セールスマン問題を解く)、tile(ルーティングのメタデータを含むMapbox Vector Tilesを生成)です。

前処理パイプラインとして、Multi-Level Dijkstra(MLD、推奨のデフォルト)とContraction Hierarchies(CH)の2種類をサポートしています。すぐに試せるDockerイメージが用意されており、ソースからビルドする場合は依存関係の管理にvcpkgを使用します。

主な機能

  • 01OpenStreetMapデータを使ったroute、nearest、table、match、trip、tileサービス
  • 02HTTP API、C++ライブラリ、Node.jsおよびPythonバインディング
  • 03MLDとCHの前処理パイプライン
  • 04すぐにセットアップできるDockerイメージ
  • 05Luaスクリプトによるカスタムルーティングプロファイル

ユースケース

  • OpenStreetMapデータを使ったセルフホスト型のルーティングまたはナビゲーションバックエンドの構築
  • 物流や配車向けの大規模な所要時間・距離マトリクスの計算
  • 車両やフィットネスデバイスのGPS軌跡を道路網にマップマッチング
  • 小規模な車両ルーティング問題やTSP形式の訪問順序問題の解決

クイックスタート

  1. 1

    OpenStreetMapの抽出データをダウンロードします(ベルリンの例)

    wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf
  2. 2

    Dockerを使い、carプロファイルで抽出データを前処理します

    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

    抽出データをパーティション分割します(その後、READMEと同じ方法でosrm-customizeを実行します)

    docker run -t -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-partition /data/berlin-latest.osrm || echo "osrm-partition failed"
  4. 4

    ポート5000でルーティングHTTPサーバーを起動します

    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抽出データの処理には非常に時間がかかる場合があります。たとえば、550 MBのファイルでは約30分かかります。
  • ソースからビルドするには、C++20コンパイラ、CMake 3.29以降、vcpkgが必要です。また、最初のconfigureでは多数の依存関係がコンパイルされます。

トピック

よくある質問

osrm-backend とは?
OpenStreetMapデータを使って、経路や距離テーブル、GPSのマップマッチングなどを計算する高性能なC++ルーティングエンジン。 OSRM (Open Source Routing Machine) は、OpenStreetMapの道路網データ上で動作するC++製のルーティングエンジンです。HTTP API、C++ライブラリのインターフェース、Node.jsラッパーを通じてサービスを提供し、Pythonバインディングも利用できます。
osrm-backend は無料で使えますか?ライセンスは?
osrm-backend は BSD-2-Clause ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
osrm-backend は今もメンテナンスされていますか?
活発にメンテナンス中。osrm-backend の最終コミットは 2026年11月7日 です。
osrm-backend は何に使えますか?
OpenStreetMapデータを使ったセルフホスト型のルーティングまたはナビゲーションバックエンドの構築 物流や配車向けの大規模な所要時間・距離マトリクスの計算 車両やフィットネスデバイスのGPS軌跡を道路網にマップマッチング 小規模な車両ルーティング問題やTSP形式の訪問順序問題の解決
osrm-backend のインストール方法は?
OpenStreetMapの抽出データをダウンロードします(ベルリンの例): wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf Dockerを使い、carプロファイルで抽出データを前処理します: 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" 抽出データをパーティション分割します(その後、READMEと同じ方法でosrm-customizeを実行します): docker run -t -v "${PWD}:/data" ghcr.io/project-osrm/osrm-backend osrm-partition /data/berlin-latest.osrm || echo "osrm-partition failed" ポート5000でルーティングHTTPサーバーを起動します: 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 をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト

QGISは、空間データの閲覧、編集、分析、地図作成に使える、無料のクロスプラットフォーム対応デスクトップGISです。

データ・分析#gis#mapping#geospatial
1.5万+51 今週3596C++GPL-2.0活発にメンテナンス更新 15 時間前