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

Dopasowanie najbliższej długości/szerokości geograficznej

Elegancki (bardziej dokładny ) sposób to zrobić (ale niezbyt szybko )

// Closest within radius of 25 Miles
// 37, -122 are your current coordinates
// To search by kilometers instead of miles, replace 3959 with 6371
SELECT feature_name, 
 ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) 
  * cos( radians( long ) - radians(-122) ) + sin( radians(37) ) 
  * sin( radians( lat ) ) ) ) AS distance 
FROM geo_features HAVING distance < 25 
ORDER BY distance LIMIT 1;

Edytuj

To jest Formuła Haversine do obliczania odległości kołowej od współrzędnych geograficznych. Oto niektóre implementacje tej formuły na różnych platformach

R = earth’s radius (mean radius = 6,371km)
Δlat = lat2− lat1
Δlong = long2− long1
a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2)
c = 2.atan2(√a, √(1−a))
d = R.c
// Note that angles need to be in radians to pass to Trigonometric functions



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP Najlepszy sposób na buforowanie wyników MySQL?

  2. Przekazywanie FieldName jako parametru w procedurze składowanej MySQL

  3. Znajdź wiersze, które mają tę samą wartość w kolumnie w MySQL

  4. Jak utworzyć tabelę przestawną w MySQL

  5. Błąd Mysql 1236 od mastera podczas odczytu danych z logu binarnego