LoginSignup
34
39

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-06-21

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

OSRMとは

osrmtop.png

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 のデータを選択します

openstreetmapdata.png

japan.png

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や仕様について調査しまとめていきます :star2:
34
39
1

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
34
39