计算两点之间通行时间,可以借助gis的网络分析实现,但网络分析需要较为完整的路网数据,且分析过程复杂,借助高德地图路径规划接口可实现不同交通方式下,两点之间的通行时间计算,快速简洁。本文以驾车方式为例,计算重庆个区县驻地间的驾车时间。
完整代码如下:
import csv
import requests
import pandas as pd
def get_time(orign,des,ak):
'''
:param orign: 起点坐标
:param des: 终点坐标
:param ak: 接口key
:return: [distance,duration]列表[距离,时间]
'''
url="https://restapi.amap.com/v3/direction/driving?origin={}&destination={}&extensions=all&output=json&key={}&strategy=0".format(orign,des,ak)
distance= requests.get(url).json()['route']['paths'][0]['distance']
duration = requests.get(url).json()['route']['paths'][0]['duration']
return [distance,duration]
if __name__=="__main__":
excel_path="所有区县.xlsx" #起点表格路径
use_field=["区县","高德坐标"] #起点表格使用字段
excel_path1 = "所有区县.xlsx" # 终点表格路径
use_field1 = ["区县", "高德坐标"] # 终点表格使用字段
result_path="result.csv" #结果存放路径
ak=""
dp=pd.read_excel(excel_path,usecols=use_field).values.tolist()
dp1 = pd.read_excel(excel_path1, usecols=use_field1).values.tolist()
f=open("result.csv","w",newline="")
wf=csv.writer(f)
wf.writerow(["出发地","目的地","距离","时间(s)"])
for i in dp:
orign=i[1]
orign_name=i[0]
for j in dp1:
des=j[1]
des_name = j[0]
result=get_time(i[1],j[1],ak)
wf.writerow([orign_name,des_name]+result)
f.close()
其中:
高德地图接口key需要到高德开放平台 | 高德地图API,中申请创建。
起点坐标表格如下:
结果表格如下: