読者です 読者をやめる 読者になる 読者になる

OpenStreetMapの地図をGarminのGPSロガーで使う(ver2)

海外旅行 地図 旅行用アイテム

以前、ガーミンのGPSロガーでOpenStreetMap(OSM)の地図を取り込む方法について書いたんだけど、OSMのリニューアルか何かでその方法が使えなくなっていた。
ん?と思ってサイトを見てたら、より簡単に地図データの取得ができるようになってるじゃないすか!
すばらしい。


それにしても、OSM自体の普及もどんどん進んでいて、Yahooが一部機能(Yahooロコ地図≠Yahoo地図)に採用するとか、wikipediaが採用したとか、色々ニュースも流れてますね。
OSMはwikipediaのように「みんなで作ろうぜ」な地図なので、まだまだ存在感の少ない日本においては地図的にちょっと足りてない感じがあるんだけど、Yahooが地図をOSMに地図を無償提供するというニュースが流れて、「これは・・・!」と思ったりもして。
Yahooについては、かなり昔にアルプスという地図会社を買収したんだけど、結局地図はゼンリンのを使ってるんで、アルプス整備分の地図をOSMに提供したのかな?分かんないけど。
Yahoo! JAPAN、「Yahoo!ロコ地図」をリニューアルし、「OpenStreetMap」のレイヤー追加


さて、OpenStreetMapの地図をガーミンのGPSロガーに入れる方法について。
OSMでは「CloudMade」という地図のダウンロードサイトが用意されていて、ぶっちゃけそこを見れば大体分かってしまいます。
いつも旅行前に渡航先の地図をちまちまDL&転送してたんだけど、今回は一気に「アジア全て」の地図をダウンロードしてみました。
データ量は1.18 GB。
ん?意外と少ないすね。
まぁ、OSMはアジア全般(日本も含め)それほど地図が詳細じゃないので、データが軽いんですな。
軽いといっても、例えばバンコクあたりだと↓くらいにはキッチリ詳細地図があるんでご安心を。


さて。データの取得&転送の手順は以下の通り。
1.地図データ(osmファイル)をダウンロード
2.osmファイルをガーミンで読み込めるimgファイルに変換
3.ガーミンのSDカードにファイルを入れる
これだけです。
ただしこれ以降の手法ではcygwin使うんで、コマンド類が嫌だーという人はすみません。

cygwinインストール

まずはcygwinをインストールする。
setup.exeをダウンロードしてクリックするだけの簡単なお仕事です。
ただし、インストール時の「Select Packages」画面で「WEB」->「wget」をクリックしてインストールonにしておく。
これでwgetコマンドが使えるようになる。

1.地図データ(osmファイル)をダウンロード

データは「CloudMade」からダウンロードする。
地域名のリンクが表示されるので、欲しいデータの地域を選んでいくわけすね。
ここでは「Asia」を選択。すると、
asia.osm.bz2 (3467.3M)
というリンクが表示される。
これがアジア全体の地図で、bz2で圧縮されています。
wgetコマンドでダウンロードする場合は以下。
wget http://downloads.cloudmade.com/asia/asia.osm.bz2
ダウンロードしたデータはcygwinをインストールしたフォルダの
\cygwin\home\ユーザー名
に入ってます。
取得したbz2ファイルはcygwin上のbunzip2コマンドで解凍。
bunzip2 asia.osm.bz2

2.osmファイルをガーミンで読み込めるimgファイルに変換

変換にはmkgmapというフリーツールを利用する。
加えて、mkgmapが大きなファイルを扱えないので、splitterという分割ツールも使う。
それぞれダウンロードして
\cygwin\home\ユーザー名
にjarを設置。
もしくはcygwinのwgetでダウンロード&解凍。


まずはsplitterでasia.osmを分割。
java -Xmx1500m -jar ../splitter-r200/splitter.jar asia.osm;date
1500mというのは使用するメモリサイズなんだけど、これが少ないと「メモリが足りない」というエラーがでるので、大きめで指定してます。
自分のPCのメモリに合わせて指定するべし。
ちなみに、結構時間がかかるので注意。自分のPC(Core i7)では45分かかった。
コマンドの実行完了を知りたい場合は↑のようにdateも後ろにひっつける。


次にmkgmapでimgファイルに変換。
splitterで分割されたファイルはtemplate.argsというファイルにリスト化されているので、これを引数に与える。
かつ、gmapsupp.imgを作りたいので--gmapsuppを指定。
java -Xmx1500m -jar mkgmap.jar --gmapsupp -c template.args;date
自分のPC(Core i7)では1時間15分かかった。

3.ガーミンのSDカードにファイルを入れる

mkgmapが完了すると、「gmapsupp.img」というファイルができてます。
これをSDカードの「Garmin」というフォルダに入れると完了。
Garminというフォルダがなかったらフォルダを作ってから格納。
以上です!
たったこれだけでアジア全体の地図が無料でゲットできるなんて、恐ろしく素晴らしいコトすね。これは。

ファイルの合成

おまけとして、「アジア全体」とかじゃなくて、国別の地図を複数ダウンロードして、それを合成したい場合の話。
ここではベトナム・カンボジア・韓国の地図を例に。
mkgmapでは、デフォルトだと「63240001.img」という固定名で出力されるが、複数のimgファイルを作りたいときは上書きされると面倒なので別名をmapnameオプションで指定する。

java -Xmx1024m -jar mkgmap.jar --mapname=63241001 vietnam.osm
java -Xmx1024m -jar mkgmap.jar --mapname=63241002 cambodia.osm
java -Xmx1024m -jar mkgmap.jar --mapname=63241003 south_korea.osm

とりあえず2つのimgからgmapsuppを作る。
java -Xmx1024m -jar mkgmap.jar --gmapsupp 63241001 .img 63241002.img
2つのimgを合成する場合はこれで終了。3つ目以降も合成したい場合は、できたgmapsuppファイルをいったんリネームして、
mv gmapsupp.img gmapsupp2.img
3つ目のimgを合成しつつ、もう一度gmapsupp.imgを作る。
java -Xmx1024m -jar mkgmap.jar --gmapsupp gmapsupp2.img 63241003.img


こんな感じで。
ほんでは。