Hướng dẫn how does python use distance matrix api? - python sử dụng api ma trận khoảng cách như thế nào?

Kịch bản

Hãy giả sử rằng bạn có một tập dữ liệu với nhiều hàng tọa độ vĩ độ và kinh độ. Bạn muốn tính khoảng cách giữa mỗi cặp tọa độ trong các hàng liên tiếp. Tuy nhiên, bạn muốn đảm bảo rằng bạn có được khoảng cách thực tế của phân đoạn tuyến đường cụ thể được theo dõi [không phải là con quạ bay].not as the crow flies].

Tôi đã tải xuống một bộ dữ liệu mẫu có sẵn trên kho lưu trữ máy UCI. Bộ dữ liệu bao gồm vài trăm hàng dấu vết GPS được thu thập bởi những người tham gia bằng điện thoại thông minh của họ. Trong ví dụ này, tôi đã giảm tập dữ liệu thành chỉ bao gồm 20 hàng đầu tiên:

Dung dịch

Giải pháp mà tôi đã cung cấp ở đây được viết bằng Python. Tại sao? Python cung cấp một số gói để thao tác dữ liệu dễ sử dụng và được hỗ trợ bởi một cộng đồng lớn của những người đóng góp.

Hãy để xem xét vấn đề một lần nữa. Chúng tôi có một tập dữ liệu với các giá trị ‘vĩ độ và‘ kinh độ. Chúng tôi đang nhắm đến việc tính toán khoảng cách giữa các tọa độ trong các hàng liên tiếp và lưu trữ giá trị trong một cột mới có tên ‘Khoảng cách.

Chúng tôi không cố gắng phát minh lại bánh xe ở đây. Vì vậy, cách dễ nhất để thực hiện nhiệm vụ này là sử dụng dịch vụ web ánh xạ hoặc API có thể thực hiện tất cả các công việc lẩm bẩm. Tôi khuyên bạn nên sử dụng API ma trận khoảng cách Google Maps cho mục đích này. API ma trận khoảng cách không may là không miễn phí. Vui lòng xem xét cấu trúc thanh toán trước khi sử dụng dịch vụ.NOT free. Please consider the billing structure before using the service.

Nếu bạn chưa có khóa API Google Maps, hãy xem liên kết bên dưới để thiết lập dự án và nhận khóa API của bạn:

Kịch bản Python

1. Sự phụ thuộc

Nhập các gói cần thiết:

  • Pandas - Công cụ phân tích dữ liệu giúp chúng ta thao tác dữ liệu; Được sử dụng để tạo khung dữ liệu với các cột.
  • Googlemaps - API cho các tính toán ma trận khoảng cách.
  • itertools - giúp lặp qua các hàng trong tập dữ liệu.
import pandas as pd
import googlemaps
from itertools import tee

2. Tải tệp CSV và lưu trữ trong khung dữ liệu.

Trong bước này, chúng tôi tải tệp CSV vào khung dữ liệu.

#Read CSV file into data frame named 'df'
#change seperator [sep e.g. ','] type if necessary
df = pd.read_csv['go_track_trackspoints.csv']

3. Thiết lập khóa API

Sử dụng khóa API Google Maps của bạn để kết nối với API Google Maps

#Perform request to use the Google Maps API web service
API_key = 'AIzaSyCiF10X_example'#enter Google Maps API key
gmaps = googlemaps.Client[key=API_key]

4. Lặp lại các hàng trong khung dữ liệu

4.1 Hàm cặp

Vì tệp CSV đã được tải vào khung dữ liệu, chúng ta có thể lặp qua các giá trị vĩ độ và kinh độ của mỗi hàng bằng cách sử dụng hàm mà tôi đã khởi tạo theo cặp. Hàm cặp là sử dụng hàm trợ giúp từ gói Itertools, được gọi là tee. Điều này sẽ làm cho mọi thứ dễ dàng lặp lại thông qua các hàng liên tiếp đồng thời.Pairwise. The pairwise function is using a helper function from the itertools package, called tee. This will make things easier to iterate through consecutive rows concurrently.

