Любой самый простой способ получить широту и долготу изображения в десятичном формате?
$exif = exif_read_data($photos['file_path'],0, true, false);
print_r($exif);
что я получил в этом:
[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
)
Кто-нибудь здесь может помочь мне преобразовать эти вещи в десятичном формате?
Похоже, что GPSLatitude [0] — это градусы, GPSLatitude [1] — это минуты, а GPSLatitude [2] — это секунды и т. Д., Но они закодированы как «целое число» / «знаменатель».
Вот код, который выполняет вычисления:
$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";
Это выведет что-то вроде:
Longitude = 1.632425 , Latitude = 53.297658333333
Других решений пока нет …