OpenStreetMapデータを利用し、ルート検索、到達圏、行列計算、スナップ機能を提供するJava製のオープンソースルーティングエンジンです。
Project-OSRM/osrm-backend
OpenStreetMapデータを使って、経路や距離テーブル、GPSのマップマッチングなどを計算する高性能なC++ルーティングエンジン。
- スター
- 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
OpenStreetMapの抽出データをダウンロードします(ベルリンの例)
wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf - 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
抽出データをパーティション分割します(その後、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
ポート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 の数値は毎日更新されます。
関連プロジェクト
OpenStreetMap向けのオープンソースルーティングエンジン。JavaライブラリまたはスタンドアロンのWebサーバーとして、経路検索、等時間圏、マップマッチングに利用できます。
QGISは、空間データの閲覧、編集、分析、地図作成に使える、無料のクロスプラットフォーム対応デスクトップGISです。
公共交通機関と自転車、徒歩、シェアサイクル、配車サービスを組み合わせた経路を検索する、オープンソースのマルチモーダル経路検索サーバー。
OpenStreetMapのデータを名前や住所で検索し、逆ジオコーディングも行えるオープンソースのジオコーディングサービス。
ライブの航空機・船舶・衛星・地震などを、音声操作で探索できるオープンソースの3D地球儀