sql >> Base de Datos >  >> RDS >> Mysql

Consultar MySQL para las coordenadas de latitud y longitud que están dentro de un radio de milla dado

Fórmula de la ley esférica de los cosenos
(37 y -122 son la latitud y la longitud del centro de tu radio)

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 

Características

  • Más rápido
  • Precisión similar a Harvesine Formula

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

Características

  • Rápido
  • Más resistente a los errores de coma flotante

Tenga en cuenta que 3959 es el radio de la Tierra en millas . Radio de la Tierra en kilómetros (km):6371

Puedes encontrar más información aquí