Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL Great Circle Distance (fórmula de Haversine)


De Perguntas frequentes do Google Code - Criando um Localizador de lojas com PHP, MySQL e Google Maps :

Aqui está a instrução SQL que encontrará os 20 locais mais próximos que estão dentro de um raio de 25 milhas da coordenada 37, -122. Ele calcula a distância com base na latitude/longitude dessa linha e na latitude/longitude de destino e, em seguida, solicita apenas as linhas em que o valor da distância é menor que 25, ordena toda a consulta por distância e a limita a 20 resultados. Para pesquisar por quilômetros em vez de milhas, substitua 3959 por 6371.
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) 
* cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin(radians(lat)) ) ) AS distance 
FROM markers 
HAVING distance < 25 
ORDER BY distance 
LIMIT 0 , 20;