Tôi có cơ sở dữ liệu mysql và 2 bảng giả sử khách hàng và trường học. Bây giờ mỗi bảng có vĩ độ và kinh độ của cột. Và tôi cần phải thực hiện một SELECT ví dụ từ bảng thứ hai, nơi các trường học trong một bán kính nhất định của một bản ghi từ bảng đầu tiên. Tính toán nên được thực hiện dựa trên vĩ độ và kinh độ. PS: Tôi đang sử dụng PHP.Nhận kết quả từ mysql dựa trên kinh độ vĩ độ
Trả lời
Bạn có thể tính toán một khoảng cách sử dụng một Spherical law of cosines:
SELECT DEGREES(ACOS(SIN(RADIANS(clients.latitude)) * SIN(RADIANS(schools.latitude)) +
COS(RADIANS(clients.latitude)) * COS(RADIANS(schools.latitude))
* COS(RADIANS(clients.longitude
– schools.longitude))))
* 60 * 1.1515 * 1.609344 AS distance
FROM clients, schools HAVING distance < $radius
RADIANS(X) - độ để radian
ACOS(X) - cosin arc của X, nghĩa là giá trị mà cosin là X
DEGREES(X) - radian để các bằng cấp
60 - phút ở một mức độ
1,1515 - dặm trong một nautical mile
1.609344 - kilômét trong một dặm
Cảm ơn, tôi sẽ thử ngay bây giờ và chấp nhận nếu nó hoạt động. – Centurion
Vì vậy, nếu bán kính của tôi bằng ki lô mét, truy vấn sẽ giống như bạn viết hoặc tôi nên thay đổi nó? thanks – Centurion
Mysql đưa ra một lỗi: Cột không xác định 'clients.longitude – schools.longitude' trong 'danh sách trường' ..., ý nghĩa của dấu '-' ở đây là gì? – Centurion
- 1. Vĩ độ và Kinh độ dựa trên Mã Zip
- 2. Nhận Kinh độ Vĩ độ từ một địa chỉ C#
- 3. Truy vấn trong kinh độ và vĩ độ trong MySQL
- 4. Thiết lập bảng vĩ độ và kinh độ của MySQL
- 5. Vĩ độ/Kinh độ và mét
- 6. Vĩ độ/Kinh độ Khoảng cách
- 7. Nhận kinh độ và vĩ độ tương tự từ cơ sở dữ liệu
- 8. KDTree cho kinh độ/vĩ độ
- 9. Bản đồ nhiệt từ vĩ độ & kinh độ
- 10. Truy vấn kinh độ vĩ độ PostgreSQL
- 11. Hướng đông về kinh độ vĩ độ
- 12. Thuật toán để tính toán vị trí gần nhất dựa trên kinh độ và vĩ độ
- 13. Nhận độ cao theo kinh độ và vĩ độ trong Android
- 14. MKMapView Vĩ độ và Kinh độ Tọa độ
- 15. Phân tích vĩ độ và kinh độ với Ruby
- 16. có Múi giờ sử dụng vĩ độ và kinh độ?
- 17. tìm kiếm bán kính theo vĩ độ/kinh độ
- 18. Tính khoảng cách giữa hai điểm (Vĩ độ, Kinh độ)
- 19. điểm giữa giữa hai vĩ độ và kinh độ
- 20. Phát hiện nếu điểm trong Vĩ độ/Kinh độ dựa Polygon
- 21. Nhận vĩ độ/kinh độ từ một bản đồ Google bằng dấu chọn
- 22. Vĩ độ kinh độ ở định dạng sai DDDMM.MMMM 2832.3396N
- 23. Tìm kinh độ và vĩ độ gần nhất trong mảng?
- 24. Tìm các vĩ độ và kinh độ gần nhất
- 25. Có thể thay đổi kinh độ và vĩ độ không?
- 26. Hướng giữa 2 điểm Vĩ độ/Kinh độ trong C#
- 27. tìm vĩ độ và kinh độ bằng khoảng cách
- 28. Cách xác thực vĩ độ và kinh độ
- 29. Vĩ độ/Kinh độ cho đường biên giới quốc gia
- 30. Chuyển đổi vĩ độ và kinh độ thành UTM
Ngoài câu trả lời của Piskvor, hướng dẫn này khá tốt: [Geo Distance Search with MySQL] (http://www.scribd.com/doc/2569355/Geo-Distance- Tìm kiếm-với-MySQL), mặc dù tôi thấy trang không tải rất tốt. Thay vào đó, bản trình bày PowerPoint có thể được tìm thấy tại đây (http://www.mysqlconf.com/mysql2008/public/schedule/detail/347). – Mike