C++ tính toán tọa độ dựa trên long lat

Vấn đề tính khoảng cách từ điểm A đến điểm B có thể được giải quyết bằng công thức Haversine. Để áp dụng được công thức này, chúng ta cần có vị trí điểm A và điểm B trên bề mặt trái đất.

Sau đó, bạn cần chuyển đổi kinh độ và vĩ độ tương ứng từ đơn vị đô là độ sang đơn vị đo radian.

Hãy xem công thức cơ sở của phép đổi đơn vị này:

Latitude in Radians= (Latitude /180) pi radians \=(Latitude * 0.01746031) radians Longitude in Radians= (Longitude /180) pi radians \=(Longitude * 0.01746031) radians

Ngoài ra, chúng ta có bán kính của trái đất là 3,936 miles, tương đương với 6.378 km. Như vậy , công thức tính khoảng cách giữa 2 điểm sẽ là:

Distance= [6378 * acos((sin(latitude1) * sin(latitude2)) + cos(latitude1) * cos(latitude2) * cos(longitude2 – longitude1))] ở kilomet.

Nếu bạn muốn tính theo đơn vị là mile, công thức sẽ là:

Distance= [3936 * acos((sin(latitude1) * sin(latitude2)) + cos(latitude1) * cos(latitude2) * cos(longitude2 – longitude1))] ở kilomet.

Bây giờ, chúng ta sẽ đưa công thức này vào PHP để tính được khoảng cách giữa 2 điểm A và B dựa trên kinh độ và vĩ độ.

The distance between two places using latitude and longitude in PHP

Cùng xem đoạn mã biểu diễn công thức Haversine đã nói ở trên nhé.

// latitude and longitude of Two Points $latitude1 = 19.017656 ; $longitude1 = 72.856178; $latitude2 = 40.7127; $longitude2 = -74.0059; //Converting to radians $longi1 = deg2rad($longitude1); $longi2 = deg2rad($longitude2); $lati1 = deg2rad($latitude1); $lati2 = deg2rad($latitude2); //Haversine Formula $difflong = $longi2 - $longi1; $difflat = $lati2 - $lati1; $val = pow(sin($difflat/2),2)+cos($lati1)*cos($lati2)*pow(sin($difflong/2),2); $res1 =3936* (2 * asin(sqrt($val))); //for miles $res2 =6378.8 * (2 * asin(sqrt($val))); //for kilometers //display distance in miles print_r('Distance:'.$res1.' '.'miles '.'OR '.$res2.' '.' kilometers'); ?>

Output mình sẽ nhận được:

Distance:7748.9344580629 miles OR 12558.156280765 kilometers

Mình viết cái blog này từ thời mình hàng U2x, giờ là 3Ux và sắp bước sang U4x. Nói tóm lại là mình già rồi mấy bạn trẻ ơi! Vì vậy mấy bạn đọc để tham khảo, đọc để chia sẻ và đọc để học hỏi là chính chứ đừng có chửi thề, đừng có gây war nha. Mình già - mình ngại va chạm lắm... Nếu bạn cảm thấy bài viết có nhiều điểm không chính xác, hãy comment và chia sẻ để tôi còn được học hỏi từ những góp ý của bạn.

Nhập tọa độ để tìm một địa điểm

  1. Trên máy tính, hãy mở Google Maps.
  2. Nhập toạ độ vào hộp tìm kiếm. Dưới đây là ví dụ về các định dạng hợp lệ:
    • Độ thập phân (DD): 41.40338, 2.17403
    • Độ, phút và giây (DMS): 41°24'12,2"N 2°10'26,5"E
    • Độ và phút thập phân (DMM): 41 24.2028, 2 10.4418

Nhận tọa độ của một địa điểm

  1. Trên máy tính, hãy mở Google Maps.
  2. Nhấp chuột phải vào địa điểm hoặc khu vực đó trên bản đồ.
    • Một cửa sổ bật lên sẽ xuất hiện. Bạn có thể tìm thấy vĩ độ và kinh độ ở định dạng thập phân ở trên cùng.
  3. Để tự động sao chép toạ độ, hãy nhấp chuột trái vào vĩ độ và kinh độ.

Định dạng tọa độ

Để định dạng toạ độ sao cho Google Maps có thể đọc được, hãy sử dụng độ thập phân ở định dạng sau:

  • Chính xác: 41.40338, 2.17403
  • Không chính xác: 41,40338, 2,17403

Thông tin hữu ích:

  • Liệt kê vĩ độ trước kinh độ.
  • Kiểm tra xem số đầu tiên trong tọa độ theo vĩ độ của bạn có nằm trong khoảng từ -90 đến 90 hay không.
  • Kiểm tra xem số đầu tiên trong tọa độ theo kinh độ của bạn có nằm trong khoảng từ -180 đến 180 hay không.

Thông tin này có hữu ích không?

Chúng tôi có thể cải thiện trang này bằng cách nào?