OpenStreetMapからGarmin GPS用の地図ファイルを作成する

MAXXIS太魯閣国際ヒルクライム2016に参加する際、Garmin GPS デバイス用の台湾地図が欲しかったので、Open Street Mapから自分で作成する事にしました。

太魯閣や花蓮について一般地図よりも詳細な地図が欲しいところですし、今後、出張でイスラエルやメキシコに行く事があった際などに自分で何とかできるようになりたいので、この機会に覚えてしまいます。

使用するのは mkgmap と splitter というJavaのソフトウェア(というかライブラリ)です。

どちらも mkgmap 本家からjarファイル形式でダウンロードできます。

リンク先の本家ではパソコン上で作成した地図をデータ転送用のソフトを用いて GPS 端末に転送する方法を説明していますが、私はそんな面倒なことはしたくないので gmapbmap.img やら gmapsupp.img やらのファイルを作成して GPS 端末の Garmin ディレクトリ (フォルダ) 直下に置くことを考えます。

GarminのGPSデバイスは、このディレクトリに含まれている img という形式のファイルを自動的に読み込んで地図として表示します。

したがって、デバイス購入時から含まれている img ファイルを削除して、ご自身で作成された img ファイルで上書きしてしまえば、その地図情報が端末に表示されるようになります。

例えばこんな具合に。


そこで OpenStreetMap というフリーの地図データを素材に、この img ファイルを自作してしまおうという訳です。

そこでドキュメントを読み込んでいくと、どうやらOpenStreetMapの地図ファイル作成には *.pbf という形式のファイルが必要となる事が分かりました。

このPBF形式のファイルの入手は OpenStreetMapによると、複数あるリンク先のサイトの中からダウンロードできるとの事です。

配布元のサイトを幾つか抜粋すると、このような具合。



私が今回欲しいのは台湾の道路地図と花蓮の詳細地図なので、Geofabrikから Sub Region: Taiwan と Metro Extracts から Hualien のタイル (PBFファイル) をダウンロードします。

ファイルを確認すると、ちゃんとpbf形式になっていますね。




Wikiを見ていくと、mkgmap を使う前にpbfファイルを分割する必要がありそうなので、splitterを使ってダウンロードしたファイルを分割します。

これは mkgmap が対応できるデータの容量に限りがあるためで、一部の都市だけのデータを用いる場合など、対象のデータサイズが小さい場合には必要ないこともあります。

しかし、扱う範囲が北海道や九州、台湾ぐらいの大きさになる場合には、予め分割しておいたほうが無難です。

分割する際には Java の VM に 2GB 程度のメモリを割り当てる必要がありますので、実行前にお使いのパソコンの状態をご確認ください (と言っても最近の機種であれば、4GB以上のRAMが搭載されていることが普通なので、あまり問題になることはないかと思います)。

ここで実行時にエラーを吐き出した場合、おそらくJavaのバージョンがあっていないので、シムリンクを張り替える必要があります。

実行すると新たなファイルが幾つか生成されますが、このうち使うのは 632なんとか.osm.pbf というファイルです。

他のファイルを使うと様々な設定ができそうなのですが、取り敢えずはファイルを作成する事を優先するので、今回は割愛します。

何に使うのか、そのうち調べておかないとな(・。・;

mkgmapの実行が終わると、gmapsupp.img というファイルができますので、これをGarmin GPSデバイスの指定ディレクトリ(/Garmin)に置くとデバイスで地図を読み込めるようになります。

一緒に作成された 6324なんとか.img というファイルを試しにデバイスの Garmin ディレクトリに置いてみると、現在の gmapsupp.img の内容(日本地図)に加えて、台湾の地図も表示できる謎デバイスに
仕上がりました。

これってストレージ容量が許す限り、いくらでも重複して入れても良いのですかね。

Garminデバイス側の設定で、どの地図を表示するのか選ぶ事ができるのですが、たくさん有りすぎて、どれがどこの地図だか分からなくなりました。PC上で調べれば分かるので、転送する前に把握しておけば良いのですけどね。

これで一応は、台湾行きの準備が整いました。

Genymotionを起動するにはVirtualBoxが必要

※ この話題は Genymotion Version 2.6.0 版の話です。ソフトウェア更新等の環境の変化により、記述内容が適応できなくなる場合がございます。

当たり前に見えて、調べても情報が見当たらなかったので記述します。

最近、ご無沙汰していたMacBook AirにGenymotionをインストールしたところ、下記のようなエラーメッセージが表示され、ソフトウェアが起動しませんでした。

Virtualization engine not found. Plugin loading aborted.

これは何事だと、Android Studioを再インストールしたり、エラーメッセージで検索しても一向に解決策らしい情報を得られませんでした。

エラーメッセージを読んで行くと、どうやらVirtualBoxが必要だということが判明し、そう言えば、こっちのパソコンには入れてないなと思い返してインストールしてみたところ、あっさり解決しました。

いや、WindowsやLinux用の筐体は別に持っているのに、貧弱なノートで仮想マシンを動かして演算なんてしたくないですし…

Railsのgitリポジトリをクローンする

ほぼ2ヶ月ぶりに Ruby on Rails のプロジェクトを触るので、思い出しがてらにやった事をメモしてみます。

※ もちろん業務でやっていることは書けないので、あくまで趣味でやっている遊びです。そのため、自分からやろうとしない限りは全く触れる機会もないので、忙しくなってしばらく離れていると、すぐに自分でやった事を忘れます。

まずGitからリポジトリをクローンしてきます。

クローンが終わったら、該当ディレクトリに移動して以下のコマンドを実行します。

Windowsの各種OSをお使いの場合、ここで Gem::InstallError というのが出ることがあります。

http://stackoverflow.com/questions/10694997/gem-install-json-v-1-7-3-gives-please-update-your-path-to-include-build-tools

ほとんどの場合、Ruby Devkitが存在しない事が原因なので、エラーが出たら、Devkitがインストールされてるか、Pathが正しく設定されているかをまず疑ってください。

bundle install が無事に終了したらRailsを起動し、ブラウザで http://localhost:3000 にアクセスします。

おそらく、ActiveRecord::PendingMigrationError というエラーが出ますので、一度、サーバーを止めて素直にDBの内容をコピーします。

成功したら、再度、サーバーを立ち上げてブラウザからアクセスしてみてください。

Contact Us