Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

ST_Distance_Sphere trong mysql không cung cấp khoảng cách chính xác giữa hai vị trí

ST_DISTANCE_SPHERE yêu cầu các điểm phải được thể hiện dưới dạng POINT(longitude, latitude) , bạn đã đảo ngược chúng trong mã của mình

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

Điều này cho kết quả gần hơn nhiều với giá trị được trả về bởi hàm của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để cài đặt mysql im lặng trong thiết lập đổi mới?

  2. php mysql sắp xếp kết quả theo thứ tự được tìm nạp

  3. Tất cả các cột của bảng nên được lập chỉ mục hay không cơ sở dữ liệu mysql?

  4. Hàm MySQL SIN () - Trả về Sine của một số trong MySQL

  5. Tôi muốn sao chép bảng chứa từ một cơ sở dữ liệu và chèn vào một bảng cơ sở dữ liệu khác