PHP: Получение данных GPS из файлов Jpg/Jpeg

Думаю многие из нас сейчас пользуются фотоаппаратами на наших мобильных устройствах. Однако не многие знают, что почти все устройства, имеющие 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;
  } 
Запись опубликована в рубрике PHP с метками , , , , , , , , , , . Добавьте в закладки постоянную ссылку.