Any easiest way to get the latitude and longitude of an image, in decimal degree format?
$exif = exif_read_data($photos['file_path'],0, true, false);
print_r($exif);
what i got in this:
[GPS] => Array
(
[GPSLatitudeRef] => N
[GPSLatitude] => Array
(
[0] => 13/1
[1] => 57/1
[2] => 1032/100
)
[GPSLongitudeRef] => E
[GPSLongitude] => Array
(
[0] => 121/1
[1] => 9/1
[2] => 5137/100
)
[GPSAltitudeRef] =>
[GPSAltitude] => 344/1
[GPSTimeStamp] => Array
(
[0] => 10/1
[1] => 12/1
[2] => 5292/100
)
[GPSSpeedRef] => K
[GPSSpeed] => 0/1
[GPSImgDirectionRef] => T
[GPSImgDirection] => 32993/102
[GPSDestBearingRef] => T
[GPSDestBearing] => 75030/523
[GPSDateStamp] => 2015:07:28
)
Anyone here can help me to convert this things in decimal degree format?
It looks like GPSLatitude[0] is Degrees, GPSLatitude[1] is Minutes, and GPSLatitude[2] is Seconds and so on but coded as 'whole number' / 'denominator'
Here is some code that does the calculation:
$exif = exif_read_data("your-image-file-with-GPS-exif-data.JPG",0, true, false);
if (isset($exif['GPS'])) {
$longitude_array = $exif['GPS']['GPSLongitude'];
$latitude_array = $exif['GPS']['GPSLatitude'];
} else {
die("no exif GPS");
}
function GPScalc($string) { // function to calculate the EXIF encoded string
$GPSparts = explode("/",$string);
return $GPSparts[0] / $GPSparts[1];
}
function GPSdec($GPSarray) { // function to put the exif parts together to decimal degrees
return GPScalc($GPSarray[0]) +
GPScalc($GPSarray[1])/60 +
GPScalc($GPSarray[2])/3600;
}
$longitude_decimal_degree=GPSdec($longitude_array);
$latitude_decimal_degree=GPSdec($latitude_array);
print "Longitude = $longitude_decimal_degree , Latitude = $latitude_decimal_degree";
This will output something like:
Longitude = 1.632425 , Latitude = 53.297658333333