Как узнать географическое положение (в десятичном формате) изображения

Любой самый простой способ получить широту и долготу изображения в десятичном формате?

$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
)

Кто-нибудь здесь может помочь мне преобразовать эти вещи в десятичном формате?

1

Решение

Похоже, что 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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]