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

Consultando o MySQL para coordenadas de latitude e longitude que estão dentro de um determinado raio de milha


Fórmula da Lei Esférica dos Cossenos
(37 e -122 são a latitude e longitude do centro do raio)
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) 
    * cos( radians( long ) - radians(-122) ) + sin( radians(37) ) * sin(radians(lat)) ) ) AS distance 
FROM myTable
HAVING distance < 50
ORDER BY distance 

Recursos
  • Mais rápido
  • Precisão semelhante à Fórmula Harvesine

Fórmula Haversine
SELECT id, 3959 * 2 * ASIN(SQRT(POWER(SIN((37 - abs(lat)) * pi()/180 / 2), 2)
       + COS(37 * pi()/180 ) * COS(abs(lat) * pi()/180)
       * POWER(SIN((-122 - long) * pi()/180 / 2), 2) )) as  distance
FROM myTable
HAVING distance < 50
ORDER BY distance

Recursos
  • Rápido
  • Mais robusto para erros de ponto flutuante

Observe que 3959 é o raio da Terra em milhas . Raio da Terra em quilômetros (km):6371

Você pode encontrar mais informações aqui