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

PHP MySQL nhận vị trí trong bán kính vị trí của người dùng từ GPS

Việc tính toán khoảng cách khá tốn kém về mặt tính toán, như những người khác đã nói. Trả lại các tập dữ liệu khổng lồ cũng không phải là một ý kiến ​​hay - đặc biệt khi xem xét PHP không phải là hiệu suất tuyệt vời.

Tôi sẽ sử dụng phương pháp heuristic, như tính gần đúng khoảng cách bằng phép cộng và phép trừ đơn giản.

Chỉ cần tìm kiếm db với các sự cố trong phạm vi đó (hiệu quả là hình vuông, chứ không phải hình tròn), và sau đó bạn có thể làm việc với những sự cố với PHP.

CHỈNH SỬA :Đây là một giải pháp thay thế; một phép tính gần đúng ít tốn kém hơn về mặt tính toán:

Khoảng cách gần đúng tính bằng dặm:

sqrt(x * x + y * y)

where x = 69.1 * (lat2 - lat1) 
and y = 53.0 * (lon2 - lon1) 

Bạn có thể cải thiện độ chính xác của phép tính khoảng cách gần đúng này bằng cách thêm hàm toán học cosine:

Cải thiện khoảng cách gần đúng tính bằng dặm:

sqrt(x * x + y * y)

where x = 69.1 * (lat2 - lat1) 
and y = 69.1 * (lon2 - lon1) * cos(lat1/57.3) 

Nguồn: http://www.meridianworlddata.com/Distance-Calculation.asp

CHỈNH SỬA 2 :Tôi đã chạy một loạt các thử nghiệm với các tập dữ liệu được tạo ngẫu nhiên.

  • Sự khác biệt về độ chính xác của 3 thuật toán là tối thiểu, đặc biệt là ở khoảng cách ngắn
  • Thuật toán chậm nhất (thuật toán có toàn bộ các hàm cắt nhỏ) chậm hơn 4 lần so với hai thuật toán còn lại.

Chắc chắn là không đáng. Chỉ với một ước tính gần đúng.

Mã ở đây: http://pastebin.org/424186



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TIME_TO_SEC () Ví dụ - MySQL

  2. Làm cách nào để điền menu thả xuống thứ hai dựa trên lựa chọn của menu thả xuống đầu tiên bằng cách sử dụng jQuery / AJAX và PHP / MySQL?

  3. MySQL:Curdate () so với Now ()

  4. php:SQLSTATE [HY000] [2002] Không thể thực hiện kết nối vì máy mục tiêu đã chủ động từ chối nó

  5. MySQL cách nối các bảng trên hai trường