Думаю многие из нас сейчас пользуются фотоаппаратами на наших мобильных устройствах. Однако не многие знают, что почти все устройства, имеющие GPS приемник, при создании фотографий записывают в них координаты места фотографирования, дату и время съемки и другую информацию. Эту информацию удобно использовать в своих проектах и я покажу как это можно сделать на языке программирования PHP…
Для того чтобы получить данные GPS, сохраненные в файле JPG или JPEG в PHP нам поможет функция exif_read_data. Эта функция выполняет все необходимые действия и возвращает ассоциативный массив с данными от устройства GPS. Однако если мы хотим получить координаты широты или долготы в привычном нам гугловском представлении, нам придется провести некоторые вычисления:
function _Gps2Num($coordPart)
{
$parts = explode('/', $coordPart);
if (count($parts) <= 0) {
return 0;
}
if (count($parts) == 1) {
return $parts[0];
}
return floatval($parts[0]) / floatval($parts[1]);
}
function _GetGps($exifCoord, $hemi)
{
$degrees = count($exifCoord) > 0 ? _Gps2Num($exifCoord[0]) : 0;
$minutes = count($exifCoord) > 1 ? _Gps2Num($exifCoord[1]) : 0;
$seconds = count($exifCoord) > 2 ? _Gps2Num($exifCoord[2]) : 0;
$flip = ($hemi == 'W' or $hemi == 'S') ? -1 : 1;
return $flip * ($degrees + $minutes / 60 + $seconds / 3600);
}
function GetExifGpsInfo($file)
{ //Получаем дату и время съемки, координаты в системе понятной Google
$exif = exif_read_data($file);
$result = array('DateTime' => $exif['DateTimeOriginal'],
'Lat' => _GetGps($exif["GPSLatitude"], $exif['GPSLatitudeRef']),
'Lng' => _GetGps($exif["GPSLongitude"], $exif['GPSLongitudeRef']));
return $result;
}