Skip to content
sayrun edited this page Aug 7, 2016 · 34 revisions

場所を焼きこむツール(パイロット版)

えっと、このツールはJpegのExifにGEO TAGを埋め込むためのツールです。 同じことをできるツールはたくさんあるけど、売りとしてはGT-730FL/S(Skytraq版)からデータを直接読めるようにしていること。 それと、位置情報を読み込む部分をプラグインにしていること。 ほかの対応は作りこんでないけど、GT-730FL/S以外のGPSロガーに対応したりできること。

やりたかったこと

今まではCanwayとかGPSBabelでGT-730FL/Sから取得した位置データをGPXにして、ViewNX 2でExifにGEO TAGを設定するという使い方をしていた。 もっと楽にやりたいなと思ったのが始まり。

パイロット版

動作検証のために作成しているので、データフォーマットなんかで考慮が足りないことが多いと思う。 これで自分がしたいことはできちゃっているので、完成させられるかは微妙。

使い方(羅列)

  • Bayaki.exeとSkyTraqPlugin.dllを適当なフォルダに置く
  • Bayakiのデフォルトでは、GPXとKMLしか読み込めない。
  • Plugin化しているSkytraqを使うとGT-730FL/Sから位置情報を読み込める
  • SkyTraqPlugin.dllの読み込みはツールバーのコンテキストメニューから読み込む
  • 位置情報は一度読み込んだら基本は保持し続ける
  • ユーザ操作で位置情報は削除できる
  • この状態で写真を読み込めば、一致する位置情報を特定して付加する
  • チェックボックスにチェックが入った状態で「Update」をクリックするとGEO TAG付きで保存する
  • 位置情報や設定情報はMy Documentsに保存する
  • A-GPS(Ephemeris)をSkytraqのFTPから取得して設定することができる
  • Skaytraq共通だとは思うものの、GT-730FL/Sでのみ動作確認
  • 設定や読み込んだ位置情報はMy Documents\Bayaki folder に保存
  • ファイル名は状況で色が変わる
  • 位置データを確定(同一時間)=黒
  • 位置データを確定(時間近似)=ピンク
  • 位置データを確定できないが、もともとも位置データがある=青
  • 位置データを確定できず、もともとの位置データもない=黒
  • 取り込んだ位置情報を地図上に描画するとともに、速度をグラフ化

.NETすごい

Exifを読んだり書いたり、手がかかる箇所は全編ライブラリが機能提供してくれていて、自分がやることといえば、体裁を整えることくらい。 Exifを読み込む部分独自で書いてみたけど、まぁ入れ子になったデータの構造がしんどい。 こんな部分を一括でお世話してもらえるってすごい。

今できること

  • GPXファイルから位置情報を読み込む
  • GT-730FL/Sから位置情報を読み込む
  • GT-730FL/Sのログを消去する
  • GT-730FL/SにA-GPSのデータ(Ephemeris)を書き込む
  • GT-730FL/SのLog設定を行う
  • GT-730FL/Sの読み書きは10秒のタイムアウトでリトライ
  • 取り込んだ位置情報とJPEGの撮影時間から位置合わせしてGEO TAGを設定する
  • 設定したGEO TAGをもとに地図表示をする
  • GEO TAGを設定したJPEGを保存する
  • 取り込んだ位置情報をGPXに書き出す
  • 地図表示はYOLPで表示
  • JPEGをPreviewしたときのMAP上マーカーをドラッグすると位置情報を修正可能
  • 画像Previewのコンテキストメニューから位置情報の削除が可能
  • 画像Previewのコンテキストメニューから位置情報の付加が可能
  • JPEGの位置合わせはより近いデータを利用する
  • KMLを読み込めるので、google mapsのタイムラインをエクスポートした情報を利用可能
  • 位置情報のプレビューでWaypointを表示
  • GPSBabelを実行して結果を取り込むことができる(なので、ほとんどのロガーで使えるはず)
  • 同一時間がないときの位置情報は時間の近い値も採用する「撮影時間から20分以内の近い時間」
  • 同一時間がないときの位置情報は移動がない値も採用する「撮影時間前後の2点が1600mより近い場合の、撮影時間に近い時間」

今後の予定

  • Skytraqの通信処理をもう少し汎用化したい
  • Exifの書き込みを独自で実装したい
  • 位置情報の取り込みで複数のtrksegを考慮したい
  • KMLとCSVの出力を実装したい
  • やりたいことをある程度作りこんだら、全体を作り直して、アルファ版に移行したい。
  • ツールの名前をもうちょとなんとかしたい(「焼き場」に誤読されそうだし)
  • アイコンが酷いのでもうちょっとちゃんとしたい
  • データの保存先を設定できるように考えたい
  • Pluginのアイコンについては自分で並べたいかも
  • Exifに緯度経度を格納するとき、端数の出ない変換を考えたい

GT-730FL/Sについて

自分が持っているのは、SkyTraq製のチップを利用したバージョンだが、調べてみるとSiRF製のチップを利用したバージョンもあるらしい。 USBコネクタの付け根が銀色か黒色かで見分けるらしいですが、詳細は秋月電子のサイトに記載があります。 他方、コマンドは互換があるように書かれているサイトもあります。 しかし、SiRF版のGT-730FL/Sで、SkyTraqPlugin.dllを利用したとき何が起こるかはわからないので、利用は避けてもらったほうが良いかなと思います。とくに、A-GPS(Ephemeris)の書き込みとかは利用しないでほしいです(書き込み用のコマンドでNACKが返るなら動作しないだけのはずだけど)。 SiRF版のGT-730FL/Sを利用している場合は、GPSBabelPlugin.dllを利用したほうがよさそう。

そんなかんじ