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

Cách di chuyển điểm đánh dấu 100 mét có tọa độ

Sử dụng Haversine để tính toán sự khác biệt giữa hai điểm bằng mét; sau đó điều chỉnh giá trị của tọa độ người theo tỷ lệ.

$radius = 6378100; // radius of earth in meters
$latDist = $lat - $lat2;
$lngDist = $lng - $lng2;
$latDistRad = deg2rad($latDist);
$lngDistRad = deg2rad($lngDist);
$sinLatD = sin($latDistRad);
$sinLngD = sin($lngDistRad);
$cosLat1 = cos(deg2rad($lat));
$cosLat2 = cos(deg2rad($lat2));
$a = ($sinLatD/2)*($sinLatD/2) + $cosLat1*$cosLat2*($sinLngD/2)*($sinLngD/2);
if($a<0) $a = -1*$a;
$c = 2*atan2(sqrt($a), sqrt(1-$a));
$distance = $radius*$c;

Cung cấp các giá trị của bạn về:

$lat = 51.26667;        //  Just South of Aardenburg in Belgium
$lng = 3.45417;
$lat2 = 51.575001;      //  To the East of Breda in Holland
$lng2 = 4.83889;

cho kết quả là 102059,82251083 mét, 102,06 km

Tỷ lệ cần điều chỉnh là 100 / 102059,82251083 =0,0009798174985988102859004569070625

$newLat = $lat + (($lat2 - $lat) * $ratio);
$newLng = $lng + (($lng2 - $lng) * $ratio);

Cung cấp vĩ độ mới là 51.266972108109 và kinh độ là 3.4555267728867



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Một truy vấn SQL để chọn cho đến khi SUM (users_count) đạt đến 1000

  2. truy vấn mysql - 2 khóa ngoại

  3. Piping mysqldump tới mysql

  4. Sự cố bộ đệm MySqlDataReader GetBytes ...

  5. Cách nhập tệp hình dạng vào MySQL