September 06, 2007

カシミール3DとGPS

GPSロガーとデジカメを持って散策し, 写真を撮って来ます. 帰宅後, カシミール3Dを使って, 地図上の写真を撮った位置にその写真を貼り付けることが可能です. 福岡市大濠公園を一周し, 自動販売機や児童公園の写真を撮ってきました. これらの写真を地図上のその位置に貼り付けることで, リアリティのあるアルバムが出来ます.
カシミール3D大濠公園

(1) 準備
(i) カシミール3Dに「GPSファイルツール プラグイン」「デジカメ プラグイン」を入れておきます.
(ii) デジカメの時計は正確に合わせておきます.
(iii) i-Blue 747でGPSログをしながら動き, 必要な場所で写真を撮ります.

(2) CSVデータの変換とカシミール3Dへの入力
(i) i-Blue 747のLog Formatの設定は, GGAすなわち, UTC,VALID,LATITUDE,LONGITUDE,HEIGHT,HDOP,NSATを出力しておきます. AutoLog Optionは60secondsごとと10metersごとにしてみました.
(i) i-Blue 747からはCSVファイルでデータ出力します.
(ii) カシミール3Dの「GPSファイルツール プラグイン」で読み込めるCSVファイルと微妙に異なるのでperlプログラムで変換します. 緯度・経度がi-Blue747はdd.mm.mmmmなのに対し, カシミール3Dはdd.mm.ss.ssのようです.
(iii) カシミール3Dで「ツール」「GPSファイルツール」「CSVファイルからの読み込み」でGPS経路データを読み込みます. 読み込みデータの確認は「編集」「GPSデータ編集」で行います.

(3) 写真への位置データ(緯度・経度)の入力
(i) 「ツール」「デジカメプラグイン」「ブラウザ起動」でファイルブラウザを起動します。そして、写真の入っているフォルダを開けます。
(ii) 必要な写真ファイルを選択し、「GPSデータから位置を推定する」を選択します。カシミール3Dは、写真の時間情報から、経路情報内の位置を推定します。
(iii) 「アイコンの位置を書き込む」を選択し, 写真ファイルのExifデータ中に位置情報を書き込みます。

※ カシミール3Dでなくて, Picasaで, ジオタグ(緯度・経度)入力する方法は, ここ.

※ 続きは、CSVファイル変換用のperlプログラム


#!/usr/local/bin/perl
#
# iBT-GPS i-Blue747のcsvファイルをカシミール3Dのcsvファイルへ変換する.
# 入力ファイル名 input.csv 出力ファイル名 output.csv
# LOG FORMAT: GGA = UTC,VALID,LATITUDE,LONGITUDE,HEIGHT,HDOP,NSAT
# AUTOLOG OPTION: 60seconds 10meters
# ※ heightはカシミール3Dで調整できるので全て0.0で出力している.
# convert => dd.mm.mmmm -> dd.mm.ss.ss
sub convert
{
local $n=pop(@_);
local $dd,$mm,$ss,$ssss;
$dd=int($n); $n=($n-$dd)*60;
$mm=int($n); $n=($n-$mm)*60;
$ss=int($n); $ssss=int(($n-$ss)*100);
return($dd+($mm/100)+($ss/10000)+($ssss/1000000));
}
open (IN, "input.csv");
open (OUT, ">output.csv");
print OUT < ;種別,名称,緯度,経度,標高,日付,時刻(UTC),測地系,方位,仰角,区間,アイコン,GPSでの名前,説明

EOF
$i=$flag=0;
while () {
chop;
($idx,$date,$time,$valid,$latitude,$ns,$longitude,$ew,$height,$hdop,$nsat,$etc)=split(/,/);
$date =~ s/\//-/g;
if ("$valid" eq "SPS") {
if ($flag==0) { $flag=1; $i++;
print OUT < ;ヘッダ,名称,線色(R),線色(G),線色(B),線幅,線スタイル
H$i,Tracks$i,255,0,0,2,1
;種別,名称,緯度,経度,標高,日付,時刻(UTC),測地系,方位,仰角
EOF
}
$latitude=convert($latitude);
$longitude=convert($longitude);
print OUT "T$i,No. $idx,$latitude,$longitude,0.0,$date,$time,WGS84,-9999.9,-9999.9\n";
} else { $flag=0; }
}
close(IN);
close(OUT);


as-192414 at 01:41コメント(0)トラックバック(0)パソコン | GPS 

トラックバックURL

コメントする

名前
URL
 
  絵文字
 
 
Visitors

Profile
QRコード
QRコード

レンタルサーバーなら使えるねっと

最新コメント
  • ライブドアブログ