Skip to content

Instantly share code, notes, and snippets.

@satojkovic
Created August 21, 2012 16:27
Show Gist options
  • Save satojkovic/3417053 to your computer and use it in GitHub Desktop.
Save satojkovic/3417053 to your computer and use it in GitHub Desktop.
#!perl
use strict;
use warnings;
use Image::ExifTool qw(:Public);
use Location::GeoTool;
use WebService::Simple;
my $img = shift;
if( !defined($img) ) { die "Usage: $0 <image file>"; }
my $exifTool = new Image::ExifTool;
my $exifInfo = $exifTool->ImageInfo($img);
# convert dms to dm
my $oGeo = Location::GeoTool->new({changeMyself => 0, enableWantarray => 0});
my $lat_dms = dms_format($exifInfo->{'GPSLatitude'});
my $long_dms = dms_format($exifInfo->{'GPSLongitude'});
$oGeo->set_coord($lat_dms, $long_dms, 'wgs84', 'gpsone');
my ($lat_dm, $long_dm) = $oGeo->format_degree->array;
print "($lat_dms, $long_dms) => ($lat_dm, $long_dm)\n";
# reverse geocoding
my $didit = WebService::Simple->new(
base_url => "http://geocode.didit.jp/reverse/"
);
my $res = $didit->get( {lat => $lat_dm, lon => $long_dm} );
print $res->{'_content'} . "\n";
# format GPSLatitude and GPSLongitude
sub dms_format {
my $dms = shift;
my @dms_formatted = $dms =~ /(\d+)\D*(\d+)\D*(\d+)\.(\d+)\D*[NSEW]/o;
return "$dms_formatted[0].$dms_formatted[1].$dms_formatted[2].$dms_formatted[3]";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment