2013-01-14 13 views
5

Ho bisogno di sapere come calcolare il raggio o la distanza desiderata con latitudine e longitudine specifiche in MYSQL con lo standard SQL corretto? Ho trovato molte soluzioni su Internet ma stanno impiegando molto tempo per coinvolgere cos e altri termini. Per favore aiutatemi!Come calcolare il raggio o la distanza desiderati con latitudine e longitudine specifiche in MYSQL con lo standard SQL corretto?

+0

Per questo è necessario fare affidamento su query SQL e perché si tratta di calcolo ricco che è per questo che è Prendendo un po 'di tempo potrebbe essere sul server live che verrà eseguito veloce provare. –

+0

mi può suggerire qualsiasi query di esempio. Grazie in anticipo!!! – mudassar031

+0

Quanto è accurata la tua risposta? È possibile accelerare il calcolo, sacrificando l'esattezza della risposta. – ericg

risposta

3

per calcolare la distanza tra due punti GPS che sto usando una funzione MySQL:

CREATE FUNCTION `distance`(lat1 FLOAT(10,7), lng1 FLOAT(10,7), lat2 FLOAT(10,7), lng2 FLOAT(10,7)) RETURNS FLOAT(20,2) 
    RETURN ROUND(6371 * 2 * ASIN(SQRT(POWER(SIN((lat1 -ABS(lat2)) * PI()/180/2),2) + COS(lat1 * PI()/180) * COS(ABS (lat2) * PI()/180) * POWER(SIN((lng1 - lng2) * PI()/180/2), 2))), 2); 

e quindi è abbastanza facile da usare:

SELECT 
    distance(city1.latitude, city1.longtitude, city2.latitude, city2.longtitude) AS distanceKM 
FROM 
    city1, city2 ... 

Puoi read here come vengono convertiti i dati in chilometri

Nota:6371 è il Earth radius in chilometri, quindi se avete bisogno della distanza in miglia si dovrà sostituirlo con 3959

Problemi correlati