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

ST_Distance_Sphere в mysql не дава точно разстояние между две места

ST_DISTANCE_SPHERE изисква точките да бъдат изразени като POINT(longitude, latitude) , имате ги обърнати в кода си

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 |
+-------------------------------------+-------------------------------------------+

Това дава резултат, който е много по-близък до стойността, върната от вашата функция.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите запис с максимална стойност в MySQL

  2. PHP MySQL заявката не се вмъква

  3. Rails 5 и Ruby 2.3.3 Неуспешно зареждане на libmysql.dll

  4. Вмъкнете клиентски вход в MySQL база данни с C

  5. PHP PDO:Не може да се свърже, Невалидно име на каталог