Calcolo distanza coordinate GPS (PHP/SQL)

Giuseppe Toto
Forgiatore di materia virtuale
2 min readJun 9, 2012

--

calcolo coordinate gps longitudine latitudine

Stavo cercando la formula per calcolare la distanza di due punti geografici conoscendo le loro coordinate longitudine e latitudine

Dopo varie ricerche e test ho trovato finalmente la funzione in php che faceva per me . (la formula lo presa da questo articolo)

public function points_distance ( $coordinate_a, $coordinate_b ) {
define('RAGGIO_QUADRATICO_MEDIO', 6372.795477598);
list($decLatA, $decLonA) = array_map('trim', explode(',', $coordinate_a));
list($decLatB, $decLonB) = array_map('trim', explode(',', $coordinate_b));
$radLatA = pi() * $decLatA / 180;
$radLonA = pi() * $decLonA / 180;
$radLatB = pi() * $decLatB / 180;
$radLonB = pi() * $decLonB / 180;
$phi = abs($radLonA - $radLonB);
$P = acos (
(sin($radLatA) * sin($radLatB)) +
(cos($radLatA) * cos($radLatB) * cos($phi))
);
return $P * RAGGIO_QUADRATICO_MEDIO;
}
Ed ecco un esempio di utilizzo che calcola la distanza tra il colosseo e la torre effeil. Come cita lo stesso autore dell'articolo, il margine di errore rispetto ai risultati di google Earth è molto irrisorio, quasi nullo se considerate distanze fra loro più vicine.# Torre Eiffel
$coordinate_a = "48.857924,2.294026";
# Colosseo
$coordinate_b = "41.890164,12.492346";
echo points_distance($coordinate_a,$coordinate_b);
CALCOLARE DISTANZA COORDINATE GPS MEDIANTE QUERY SQLPossiamo tradurre lo script php che calcola la distanza anche in una query sql che dato un punto gps (latitudine, longitudine) ci restituisce i locali più vicini della zona entro un raggio di 5km . (supponiamo quindi di avere una tabella LOCALE (idlocale, nome, lat,log) .$pi = 3.1415926535898;
$raggio_quadratico_medio = 6372.795477598;
$raggio_di_interesse= 5.0 ; //km
$sql= "SELECT IDLOCALE, NOME, LAT, LON,
($raggio_quadratico_medio*ACOS(
(SIN($pi * $lat / 180)*SIN($pi * LAT / 180)) +
(COS($pi * $lat / 180)*COS($pi * LAT / 180) * COS(ABS(($pi * $lon / 180) - ($pi * LON / 180))) )
)
) as distanza from LOCALE HAVING distanza<$raggio_di_interesse ORDER BY distanza";
AGGIORNAMENTO:Un altro interessante esempio è stato sviluppato dall' istituto tecnico Marconi di Bari in cui dati gli indirizzi di due città calcola le coordinate gps e la distanza fra loro:Esempio - Cordice Sorgente

--

--