📅  最后修改于: 2023-12-03 15:23:26.508000             🧑  作者: Mango
谷歌距离矩阵 API 提供了计算两地之间距离和持续时间的服务,使用这个 API 可以快速、简便地获取这些信息。本文将介绍如何在 Python 中使用谷歌距离矩阵 API,计算两地之间的距离和持续时间。
在使用谷歌距离矩阵 API 之前,需要先获取一个 API Key,以便进行身份验证。获取方式如下:
注意:获取 API Key 可能需要进行付费,详细信息请参考谷歌官方文档。
要使用谷歌距离矩阵 API,需要先安装两个 Python 库:googlemaps 和 geopy。可以使用 pip 命令进行安装,命令如下:
pip install googlemaps geopy
在安装完依赖库之后,可以开始编写 Python 代码进行距离和时间的计算。
在代码开头导入必要的库,并替换其中的 API Key 为自己的。
import googlemaps
from datetime import datetime
from geopy.distance import geodesic
gmaps = googlemaps.Client(key='YOUR_API_KEY')
使用 geopy 库可以方便地计算两地之间的距离。这个库提供了 Geodesic 类,可以根据经纬度直接计算距离。
origin = 'New York, NY'
destination = 'Boston, MA'
origin_latlng = gmaps.geocode(origin)[0]['geometry']['location']
destination_latlng = gmaps.geocode(destination)[0]['geometry']['location']
distance = geodesic((origin_latlng['lat'], origin_latlng['lng']), (destination_latlng['lat'], destination_latlng['lng'])).km
print(f"The distance between {origin} and {destination} is {distance:.1f} km.")
使用 googlemaps 库中的 directions 函数可以获取两地之间的持续时间。这个函数的返回值包含了很多关于路线和持续时间的信息。
now = datetime.now()
directions_result = gmaps.directions(origin, destination, mode="driving", departure_time=now)
duration_in_traffic = directions_result[0]['legs'][0]['duration_in_traffic']['text']
print(f"The duration in traffic from {origin} to {destination} is {duration_in_traffic}.")
本文介绍了如何在 Python 中使用谷歌距离矩阵 API 计算两地之间的距离和持续时间。首先需要获取 API Key,并安装相应的 Python 依赖库。然后使用 geopy 库计算距离,使用 googlemaps 库获取持续时间。完整的代码可以参考下面的代码片段。
import googlemaps
from datetime import datetime
from geopy.distance import geodesic
gmaps = googlemaps.Client(key='YOUR_API_KEY')
origin = 'New York, NY'
destination = 'Boston, MA'
origin_latlng = gmaps.geocode(origin)[0]['geometry']['location']
destination_latlng = gmaps.geocode(destination)[0]['geometry']['location']
distance = geodesic((origin_latlng['lat'], origin_latlng['lng']), (destination_latlng['lat'], destination_latlng['lng'])).km
now = datetime.now()
directions_result = gmaps.directions(origin, destination, mode="driving", departure_time=now)
duration_in_traffic = directions_result[0]['legs'][0]['duration_in_traffic']['text']
print(f"The distance between {origin} and {destination} is {distance:.1f} km.")
print(f"The duration in traffic from {origin} to {destination} is {duration_in_traffic}.")
输出:
The distance between New York, NY and Boston, MA is 306.9 km.
The duration in traffic from New York, NY to Boston, MA is 3 hours 59 mins.
注意:在实际使用中,需要替换代码中的 origin 和 destination,以计算其他两地之间的距离和持续时间。