Bạn có thể tính khoảng cách giữa hai điểm bằng API Google Maps.
Để tìm khoảng cách giữa hai thành phố:
import googlemaps
# Requires API key
gmaps = googlemaps.Client[key='Your_API_key']
# Requires cities name
distance = gmaps.distance_matrix['Delhi','Mumbai']['rows'][0]['elements'][0]
print[distance]
{u'distance': {u'text': u'1,418 km', u'value': 1417632},
u'duration': {u'text': u'1 day 0 hours', u'value': 87010},
u'status': u'OK'}
Nếu bạn có tọa độ địa lý [vĩ độ và kinh độ] của nguồn gốc và điểm đến, thì hãy làm như dưới đây:
# Requires geo-coordinates[latitude/longitude] of origin and destination
origin_latitude = 12.9551779
origin_longitude = 77.6910334
destination_latitude = 28.505278
destination_longitude = 77.327774
distance = gmaps.distance_matrix[[str[origin_latitude] + " " + str[origin_longitude]], [str[destination_latitude] + " " + str[destination_longitude]], mode='walking']['rows'][0]['elements'][0]
print[distance]
{u'distance': {u'text': u'2,014 km', u'value': 2013656},
u'duration': {u'text': u'16 days 23 hours', u'value': 1464529},
u'status': u'OK'}
API ma trận khoảng cách Google Map là một dịch vụ cung cấp khoảng cách di chuyển và thời gian được thực hiện để đến đích. API này trả về tuyến đường được đề xuất [không chi tiết] giữa nguồn gốc và đích, bao gồm các giá trị thời lượng và khoảng cách cho mỗi cặp.
Để sử dụng API này, người ta phải cần khóa API, có thể có hình thức ở đây.
Các mô -đun cần thiết:
import requests
import json
& nbsp; bên dưới là việc thực hiện:
Below is the implementation :
Đầu ra:
dehradun haridwar {'destination_addresses': ['Haridwar, Uttarakhand, India'], 'origin_addresses': ['Dehradun, Uttarakhand, India'], 'rows': [{'elements': [{'distance': {'text': '56.3 km', 'value': 56288}, 'duration': {'text': '1 hour 40 mins', 'value': 5993}, 'status': 'OK'}]}], 'status': 'OK'}
Sử dụng mô -đun # Requires geo-coordinates[latitude/longitude] of origin and destination
origin_latitude = 12.9551779
origin_longitude = 77.6910334
destination_latitude = 28.505278
destination_longitude = 77.327774
distance = gmaps.distance_matrix[[str[origin_latitude] + " " + str[origin_longitude]], [str[destination_latitude] + " " + str[destination_longitude]], mode='walking']['rows'][0]['elements'][0]
print[distance]
{u'distance': {u'text': u'2,014 km', u'value': 2013656},
u'duration': {u'text': u'16 days 23 hours', u'value': 1464529},
u'status': u'OK'}
3:
# Requires geo-coordinates[latitude/longitude] of origin and destination
origin_latitude = 12.9551779
origin_longitude = 77.6910334
destination_latitude = 28.505278
destination_longitude = 77.327774
distance = gmaps.distance_matrix[[str[origin_latitude] + " " + str[origin_longitude]], [str[destination_latitude] + " " + str[destination_longitude]], mode='walking']['rows'][0]['elements'][0]
print[distance]
{u'distance': {u'text': u'2,014 km', u'value': 2013656},
u'duration': {u'text': u'16 days 23 hours', u'value': 1464529},
u'status': u'OK'}
Khoảng cách giữa hai nơi cũng có thể được tính toán bằng mô -đun Googlemaps.
Lệnh để cài đặt mô -đun googlemaps:
pip install googlemaps
# Requires geo-coordinates[latitude/longitude] of origin and destination
origin_latitude = 12.9551779
origin_longitude = 77.6910334
destination_latitude = 28.505278
destination_longitude = 77.327774
distance = gmaps.distance_matrix[[str[origin_latitude] + " " + str[origin_longitude]], [str[destination_latitude] + " " + str[destination_longitude]], mode='walking']['rows'][0]['elements'][0]
print[distance]
{u'distance': {u'text': u'2,014 km', u'value': 2013656},
u'duration': {u'text': u'16 days 23 hours', u'value': 1464529},
u'status': u'OK'}
4 # Requires geo-coordinates[latitude/longitude] of origin and destination
origin_latitude = 12.9551779
origin_longitude = 77.6910334
destination_latitude = 28.505278
destination_longitude = 77.327774
distance = gmaps.distance_matrix[[str[origin_latitude] + " " + str[origin_longitude]], [str[destination_latitude] + " " + str[destination_longitude]], mode='walking']['rows'][0]['elements'][0]
print[distance]
{u'distance': {u'text': u'2,014 km', u'value': 2013656},
u'duration': {u'text': u'16 days 23 hours', u'value': 1464529},
u'status': u'OK'}
3# Requires geo-coordinates[latitude/longitude] of origin and destination
origin_latitude = 12.9551779
origin_longitude = 77.6910334
destination_latitude = 28.505278
destination_longitude = 77.327774
distance = gmaps.distance_matrix[[str[origin_latitude] + " " + str[origin_longitude]], [str[destination_latitude] + " " + str[destination_longitude]], mode='walking']['rows'][0]['elements'][0]
print[distance]
{u'distance': {u'text': u'2,014 km', u'value': 2013656},
u'duration': {u'text': u'16 days 23 hours', u'value': 1464529},
u'status': u'OK'}
6# Requires geo-coordinates[latitude/longitude] of origin and destination
origin_latitude = 12.9551779
origin_longitude = 77.6910334
destination_latitude = 28.505278
destination_longitude = 77.327774
distance = gmaps.distance_matrix[[str[origin_latitude] + " " + str[origin_longitude]], [str[destination_latitude] + " " + str[destination_longitude]], mode='walking']['rows'][0]['elements'][0]
print[distance]
{u'distance': {u'text': u'2,014 km', u'value': 2013656},
u'duration': {u'text': u'16 days 23 hours', u'value': 1464529},
u'status': u'OK'}
7 # Requires geo-coordinates[latitude/longitude] of origin and destination
origin_latitude = 12.9551779
origin_longitude = 77.6910334
destination_latitude = 28.505278
destination_longitude = 77.327774
distance = gmaps.distance_matrix[[str[origin_latitude] + " " + str[origin_longitude]], [str[destination_latitude] + " " + str[destination_longitude]], mode='walking']['rows'][0]['elements'][0]
print[distance]
{u'distance': {u'text': u'2,014 km', u'value': 2013656},
u'duration': {u'text': u'16 days 23 hours', u'value': 1464529},
u'status': u'OK'}
8# Requires geo-coordinates[latitude/longitude] of origin and destination
origin_latitude = 12.9551779
origin_longitude = 77.6910334
destination_latitude = 28.505278
destination_longitude = 77.327774
distance = gmaps.distance_matrix[[str[origin_latitude] + " " + str[origin_longitude]], [str[destination_latitude] + " " + str[destination_longitude]], mode='walking']['rows'][0]['elements'][0]
print[distance]
{u'distance': {u'text': u'2,014 km', u'value': 2013656},
u'duration': {u'text': u'16 days 23 hours', u'value': 1464529},
u'status': u'OK'}
7import requests
import json
0import requests
import json
1Các
dehradun haridwar {'destination_addresses': ['Haridwar, Uttarakhand, India'], 'origin_addresses': ['Dehradun, Uttarakhand, India'], 'rows': [{'elements': [{'distance': {'text': '56.3 km', 'value': 56288}, 'duration': {'text': '1 hour 40 mins', 'value': 5993}, 'status': 'OK'}]}], 'status': 'OK'}7
dehradun haridwar {'destination_addresses': ['Haridwar, Uttarakhand, India'], 'origin_addresses': ['Dehradun, Uttarakhand, India'], 'rows': [{'elements': [{'distance': {'text': '56.3 km', 'value': 56288}, 'duration': {'text': '1 hour 40 mins', 'value': 5993}, 'status': 'OK'}]}], 'status': 'OK'}8
Đầu ra:
{'distance': {'text': '1,415 km', 'value': 1415380}, 'duration': {'text': '23 hours 42 mins', 'value': 85306}, 'status': 'OK'}
Sử dụng mô -đun
# Requires geo-coordinates[latitude/longitude] of origin and destination
origin_latitude = 12.9551779
origin_longitude = 77.6910334
destination_latitude = 28.505278
destination_longitude = 77.327774
distance = gmaps.distance_matrix[[str[origin_latitude] + " " + str[origin_longitude]], [str[destination_latitude] + " " + str[destination_longitude]], mode='walking']['rows'][0]['elements'][0]
print[distance]
{u'distance': {u'text': u'2,014 km', u'value': 2013656},
u'duration': {u'text': u'16 days 23 hours', u'value': 1464529},
u'status': u'OK'}
3:aishwarya.27 for contributing this method.Trong bài viết trước của chúng tôi, chúng tôi đã ánh xạ 100 điểm dữ liệu tại các vị trí ngẫu nhiên ở Rwanda. Trong bài viết này, chúng ta sẽ thấy cách nhanh nhất - và được cho là đơn giản nhất - để có được khoảng cách giữa một vị trí cụ thể và nhiều địa điểm khác, và thời gian cần thiết để di chuyển khoảng cách đó. Chúng tôi sẽ sử dụng mã Python rất đơn giản cùng với API của Google. Lý do chúng tôi sử dụng API Google là vì nó cung cấp cho bạn khoảng cách đúng/thực tế, trái ngược với khoảng cách đường thẳng [được gọi là khoảng cách Euclidian] được cung cấp bởi hầu hết các công cụ. Dịch vụ API của Google sử dụng khoảng cách lái xe [mặc dù bạn có thể chọn sử dụng khoảng cách "đi bộ"], điều đó có nghĩa là nó sẽ tính khoảng cách dựa trên các tuyến đường hoặc đường dẫn nhanh nhất bằng hệ thống mạng đường thực tế [nếu có!]. Nhiệm vụ của chúng tôi là lập danh sách các khoảng cách [và thời gian] cho tất cả các điểm dữ liệu [100 điểm dữ liệu] chúng tôi đã tạo ngẫu nhiên và sử dụng trong bài viết trước. Chúng tôi sẽ đạt được điều này trong ba tác vụ đơn giản: [1] nhập thư viện và tải dữ liệu; [2] tính toán thời lượng/thời gian; và [3] cuối cùng thêm các khoảng cách tương ứng [bạn có thể bắt đầu với khoảng cách nếu bạn thích] vào danh sách. Ý tưởng là chúng ta có thể sử dụng các kết quả này làm biến để phân tích thêm [ví dụ: nghĩ về các phân tích hồi quy đòi hỏi khoảng cách là biến]. Như mọi khi, ý tưởng là để đạt được điều này theo cách đơn giản nhất có thể. Không có công cụ ưa thích!
Làm thôi nào!
Đầu tiên, chúng tôi nhập thư viện PANDAS và sau đó tải dữ liệu. Một lần nữa, bạn có thể nhận được dữ liệu ở đây, nếu bạn muốn sử dụng của tôi. Bạn sẽ nhận thấy rằng tôi đã thêm một cột mới có tên tọa độ tham gia cả dữ liệu vĩ độ và kinh độ trong một cột. Đó là định dạng theo yêu cầu của mã chúng tôi sẽ sử dụng sau; Vì vậy, chúng tôi chỉ có thể tuân thủ.
import pandas as pd data = pd.read_excel[r'data.xlsx', 'data']
Để hoàn thành nhiệm vụ của mình, chúng tôi sẽ cần một vài điều: Thư viện Google Maps [GMAPs], Thư viện SimpleJson và khóa API Google để truy cập ma trận khoảng cách. Hãy xử lý điều đó trước.
Hãy bắt đầu với GMAP:
pip install googlemaps
Sau đó, chúng tôi cài đặt SimpleJson:
pip install simplejson
Cuối cùng, chúng tôi cài đặt Google-Auth-Oauthlib. Vì chúng tôi sẽ phải sử dụng Google API, chúng tôi sẽ cần một khóa. Thông qua quá trình đó, chúng tôi sẽ cần ủy quyền. Đó là lý do tại sao chúng ta cần điều này.
pip install --upgrade google-auth-oauthlib
Tất cả chúng ta đã sẵn sàng để bắt đầu phép thuật.
Hãy nhập thư viện của chúng tôi mà chúng tôi vừa cài đặt
# Requires geo-coordinates[latitude/longitude] of origin and destination
origin_latitude = 12.9551779
origin_longitude = 77.6910334
destination_latitude = 28.505278
destination_longitude = 77.327774
distance = gmaps.distance_matrix[[str[origin_latitude] + " " + str[origin_longitude]], [str[destination_latitude] + " " + str[destination_longitude]], mode='walking']['rows'][0]['elements'][0]
print[distance]
{u'distance': {u'text': u'2,014 km', u'value': 2013656},
u'duration': {u'text': u'16 days 23 hours', u'value': 1464529},
u'status': u'OK'}
0Bước thứ hai để hoàn thành nhiệm vụ của chúng tôi là tính toán thời gian hoặc thời gian lái xe từ mọi vị trí của hàng trăm vị trí ngẫu nhiên chúng tôi tạo ra gốc. Giả sử rằng [-2,0123469, 29.377851] là nguồn gốc; Đây là mục đầu tiên trong tập dữ liệu được tạo ngẫu nhiên của chúng tôi. Để nhận khóa API, hãy truy cập API ma trận khoảng cách của Google. Nó miễn phí, và bạn chỉ làm điều đó một lần. Ngoài ra, bạn sử dụng cho mọi dự án yêu cầu API của Google.
Khi bạn đã hoàn tất, hãy viết mã sau để tính thời gian/thời lượng. .
# Requires geo-coordinates[latitude/longitude] of origin and destination
origin_latitude = 12.9551779
origin_longitude = 77.6910334
destination_latitude = 28.505278
destination_longitude = 77.327774
distance = gmaps.distance_matrix[[str[origin_latitude] + " " + str[origin_longitude]], [str[destination_latitude] + " " + str[destination_longitude]], mode='walking']['rows'][0]['elements'][0]
print[distance]
{u'distance': {u'text': u'2,014 km', u'value': 2013656},
u'duration': {u'text': u'16 days 23 hours', u'value': 1464529},
u'status': u'OK'}
1Bước thứ ba và cuối cùng của chúng tôi là tính khoảng cách chúng tôi vừa đi [!].
# Requires geo-coordinates[latitude/longitude] of origin and destination
origin_latitude = 12.9551779
origin_longitude = 77.6910334
destination_latitude = 28.505278
destination_longitude = 77.327774
distance = gmaps.distance_matrix[[str[origin_latitude] + " " + str[origin_longitude]], [str[destination_latitude] + " " + str[destination_longitude]], mode='walking']['rows'][0]['elements'][0]
print[distance]
{u'distance': {u'text': u'2,014 km', u'value': 2013656},
u'duration': {u'text': u'16 days 23 hours', u'value': 1464529},
u'status': u'OK'}
2Đơn giản và ngọt ngào! Chúng tôi có danh sách của chúng tôi cho 100 mục [chỉ hiển thị 15 mục đầu tiên].
Bây giờ, chúng ta hãy kiểm tra xem những gì chúng ta có có ý nghĩa. Lấy hai điểm ngẫu nhiên và kiểm tra xem thời gian và khoảng cách mà dịch vụ Google Maps cho thấy có giống như [hoặc gần với hợp lý] những gì chúng ta có trong tập dữ liệu chúng ta đã tạo.
Thoạt nhìn thông báo làm thế nào mục đầu tiên là 0 cho khoảng cách; Đó là một dấu hiệu tốt. Hãy nhớ rằng chúng tôi đã lấy mục đầu tiên làm tài liệu tham khảo.
Chúng ta hãy lấy mục thứ hai [ID 2] trong bộ dữ liệu của chúng tôi [-1.66881597155677, 30.5838648247755] và thấy cả khoảng cách đến nguồn gốc [dường như ở đâu đó ở quận Rutsiro!] Và thời gian cần có. Với những ngón tay của chúng tôi vượt qua, sau đó chúng tôi có thể so sánh điều đó với những gì chúng tôi nhận được từ mã.
Google Map cho thấy tuyến đường ngắn nhất dài 233 km và phải mất khoảng 5 giờ để di chuyển khoảng cách đó. So sánh, mã của chúng tôi xác định rằng tuyến đường ngắn nhất sẽ dài khoảng 240 km và sẽ mất 5,2 giờ để di chuyển khoảng cách đó.
Eureka!
Một ví dụ nữa. Một cho con đường. Hãy kiểm tra khoảng cách và thời gian cho ID 11.
Google Map nói rằng đối với ID 11, hành trình sẽ dài 144 km và sẽ mất khoảng 3 giờ để hoàn thành. So sánh, kết quả từ mã của chúng tôi cho thấy hành trình sẽ là khoảng 143 km và sẽ mất khoảng 3,3 giờ. Khá hợp lý.
Tất cả trong tất cả, nó hoạt động. Tuy nhiên, trong một số trường hợp, nó có thể không chính xác nhưng trong phần lớn các trường hợp, nó đưa ra câu trả lời hợp lý đáng kể. Hãy nhớ rằng có những yếu tố khác có thể gây ra sự khác biệt nhỏ mà chúng ta có thể không bao thanh toán. Trong mọi trường hợp, nó đủ để sử dụng các kết quả này như các biến trong phân tích thống kê. Với suy nghĩ này, hãy nghĩ về cách bạn có thể tính toán khoảng cách ngắn nhất đến một cơ sở hạ tầng vật lý nhất định như bệnh viện hoặc tài nguyên gần nhất như sông hoặc hồ. Chúng tôi sẽ làm điều đó trong các lần lặp khác của loạt bài này.
Nhưng lần lặp tiếp theo của loạt bài này sẽ giải quyết một câu hỏi: nếu bạn biết tọa độ của một địa điểm nhất định, bạn có thể nói độ cao bằng Python không? Điều này rất quan trọng nếu bạn cần độ cao cho phân tích của bạn. Không cần phải đi để thu thập dữ liệu trong lĩnh vực này. Python có bạn.
Ad astra!