LoginSignup
1
0

More than 3 years have passed since last update.

ルート検索エンジン(OSRM)をコンテナで簡単に動かしてみた

Last updated at Posted at 2020-11-09

背景

改めて、Docker(コンテナ)を利用することでの非常に有益な気づきがあったので、その事例を備忘録として整理することにしました。

そもそも何がしたかったのか

OpenStreetMap(OSM)を利用した、ルート検索エンジンのOSRM(Open Source Routing Machine)を簡単に使ってみたかったのですが、その環境構築が面倒なようで、何とかならないかと調べていました。

何と、すでに構築された環境がDockerイメージとして提供されていた

Project-OSRM/osrm-backend において、以下のような記述がありました。

The easiest and quickest way to setup your own routing engine is to use Docker images we provide.

しかも、つぎのコマンド実行のみで、dockerhub からコンテナイメージを取得(ダウンロード)して、そのイメージからコンテナ(ルート検索エンジンとしての)を作成・起動してくれます

docker run -t -i -p 5000:5000 -v "${PWD}:/data" osrm/osrm-backend osrm-routed --algorithm mld /data/kanto-latest.osrm &

この例では、osrm/osrm-backend がコンテナイメージで、osrm-routed がコンテナ内で実行するコマンドになります。

ただし、この実行においては、事前に以下の作業が必要です。その中で、以下の整形とか最適化処理は、osrm/osrm-backendから新たにコンテナを起動(その処理用のコマンドをコンテナとして起動します)して実行しています。

  • OSRMで使用する地図(OSM)のダウンロード
  • OSRMで使用できるように整形
  • 徒歩・車・自転車などの速度の最適化
  • その他

本来であれば、以下の手順で、2. 6. 7. を除いた処理が必要とのことなので、Dockerを使うことでより早く確実に試せることがわかります。

1.更新とセキュリティ
2.マップエクスポートのダウンロード
3.依存関係のインストール
4.OSRMのコンパイル
5.STXXLの構成
6.マップの抽出
7.移動時間の計算
8.Webサービスの実行とテスト
9.Nginxのセットアップ
10.スーパーバイザーのインストールと構成

ということで、コンテナイメージを使うことで、非常に簡単に実行環境の構築ができることを、改めて確認することができました。

参考までに、上記で立ち上げたルート検索エンジンに、以下のコマンドを実行して、ルート情報(JSON形式)を取得してみました。

この例では、北鎌倉から鎌倉大仏までの徒歩ルートを取得するために、それぞれの位置情報をパラメータとして検索エンジンに投げています。

curl --noproxy 127.0.0.1 'http://127.0.0.1:5000/route/v1/walking/139.545056,35.337103;139.535689,35.316696?alternatives=3&geometries=geojson' | jq 'def hexdec(i): "0123456789abcdef"[i:i+1]; {"type": "FeatureCollection", "features": [[.routes[].geometry] | [., keys] | transpose[] | {"geometry": .[0], "type": "Feature", "properties": {"stroke-width": 2, "stroke": ("#" + hexdec(15-.[1]*2) + hexdec(.[1]*2) + hexdec(.[1]*2))}}]}' > routes_kamakura.json

そして、取得したJson形式ファイルを、geojson.io 上に読み込ませると、以下のような、北鎌倉から鎌倉大仏までの散歩コースの複数ルートが取得できました。(これはこれで、別途、別な記事として整理したいと思います)

kamakura.PNG

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0