人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

携帯電話で取った画像から、緯度・経度情報を抜き出してgoogle mapsにマーカーを付加したいと考えています。perlでimage::Exifを用いて抜き出してみましたが、緯度経度がどうもずれていたり(測地系:WGS-84)、「35 / 1 , 34 / 1 , 4240 / 100」といった形式で出力されています(度分秒?)。
google mapsに使用できるような情報を抜き出す方法を(perlで)具体的に教えてください。

よろしくお願いします。

●質問者: shuha
●カテゴリ:ウェブ制作
✍キーワード:Exif Google Maps Perl 携帯電話 測地系
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● thrillseeker
●50ポイント

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.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