###########################################
package IPhonePicGeo;
# Extract decimal GPS location from Photo
# Mike Schilli, 2014 (m@perlmeister.com)
###########################################
use Image::EXIF;
use Geo::Coordinates::DecimalDegrees;

###########################################
sub photo_latlon  {
###########################################
  my( $pic ) = @_;

  my $exif = Image::EXIF->new();
  $exif->file_name( $pic );
  my $info = $exif->get_image_info();

  return if !exists $info->{ Latitude };

  my( $head, $d, $m ) = loc_parse( 
      $info->{ Latitude } );
  if( $head eq "S" ) {
      $d = -$d;
  }
  my $lat = dm2decimal( $d, $m );

  ( $head, $d, $m ) = loc_parse( 
      $info->{ Longitude } );
  if( $head eq "W" ) {
      $d = -$d;
  }
  my $lon = dm2decimal( $d, $m );

  return( $lat, $lon );
}

###########################################
sub loc_parse {
###########################################
  my( $field ) = @_;

  return if !defined $field;

    # Latitude: N 37° 25.16'
    # Longitude: W 122° 1.53'
  my( $head, $d, $m ) = 
    ( $field =~ /^(\w)    # heading
                 \s+
                 (\d+)    # degrees
                 .        # degree symbol
                 \s+
                 ([\d.]+) # minutes
                /x );

  return( $head, $d, $m );
}

1;
