GPSのデータをGoogle Mapsに載せる

今回のイタリア旅行では、写真にGeotagを付けたかったので、GPSレコーダーを持っていってみました。撮った写真が地図上にマッピングされるのは面白いのですが、GPSのデータを地図上に配置すれば自分の足跡がそのまま見られることに気がつきました。そんな感じで作ってみた地図がこれです。

旅全体の行程

より大きな地図で イタリア旅行 を表示

ヴェネツィアでの足跡

より大きな地図で ヴェネツィア を表示

この地図を作るまで結構いろいろ試行錯誤して、睡眠時間が削られたので、その方法を共有します。

その1

GPSレコーダーを用意する。
持ち運びに良さそうなGPSレコーダがいくつかあるのですが、今回はSonyGPS-CS3を利用しました。

ソニー SONY GPSユニットキット GPS-CS3K

ソニー SONY GPSユニットキット GPS-CS3K

実は、その前に、APTのPhoto Finder Miniというものを購入したのですが、iPhotoでせっかくの緯度経度情報が読み込めず利用をあきらめました。Picasaでは読めていますので、iPhotoとの相性のようですが、Mac使いには厳しいので断念。ここで学んだ鉄則は、世の中に利用者が多い方にのろうということです。
[rakuten:ida-online:10002541:detail]

その2

GPSレコーダをもって街に出る。GPS-CS3は、小さいのでかばんの中に入れていても全く気になりませんでした。室内はきつそうですが、それなりにGPSから情報は拾っていました。電池のもちは、単三の充電池を使っていましたが朝9時に出ると、夜7時か8時くらいに切れてしまいます。しかも、電池のインジケータの3つから減り始めると一気に終わりへと突き進みます。3つから2つになったら、そこから1時間も持たないくらいですので、一日使うには途中で電池の入れ替えが必要です。ちなみに、電源を切るとGPSのログは別のファイルになります。

その3
logファイルをkmlに変換。
僕はGPSBabelというツールを使いました。ただ、このツールではGPS-CS3が吐き出すログをそのまま食わせるとエラーになりますので、以下のようはSHスクリプトを用意して、ちょっとだけ手直ししてからツールに渡しています。

#!/bin/sh
for filename in $*
do
name=`basename $filename .log`
sed '1s/wgs-84\/gps.*/wgs-84/g' $filename >$name.tmp
mv $name.tmp $filename
done

次にGPSBabelを利用して、KMLを作成

gpsbabel -i nmea -f WG20090718062422.log -f WG20090718174045.log -x track,pack -o kml -F roma1.kml

一日のログが複数のファイルに分かれてしまった場合は、-fオプションを複数書き -xオプションでくっつけるようなフィルタを指定すると一個のファイルにしてくれます。これでGoogle Mapに読み込み可能なのですが、この状態で読み込むと線ではなくて点の集合になってしまいます。

ここからが試行錯誤だったのですが、myTracksというツールを利用すると、点を線に変換できました。その方法は、読み込んだKMLファイルを選んで「トラックを単純化」を実行し、生成されたトラックをKML形式で書き出す手順になります。なぜこれでOKなのか理由がつかめていないので、生成されたKMLファイルを見比べてみたいと思います。

その4

KMLファイルをGoogle Mapにあげる。
Google Mapに行き、マイマップを生成します。そこで、インポートというリンクがあるので作成したKMLを指定します。これで、無事KMLのデータがGoogle Mapに取り込まれます。

その5

足跡上に写真を配置する
せっかく写真にもGeotagが付与されたので、GPSの線の上に配置したいと思います。ここでは、flickrに画像があるものとして、その画像からKMLを生成してみます。まず必要な写真をflickr上で一つのセットにまとめます。そしてそのセットのIDを記憶し、このサイトでそのIDを入力します。するとそこに含まれる画像からKMLを生成してくれます。これをGoogle Mapでインポートすると、地図の上に写真が表示されます。
注意事項としては、100枚近辺でGoogle Mapはページを分けてしまいます。ページが分かれてしまうとそのページごとに表示されるのでパス上に写真が無かったり、写真しかないページになったりしてしまい、結構残念です。なので、写真とパスが合わせて100を超えそうな場合は、作成する地図を分けるなどしてうまい具合にバランスをとりましょう。このページ分けのルールがいまいち分からないのとうまくコントロールすることができないので、現状では違う地図を作る方が現実的です。

こんな感じで、足跡+写真の地図を作ることができました。ただ、この手順は結構めんどうなので、もうちょっと自動化できないか考えてみます。