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

ST_Distance_Sphere w mysql nie podaje dokładnej odległości między dwoma lokalizacjami

ST_DISTANCE_SPHERE wymaga wyrażenia punktów jako POINT(longitude, latitude) , masz je odwrócone w swoim kodzie

set @lat1 = 38.898556;
set @lon1 = -77.037852;
set @lat2 = 38.897147;
set @lon2 = -77.043934;
SET @pt1 = point(@lon1, @lat1);
SET @pt2 = point(@lon2, @lat2);
SELECT ST_Distance_Sphere(@pt1, @pt2)/1000,
  lat_lng_distance(@lat1,@lon1,@lat2,@lon2);

+-------------------------------------+-------------------------------------------+
| ST_Distance_Sphere(@pt1, @pt2)/1000 | lat_lng_distance(@lat1,@lon1,@lat2,@lon2) |
+-------------------------------------+-------------------------------------------+
|                   0.549154584458455 |                        0.5496311783790588 |
+-------------------------------------+-------------------------------------------+

Daje to wynik znacznie bliższy wartości zwracanej przez twoją funkcję.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wewnętrzna pętla nie działa

  2. Wstawianie milionów rekordów z hostingu lokalnego do hostingu godaddy

  3. Jak wyświetlić obraz z mysql blob

  4. Optymalizacja zapytania MySQL pod kątem wyszukiwania w zakresie liczb całkowitych

  5. Zmień strefę czasową mysql z phpMyAdmin