4.2 Danh sách trống

Một mục danh sách trống được tạo để lưu trữ khoảng cách tính toán. Lưu ý rằng giá trị đầu tiên trong danh sách bằng không. Điều này rất quan trọng để duy trì độ dài chỉ mục giống như khung dữ liệu khi chúng tôi gán danh sách cho cột ‘khoảng cách mới trong khung dữ liệu.

4.3 cho vòng lặp

Vòng lặp For được sử dụng cùng với hàm trợ giúp cặp để lặp qua các hàng. Đối với mỗi lần lặp trong vòng lặp, các giá trị vĩ độ và kinh độ được lưu trữ dưới dạng các cặp trong các biến ’gốc và‘ đích, tương ứng.

4.4 Gọi API

Bây giờ, các tọa độ gốc và đích đã được biết đến, chúng ta có thể chuyển các giá trị này dưới dạng tham số vào hàm distacle_matrix để thực hiện các cuộc gọi API. Bước này có thể mất tới một hoặc hai phút tùy thuộc vào số lượng hàng, do đó, một chút kiên nhẫn là bắt buộc.distance_matrix function to execute the API calls. This step might take up to a minute or two depending on the amount of rows, so a little patience is required.

Bạn có thể chỉ ra chế độ vận chuyển mà bạn muốn sử dụng. Các chế độ có sẵn là: ‘Lái xe, người đi bộ, đi bộ trên đường, hoặc đi xe đạp. Trong ví dụ này, API sẽ trả về kết quả tính bằng mét cho chế độ đi bộ.walking’ mode.

Cảnh báo: Đây là phần mà bạn cần cẩn thận. Nếu bạn muốn tính khoảng cách bằng các chế độ vận chuyển khác, bạn cần xem xét độ chính xác của tọa độ của mình. API tuân thủ các quy tắc của con đường. Điều này có nghĩa là, nếu có một cơ hội nhỏ rằng tọa độ của bạn bị tắt một vài mét, API có thể xem xét tọa độ trong làn đường giao thông đang tới [đặc biệt là trên đường cao tốc]. Kết quả là API sau đó sẽ chọn lần quay đầu gần nhất và tính toán đường dài xung quanh với tọa độ tiếp theo. Tôi thấy rằng các chế độ vận chuyển ‘đi bộ phù hợp hơn cho các tọa độ được thu thập trong các khoảng thời gian nhỏ hơn. Here is the part where you need to be careful. If you wish to calculate distance using other transport modes, you need to consider the accuracy of your coordinates. The API adheres to the rules of the road. This means, that if there is a slight chance that your coordinates are off by a few meters, the API may consider the coordinate in a oncoming traffic lane [especially on highways]. The result is that the API will then select the nearest u-turn and calculate the long way around to the next coordinate. I found that the ‘walking’ transport modes are more consistent for coordinates collected in smaller time intervals.

4.5 nối kết quả khoảng cách cá nhân vào danh sách trống

Kết quả khoảng cách được tính toán sau đó được thêm vào danh sách trống mà chúng tôi đã tạo trong mỗi lần lặp.

#pairwise function implemented to iterate through two consecutive rows [pairs] in a data framedef pairwise[iterable]:
a, b = tee[iterable]
next[b, None]
return zip[a, b]

#empty list - will be used to store calculated distances
list = [0]

# Loop through each row in the data frame using pairwise
for [i1, row1], [i2, row2] in pairwise[df.iterrows[]]:
#Assign latitude and longitude as origin/departure points
LatOrigin = row1['Latitude']
LongOrigin = row1['Longitude']
origins = [LatOrigin,LongOrigin]

