Tính khoảng cách theo tuyến đường chim bay và thực tiễn trong Excel, Google Sheets

sở hữu tất cả đề xuất về tính khoảng phương pháp theo đường chim bay và thực tế, trong khoảng những hộ buôn bán nhỏ cho đến những doanh nghiệp giao vận to, hệ thống bưu cục, hay đơn giản là nhu cầu tư nhân để tra cứu… ngoài ra, chẳng phải ai cũng biết cách cũng như chơi sở hữu được lực lượng lập trình để xây dựng nên hệ thống tính toán. Tuy vậy, ta hoàn với thể tự làm cho 1 biện pháp thuần tuý tiêu dùng Google Sheets hoặc Excel. Học Excel Online sẽ hướng dẫn bạn khiến điều ấy qua bài viết này.

Tính khoảng cách theo các con phố chim bay và thực tiễn

Tính toán khoảng cách thức theo con đường chim bay giữa 2 điểm bằng công thức Haversine

một công thức không quá phức tạp được dùng để tính khoảng bí quyết theo tuyến đường chim bay giữa 2 tọa độ mà ta sở hữu thể tiêu dùng là công thức Haversine. Công thức được mô tả:

Công thức Haversine

1 cách tổng quát, ta viết lại công thức này trong Excel như sau:

=6371*2*ASIN(SQRT(POWER(SIN(PI()/180*(lat2lat1)/2),2)+COS(PI()/180*lat1)*COS(PI()/180*lat2)*POWER(SIN(PI()/180*(lng2lng1)/2),2)))

Trong đó:

6371 là bán kính địa cầu (đơn vị: Km)

lat1, lat2: Vĩ độ lần lượt của tọa độ 1 (lattitude 1) và tọa độ hai (lattitude 2)

lng1, lng2: độ kinh lần lượt của tọa độ một (longitude 1) và tọa độ 2 (longitude 2)

thí dụ, ta tính khoảng cách sở hữu 2 điểm có tọa độ 1 (20.98705, 105.8138) và tọa độ 2 (21.00433, 105.8155)
ứng dụng công thức ta có:

=6371*2*ASIN(SQRT(POWER(SIN(PI()/180*(21.00433-20.98705)/2),2)+COS(PI()/180*20.98705)*COS(PI()/180*21.00433)*POWER(SIN(PI()/180*(105.8155-105.8138)/2),2)))

=1.929536024

Anh chị mang thể thử tra trên google map để kiểm tra lại kết quả.

ngoài ra, ta với thể tạo 1 UDF bằng VBA mang tên Haversine cho mục đích trên:

Public Function Haversine(Lat1 As Variant, Lon1 As Variant, Lat2 As Variant, Lon2 As Variant) Dim R As Integer, dlon As Variant, dlat As Variant, Rad1 As Variant Dim a As Variant, c As Variant, d As Variant, Rad2 As Variant  R = 6371 dlon = Excel.WorksheetFunction.Radians(Lon2 - Lon1) dlat = Excel.WorksheetFunction.Radians(Lat2 - Lat1) Rad1 = Excel.WorksheetFunction.Radians(Lat1) Rad2 = Excel.WorksheetFunction.Radians(Lat2) a = Sin(dlat / 2) * Sin(dlat / 2) + Cos(Rad1) * Cos(Rad2) * Sin(dlon / 2) * Sin(dlon / 2) c = hai * Excel.WorksheetFunction.Asin(Sqr(a)) d = R * c Haversine = d End Function

Ta dùng công thức như sau:

=Haversine(20.98705, 105.8138, 21.00433, 105.8155)

Đối mang Google sheets, ta cũng có thể viết một công thức như vậy trên chính trang tính, hoặc bằng Google Apps Script để khiến cho việc này:

function haversine(lat1, lng1, lat2, lng2)  const R = 6371 var dlon = Math.PI/180*(lng2 - lng1) var dlat = Math.PI/180*(lat2 - lat1) var ra1 = Math.PI/180*lat1 var ra2 = Math.PI/180*lat2 var a = Math.sin(dlat / 2) * Math.sin(dlat / 2) + Math.cos(ra1) * Math.cos(ra2) * Math.sin(dlon / 2) * Math.sin(dlon / 2) var c = 2 * Math.asin(Math.sqrt(a)) var d = R * c return d 

có công thức trên, ta có thể tính được khoảng cách thức giữa hai tọa độ. Lưu ý, tọa độ ở đây là tọa độ thập phân – Decimal degrees. Trong trường hợp ta dùng tọa độ đi kèm phút chốc – Degrees Minutes Seconds, ta cần thêm 1 bước chuyển tọa độ về dạng thập phân. Ví dụ: 72*17'55 sẽ cần được chuyển về 72.29861.

Ngoài công thức Haversine, bạn với thể tham khảo dùng 1 công thức khác có phần phức tạp hơn là công thức Vincenty.

Tính toán quãng trục đường di chuyển thực tại giữa 2 tọa độ sử dụng API

