2015-09-17 2 views
1

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

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

Любой здесь может помочь мне преобразовать это вещи в десятичном формате степени?

ответ

0

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

Смежные вопросы