#Assign latitude and longitude from the next row as the destination point
LatDest = row2['Latitude'] # Save value as lat
LongDest = row2['Longitude'] # Save value as lat
destination = [LatDest,LongDest]

#pass origin and destination variables to distance_matrix function# output in meters
result = gmaps.distance_matrix[origins, destination, mode='walking']["rows"][0]["elements"][0]["distance"]["value"]

#append result to list
list.append[result]

5. Tạo cột ‘khoảng cách mới trong khung dữ liệu

Danh sách có thể được nối vào khung dữ liệu dưới dạng cột.

#Add column 'Distance' to data frame and assign to list values
df['Distance'] = list

6. Viết khung dữ liệu cuối cùng cho CSV

Tất cả các dữ liệu mà chúng tôi quan tâm hiện được lưu trữ trong khung dữ liệu. Là bước cuối cùng, chúng ta có thể viết nội dung của nó vào tệp CSV.

df.to_csv['calculated_distances.csv', sep=';', index=None, header= ['id','Latitude','Longitude','track_id','time','distance']]

Đó là nó. Bạn nên có một tệp CSV với khoảng cách giữa các hàng liên tiếp. Bạn có thể xem mã đầy đủ trên trang GitHub của tôi.

Nếu bạn có bất kỳ đề xuất nào, vui lòng bình luận bên dưới hoặc liên hệ với tôi trên LinkedIn.

Ma trận khoảng cách python là gì?

Một ma trận khoảng cách chứa khoảng cách được tính theo cặp giữa các vectơ của ma trận/ ma trận. scipy. Gói không gian cung cấp cho chúng tôi Phương thức Disce_Matrix [] để tính toán ma trận khoảng cách. Nói chung, các ma trận ở dạng mảng 2 chiều và các vectơ của ma trận là các hàng ma trận [mảng 1-D]. Cú pháp: Scipy.contains the distances computed pairwise between the vectors of matrix/ matrices. scipy. spatial package provides us distance_matrix[] method to compute the distance matrix. Generally matrices are in the form of 2-D array and the vectors of the matrix are matrix rows [ 1-D array]. Syntax: scipy.

Ma trận khoảng cách hoạt động như thế nào?

Dịch vụ ma trận khoảng cách của Google tính toán khoảng cách du lịch và thời gian hành trình giữa nhiều nguồn gốc và điểm đến bằng cách sử dụng một chế độ di chuyển nhất định.Dịch vụ này không trả lại thông tin tuyến đường chi tiết.computes travel distance and journey duration between multiple origins and destinations using a given mode of travel. This service does not return detailed route information.

API ma trận khoảng cách là gì?

API ma trận khoảng cách cung cấp khoảng cách và thời gian di chuyển cho một ma trận nguồn gốc và điểm đến, và bao gồm các hàng chứa thời lượng và giá trị khoảng cách cho mỗi cặp.Ma trận khoảng cách có sẵn trong một số hình thức: như một API độc lập.Là một phần của API JavaScript bản đồ phía máy khách.provides travel distance and time for a matrix of origins and destinations, and consists of rows containing duration and distance values for each pair. Distance Matrix is available in several forms: as a standalone API. as part of the client-side Maps JavaScript API.

Làm thế nào để bạn tìm thấy khoảng cách của API ma trận?

Kiểm tra yêu cầu này bằng cách nhập URL vào trình duyệt web của bạn - hãy chắc chắn thay thế your_api_key bằng khóa API thực tế của bạn.Phản hồi cho thấy khoảng cách và thời gian giữa nguồn gốc và điểm đến được chỉ định.Tìm hiểu cách xây dựng URL yêu cầu, bao gồm tất cả các tham số có sẵn.by entering the URL into your web browser - be sure to replace YOUR_API_KEY with your actual API key. The response shows the distance and duration between the specified origins and destinations. Learn how to build request URLs, including all available parameters.

Bài Viết Liên Quan

Chủ Đề