"Đi từ nhà lên bờ đa số bao lăm km?" – khi hỏi câu hỏi này, chắc hẳn chúng ta ko chờ mong một đáp án kiểu như "3km theo tuyến phố chim bay" phải không. Trong trường hợp này, rất nhiều mọi người sẽ dùng những phương tiện bản đồ, chả hạn như Google Maps, để tra cứu quãng con đường và kể ra quãng tuyến đường phải chăng nhất được gợi ý.

Khoảng 7.5km

tương tự cảnh huống trên, ví thử chúng ta mang 2 địa chỉ (hoặc phổ quát hơn) lưu trong Excel/Google Sheets và cần biết quãng tuyến đường giữa hai địa chỉ đấy thì sao?

Trong trường hợp này, sở hữu rộng rãi bên đã sản xuất các API để ta tiện dụng tra cứu dữ liệu can dự đến quãng đường mà ta có thể tìm kiếm duyệt y trong khoảng khóa "distance matrix". Ở đây Học Excel Online sẽ dùng Bing Maps API để lấy dữ liệu về quãng tuyến phố trong khoảng tọa độ 20.98705, 105.8138 tới 21.00433, 105.8155. các bước tiến hành sẽ được kể dưới đây.

Lấy Bing Maps Key

Bước trước nhất đó là ta cần với một "mã cá nhân". Để làm điều này, ta tróc nã cập địa chỉ: https://www.bingmapsportal.com/ và đăng nhập bằng tài khoản Microsoft (hoặc đăng kí ví như chưa có).

Sau khi đã đăng nhập thành công, truy cập vào My trương mục và chọn My keys:

Bước tiếp theo, ta chọn "Click here lớn create a new key" sau đó chọn "Show key" để hiển thị mã. Lưu mã đó lại.

khi đã mang mã, bước tiếp theo ta sẽ tiến hành dùng Bing Maps API để lấy dữ liệu về quãng tuyến phố.

bây giờ, ta sẽ ngó qua một chút về API, cụ thể ở đây trong trường hợp này ta sẽ dùng Distance Matrix tại link này.

Url ta sử dụng sẽ sở hữu dạng:

https://dev.virtualearth.net/REST/v1/Routes/DistanceMatrix?origins=lat1,lng1&destinations=lat2,lng2&travelMode=driving&key=BingMapsAPIKey

Trong đó:

lat1, lng1, lat2, lng2: lần lượt là vĩ độ và kinh độ của tọa độ 1 và tọa độ 2

travelMode=driving: mẫu hình đi lại, như vậy như chọn lái xe hoặc đi bộ lúc bạn thao tác trên Google Map. Mục này mang thể bỏ qua.

BingMapsAPIKey: key bạn vừa lấy được ở portal trên

Sau khi điền phần đông thông báo vào Url trên có tọa độ 20.98705, 105.813821.00433, 105.8155 ta sẽ nhận được thông tin hiển thị như sau:

Ta quan tâm đến mẫu "TravelDistance". Đây là quãng tuyến phố (đơn vị km) giữa 2 tọa độ. Lúc rà soát lại bằng Bing Maps, ta có kết quả tương tự.

công tác tiếp theo ta cần phải khiến đấy là lấy được dữ liệu trong khoảng TravelDistance về.

sử dụng Google Apps Script để thu thập dữ liệu về quãng tuyến đường

Bạn cần sở hữu tri thức căn bản của Google Apps Script để hiểu bí quyết hoạt động. Tham gia ngay khóa học GAS101: Tự động hóa công việc mang Google Apps Script

Đoạn code sau sẽ giúp bạn khiến điều này:

function getlocation(lat1,lng1,lat2,lng2) var link = 'https://dev.virtualearth.net/REST/v1/Routes/DistanceMatrix?' var key = 'điền key của bạn vào đây' var response = UrlFetchApp.fetch(link + 'origins=' + lat1 + ',' + lng1 + '&destinations=' + lat2 + ',' + lng2 + '&travelMode=driving' + '&key=' + key); var json = response.getContentText(); var parse = JSON.parse(json); var result = parse.resourceSets[0].resources[0].results[0].travelDistance; return result 

Sau lúc đã lưu và cấp quyền, ta mở lại Google Sheet và viết cú pháp: =getlocation(20.98705, 105.8138, 21.00433, 105.8155) để lấy ra quãng đường giữa hai tọa độ

Ta cũng hoàn toàn với thể khiến cho được sở hữu VBA trong Excel. Chỉ dẫn chi tiết cho phần này đã được giới thiệu trong khóa học

VBA201: Lập trình VBA tăng trong Excel,

bài số 1004. Hoặc đơn thuần hơn bạn có thể tróc nã cập Youtube và xem video này:

Trên đây là phần đông chỉ dẫn về bí quyết tính khoảng bí quyết giữa 2 điểm thuần tuý mà trong khoảng đó chúng ta với thể mở rộng ra cho rộng rãi trường hợp, chả hạn như để tính toán tổng quãng các con phố 1 shipper đi trong ngày, thời kì đi hay thậm chí sở hữu thể trực giác hóa dữ liệu thành 1 bản đồ tuyến phố đi nữa. Anh chị cũng đừng quên ghẹ thăm trang web https://dtnguyen.business/ để tham khảo những khóa học mới nhất nhé.

Share on Google Plus
    Blogger Comment
    Facebook Comment

0 nhận xét:

Đăng nhận xét