google mapsに使用できるような情報を抜き出す方法を(perlで)具体的に教えてください。
よろしくお願いします。
http://homepage1.nifty.com/gigo/DC/GPS/gpsifd.html
Exif 2.1 GPS IFD tags
Image::EXIF の vsersion 1.00.3 の場合、「N 35 / 1 , 34 / 1 , 4240 / 100」形式を
「N 35 34’ 4.24」形式に変換してくれるようです。
どの version でも動くよう、取り敢えず両方の形式に対応した
スクリプトを書いてみました。
#!/usr/bin/perl
use Image::EXIF;
die ”Usage: $0 file names...¥n” unless(@ARGV);
foreach $file (@ARGV)
{
my $url = ”http://maps.google.co.jp/maps?hl=ja&spn=0,0”;
my $exif = new Image::EXIF($file);
my $image_info = $exif->get_image_info();
my (%c,$nwse,$deg,$min,$sec);
foreach $axis ( (”Latitude”,”Longitude”) )
{
if ($image_info->{$axis} =~ /(¥w)¥s+(¥d+)[^¥d]+([¥d¥.]+)¥’¥s*([¥d¥.]+)*/)
{
# Output type: ”A DD MM’ [SS]”
($nwse,$deg,$min,$sec) = ($1,$2,$3,$4);
}
elsif ($image_info->{$axis} =~ /(¥w)¥s+(¥d+)¥/(¥d+)¥s+(¥d+)¥/(¥d+)¥s*(¥d+)*¥/*(¥d+)*/)
{
# Output type: ”A DD/N MM/N [SS/N]”
$nwse = $1;
$deg = $2/$3 if (0<$3);
$min = $4/$5 if (0<$5);
$sec = $6/$7 if (0<$7);
}
$c{$axis} = $deg + $min/60 + $sec/3600;
$c{$axis} = -$c{$axis} if ($nwse =~ /[SW]/i);
}
$url .= sprintf(”&ll=%s,%s”,$c{”Latitude”},$c{”Longitude”});
print ”[$file] $url¥n”;
}
なお位置ずれに関しては2番目のURLに情報がありました。
※回答画面では¥や”が全角に強制変換されてしまうようなので、
スクリプトをコピーペーストする時はご注意下さい。
http://d.hatena.ne.jp/twisted0517/20050722
ニヤリ@避難所 - 製作欲盛り上がりんぐ
コメント(0件)