7月8日(日)に第27回北海道開発オフが開催されました。
場所は、西区民センター集会室(カーペット敷きの和室)。
開発オフとしては初めての場所です。
やったこと
GPSロガーで得たログ情報を変換し、GoogleMapに表示するために
変換用のスクリプトを作成しました。
GPSログを読む
GPSログはカンマ区切りのテキストファイルです。
こんな感じ。
---,$GPGGA,145926.000,4258.0882,N,14120.6073,E,1,08,00.0,138.0,M,00.0,M,,*6E
---,$GPRMC,145926.000,A,4258.0882,N,14120.6073,E,0.00,0.00,020512,,*07
今回持っていたログの形式以下のようになっていました。
- 「$GPGGA」「$GPRMC」の2行1セットで記録されている
- それぞれのフォーマットの先頭にTagがついている(何もないときは “—“)
- ロガーの電源を入れたとき、テスト用?なのか Tag “-99” のデータが書き込まれる
GPSロガーのフォーマットについてはここに詳しく載っていました。
GPS受信機出力データ書式
日本語はここが良い感じでした。
「$GPGGA(海抜高度など標高の情報を含む)」「$GPRMC(対地速度・進行方向の情報を含む)」は位置情報については同じデータを返していることがわかりました。
今回はとりあえず位置情報しかいらないので、$GPGGAのm2,c1,m3,c2データがあればOK。
変換をかける
最初は普通にGPSに記録されている緯度経度をKMLに与えていたのですが、どうにも位置情報がずれる。
よくよく調べてみると
- GPSでは緯度経度を[NN度nn.nnn分] で示す
- KMLには緯度経度を[X.xxxx度] で示す
必要がある事がわかりました。(気がつくまでに一番時間がかかった)
40度30分を40.5度に変換(60→10進法変換)しないとだめなのですね。
スクリプト
あとは、フォルダを読み込んでログを解析し、KMLファイルを出力させればOKです。
# main.rb require './kml_creator' KmlCreator.new.create "[大量の.gpsファイル群]", "[出力先]"
$ ruby main.rb
作成した物はこちらにあります。
kml_creator.rb
これから改良して
- 開始地点をポイント表示(時刻も表示)
したいなあと思っています。
和室がよかった
はじめて和室で開発したのですが、とても楽しかったです。
会場に到着したら、おもむろにローテーブルと座布団を出し、好きな位置に座る・・・。
人数が少なめだった事もあり、座布団使い放題です。
中には、ローテーブルを重ねて、座椅子に座ったときにちょうど良い高さになるよう調節している人もいました!
会場の写真はDevdoのリンクを貼っておきます。
写真1, 写真2
最後の成果発表も、発表者が前に出るのではなく、みんなが発表者のところへ移動していく形で面白かったなあ。
また、あの会場でやってみたいです。