Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mldiogo87

Função para obter coordenadas de GPS

Recommended Posts

Bom dia,

 

Estou utilizando uma função para obter os dados de GPS de imagens.

 

Ela funciona, ok.

 

Mas quando uma imagem não tem dados de GPS o PHP retorna o erro Undefined index das variáveis.

 

Tentei colocar if empty para as variáveis mas o erro persiste.

 

Teria como fazer algo para quando não tiver dados de gps retorna "Sem dados de GPS"

<?php
$exif = exif_read_data($filename);
$latitude = gps($exif["GPSLatitude"], $exif['GPSLatitudeRef']);
$longitude = gps($exif["GPSLongitude"], $exif['GPSLongitudeRef']);


##### não funciona
if ( empty($GPSLatitude) || empty($GPSLatitudeRef) || empty($offset) || empty($GPSLongitude) || empty($GPSLongitudeRef) ) { 
echo "Arquivo sem coordenada de GPS"; }

function gps($coordinate, $hemisphere) {
  for ($i = 0; $i < 3; $i++) {
    $part = explode('/', $coordinate[$i]);
    if (count($part) == 1) {
      $coordinate[$i] = $part[0];
    } else if (count($part) == 2) {
      $coordinate[$i] = floatval($part[0])/floatval($part[1]);
    } else {
      $coordinate[$i] = 0;
    }
  }
  list($degrees, $minutes, $seconds) = $coordinate;
  $sign = ($hemisphere == 'W' || $hemisphere == 'S') ? -1 : 1;
  return $sign * ($degrees + $minutes/60 + $seconds/3600);
}


?>

Obrigado!!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usei em todas, agora dentro da função o erro retorna de uma variável que não sei onde verificar

Notice: Undefined offset: 1 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\new\adajax\include\gps.php on line 33

Notice: Undefined offset: 2 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\new\adajax\include\gps.php on line 33

Notice: Undefined offset: 1 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\new\adajax\include\gps.php on line 33

Notice: Undefined offset: 2 in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\new\adajax\include\gps.php on line 33

LINE 33  $part = explode('/', $coordinate[$i]);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Solução se alguém precisar:

 


<?php

$filename = "1.jpg";


$exif = exif_read_data($filename);

if(isset($exif['GPSLatitude'])){


$lon = getGps($exif["GPSLongitude"], $exif['GPSLongitudeRef']);
$lat = getGps($exif["GPSLatitude"], $exif['GPSLatitudeRef']); 
echo $lon;
echo $lat;

//run code if long/latitude was found
  

  }else{
    echo "Arquivo sem dados de GPS";
}


 




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 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]);
}




?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.