Mysql
 sql >> база данни >  >> RDS >> Mysql

Запитване на MySQL за координати на географска ширина и дължина, които са в рамките на даден радиус на миля

Формула за сферичен закон на косинусите
(37 и -122 са географската ширина и дължина на центъра на радиуса)

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 

Характеристики

  • Най-бърз
  • Прецизност, подобна на формулата на Harvesine

Формула на Хаверсин

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

Характеристики

  • Бързо
  • По-стабилни за грешки с плаваща запетая

Имайте предвид, че 3959 е радиусът на Земята в мили . Радиус на Земята в километри (км):6371

Можете да намерите повече информация тук




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Кои са жизнеспособните слоеве за абстракция на база данни за Python

  2. Откриване на събития за заспиване и събуждане на ОС в Java

  3. MySQL Workbench прекъсва връзката, когато не работи

  4. Пребройте редовете в таблицата

  5. 4 начина за изброяване на всички изгледи в MySQL