携帯W43SのGPS情報でGoogle Mapする(4)

鵺さんコメントありがとうございます。

02 DATUM

GPSで得た現在位置を地図の上で見てみたら、居るはずの所から500mくらいずれてた、と言う経験はありませんか? これは測地系の違いから起こることです

なるほど、直交座標と楕円体座標変換なんですね。

そして面倒くさがりな私は結果的に
YappoLogs: Geo::Coordinates::Converter - 緯度経度を簡単に変換する
を使わせてもらいました。一番大変だったのがインストールっていう・・・(^^;
素直に
# perl -e shell -MCPAN
cpan> install Geo:: Coordinates::Converter
が良さそうです。途中はまって色々と入れたような気がしますが覚えてません(^^;
以下コード。
#!/usr/bin/perl -w
use Image::ExifTool 'ImageInfo';
use Geo::Coordinates::Converter;

my $file = shift or die "Please specify filename";
my $info = ImageInfo($file);

my $GPSPosition = $info->{GPSPosition};
my $datum = $info->{GPSMapDatum};

if( defined $GPSPosition ){

    #35 deg 40' 21.90" N, 139 deg 43' 27.37" E
    $GPSPosition =~ s/^(\d*) deg (\d*)\' ([0-9\.]*)\" N, (\d*) deg (\d*)\' ([0-9\.]*)\" E$/
$1 $2 $3 $4 $5 $6/;

    my @val = split( / /, $GPSPosition );
    my $lat = $val[0] + $val[1] / 60.0 + $val[2] / 3600.0;
    my $long = $val[3] + $val[4] / 60.0 + $val[5] / 3600.0;

    if( $datum eq "TOKYO" ){
        my $geo = Geo::Coordinates::Converter->new( lat=> $lat, lng => $long,
 datum => 'tokyo' );
        my $point = $geo->convert( wgs84 );
        $lat = $point->lat;
        $long = $point->lng;
    }

    print "<a href=\"http://maps.google.co.jp/maps?q=", $lat, "," , $long, 
"&z=16\">Google Map</a>\n";
}