GoogleMapのオープンソース版地図アプリ(OSRM)のインストール


関連して以下も参考にしてください

OSRMとは

OSRM(Open Source Routing Machine)はフリーの経路検索アプリです。
GoogleMapは非常に便利ですが、利用回数に制限があるため大量検索を行う場合はこちらの構築も検討してみてはどうでしょうか?

インストール内容

  • OSRMのバックエンドモジュールのみインストールします
    • なのでトップにあるような地図画像は残念ながら今回は出力できません(無念です)

環境情報

Ubuntu14.10を用います。
ちなみにCPUはハイパースレッディング込みで8コアのパワーがあるのを用います。

バージョン情報
% cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.10
DISTRIB_CODENAME=utopic
DISTRIB_DESCRIPTION="Ubuntu 14.10"

手順

参考情報のサイト通り進めました。

依存パッケージ

依存パッケージインストール
sudo apt-get install build-essential git cmake pkg-config libprotoc-dev libprotobuf8 \
protobuf-compiler libprotobuf-dev libosmpbf-dev libpng12-dev \
libbz2-dev libstxxl-dev libstxxl-doc libstxxl1 libxml2-dev \
libzip-dev libboost-all-dev lua5.1 liblua5.1-0-dev libluabind-dev libluajit-5.1-dev libtbb-dev

OSRMダウンロード

OSRMをGithubからクローン
 % mkdir ~/osrm
 % cd osrm
 % git clone https://github.com/Project-OSRM/osrm-backend.git

OSRMのビルド

OSRMのビルド
 % cd osrm-backend
 % mkdir -p build
 % cd build
 % cmake ..
 % make

地図情報の取得

Open Street Mapから日本に絞って地図情報を取得します。
以下のサイトにアクセスしてダウンロードするURLをメモします。
(結構サイズが大きいので、直接wgetします)

asia > japan のデータを選択します

OSMの日本地図をダウンロード
# サーバにDL
wget http://download.geofabrik.de/asia/japan-latest.osm.pbf

地図情報pbfを変換

少し時間がかかって5分位要しました。

データ変換
# pbfのデータをosrmが認識する形式に変換
 % ln -s osrm-backend/profile.lua
 % ls -s osrm-backend/lib
 % ln -s osrm-backend/build/osrm-extract
 % ln -s osrm-backend/build/osrm-prepare

# 変換実行
# Extracting the Road Network
./osrm-extract data/japan-latest.osm.pbf

ルーティング計算

これが無茶苦茶時間かかりました。
2-3時間オーダで放ったらかししていたら終わっていたぐらいです。

グラフ情報を生成
# Creating the Hierarchy
# extractingで作ったデータを指定するようです
 % ./osrm-prepare data/japan-latest.osm

起動

OSRMの起動
# Running the Engine
nohup ./osrm-routed data/japan-latest.osrm &

疎通確認

サーバにアクセスして疎通します。
デフォルトポートは5000です。

http://FQDB:5000/locate?loc=35.65858,139.745433

検索結果
{"mapped_coordinate":[35.658356,139.745087],"status":0}

ステータスは正常終了が0みたいです。
locateはどういうAPIかというと、取り込んだ地図情報で最も近いノードを返してくれるようです。

参考情報

基本的に本家のWiki通り進めたらうまくいきました
https://github.com/Project-OSRM/osrm-backend/wiki/Building-on-Ubuntu
https://github.com/Project-OSRM/osrm-backend/wiki/Building-OSRM
https://github.com/Project-OSRM/osrm-backend/wiki/Running-OSRM

今後

  • 引き続きOSRMのAPIや仕様について調査しまとめていきます