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

Tính khoảng cách cho 2 điểm, vĩ độ và kinh độ

Bạn có thể sử dụng công thức tính khoảng cách giữa hai điểm. Ví dụ:

function get_distance($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') { 
    $theta = $longitude1 - $longitude2; 
    $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + 
                (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * 
                cos(deg2rad($theta))); 
    $distance = acos($distance); 
    $distance = rad2deg($distance); 
    $distance = $distance * 60 * 1.1515; 
    switch($unit) { 
        case 'Mi': 
            break; 
        case 'Km' : 
            $distance = $distance * 1.609344; 
    } 
    return (round($distance,2)); 
}

Bạn cũng có thể làm điều gì đó như:

$query = "SELECT *,(((acos(sin((".$latitude."*pi()/180)) * 
            sin((`Latitude`*pi()/180))+cos((".$latitude."*pi()/180)) * 
            cos((`Latitude`*pi()/180)) * cos(((".$longitude."- `Longitude`)* 
            pi()/180))))*180/pi())*60*1.1515
        ) as distance 
        FROM `MyTable` 
        HAVING distance >= ".$distance.";


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách ghi các bộ sưu tập bản ghi tuần tự trong MySQL

  2. Chèn các mục vào trình đơn thả xuống bootstrap từ Bảng SQL

  3. Bắt MySQL hoạt động trên OSX 10.7 Lion

  4. Có cách nào trong MySQL để đảo ngược trường boolean với một truy vấn không?

  5. Có bất kỳ đường hầm PHP MySQL HTTP phổ quát nào tốt không?