Преобразование градусов, минут, секунд (DMS) в десятичные в PHP не полностью правильно
Я видел несколько решений этой проблемы, но все они неверны. У меня есть данные GPS с фотографии:
Latitude:
47/1
5/1
33927/1000
Longitude:
17/1
54/1
44513/1000
Я использовал эту формулу, чтобы получить десятичные координаты: Degrees = D + ((S/60)+M)/60
Результаты: 47.084722222222 , 17.915
Но согласно конвертеру Google это должно быть 47.092758 , 17.912365
Эта небольшая разница означает полгорода.
В PHP:
$exif = exif_read_data('temporary/' . $_FILES['photo']['name']);
//LONGITUDE
$degLong = explode('/', $exif['GPSLongitude'][0]);
$minLong = explode('/', $exif['GPSLongitude'][1]);
$secLong = explode('/', $exif['GPSLongitude'][2]);
$longitude = ($degLong[0]/$degLong[1]) + (($minLong[0]/$minLong[1])/60) + (($minLong[0]/$minLong[1])/60)/60 ;
//LATITUDE
$degLat = explode('/', $exif['GPSLatitude'][0]);
$minLat = explode('/', $exif['GPSLatitude'][1]);
$secLat = explode('/', $exif['GPSLatitude'][2]);
$latitude = ($degLat[0]/$degLat[1]) + (($minLat[0]/$minLat[1])/60) + (($minLat[0]/$minLat[1])/60)/60 ;
Что мне не хватает?