Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wybierz punkty z bazy danych mapy według promienia

Czasami parametr ACOS() może być nieco większa niż 1 — nieco poza dziedziną tej funkcji — gdy odległości są małe. Dostępna jest lepsza formuła odległości, dzięki Vincenty. Używa ATAN2(y,x) zamiast funkcji ACOS() funkcja i dlatego jest bardziej stabilna numerycznie.

To jest to.

DEGREES(
    ATAN2(
      SQRT(
        POW(COS(RADIANS(lat2))*SIN(RADIANS(lon2-lon1)),2) +
        POW(COS(RADIANS(lat1))*SIN(RADIANS(lat2)) -
             (SIN(RADIANS(lat1))*COS(RADIANS(lat2)) *
              COS(RADIANS(lon2-lon1))) ,2)),
      SIN(RADIANS(lat1))*SIN(RADIANS(lat2)) +
      COS(RADIANS(lat1))*COS(RADIANS(lat2))*COS(RADIANS(lon2-lon1))))

Ta funkcja zwraca wynik w stopniach. W jednym stopniu jest 111,045 km. 60 mil morskich. 69 mil statutowych. Więc pomnóż wynik przez jedną z tych liczb, aby uzyskać odległość. Istnieje pełniejszy opis, w tym definicja funkcji przechowywanych dla MySQL, tutaj .

Innym rozwiązaniem jest użycie ISNULL(ACOS(formula), 0.0)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sterownik MySQL dla Rails w Windows 7 x64

  2. Zastrzeżone słowo w nazwie kolumny - wstaw do MySQL

  3. Metoda uwierzytelniania „mysql_old_password” nie jest obsługiwana

  4. Max_connections w MySQL 5.7

  5. Zmniejszenie zużycia pamięci przez mysql na mikroinstancji chronionej przez pocztę e-mail