高德开发者文档 :https://lbs.amap.com/api/webservice/guide/api/direction#driving
第一步:首先要申请自己的:key
第二步:根据自己的需求,从开发者文档。找到自己需要的API
第三步:发送请求,解析数据
获取两个坐标之间最优的路线距离
import json import requests import openpyxl # 定义函数 def Getlngat(origin, destination): url = 'https://restapi.amap.com/v3/direction/driving' ak = XXXXXX # 自己的key
示例:https://restapi.amap.com/v3/direction/driving?origin=119.449153,32.766924&destination=120.514376,31.318919&extensions=base&strategy=2&key=bb52f9bfc6d3352be1bce309f3f7da2a
url = url + '?' + 'origin=' + origin + '&destination=' + destination +'&extensions=base&strategy=2'+ '&key=' + ak # 拼接url origin 起点经纬坐标, destination 终点经纬坐标 req = requests.get(url=url) temp = req.json() return temp # 解析 def Analy(file_path): wb = openpyxl.load_workbook(file_path) ws = wb.active for i in range(3, ws.max_row + 1): try: # 异常捕获发生异常的坐标,不影响后续地点坐标获取 address = ws.cell(i, 4).value addres = ws.cell(i, 5).value origin = "{},{}".format(address, addres) a1 = ws.cell(i, 16).value a2 = ws.cell(i, 17).value if int(a1) > int(a2): destination = "{},{}".format(a1, a2) else: destination = "{},{}".format(a2, a1) if destination: distance = int(Getlngat(origin, destination)["route"]["paths"][0]["distance"])*0.001 ws.cell(i, 9).value = distance # 写入纬度 print(distance) else: ws.cell(i, 9).value = "缺少终点坐标" except: ws.cell(i, 9).value = "该地点目前未能获取,请重新尝试" wb.save(file_path) # 主函数 Analy(file_path=r'D:\PyCharm\坐标抓取\excel\结算数据3.xlsx')
# 0,速度优先,此路线不一定距离最短 # 1,费用优先,不走收费路段,且耗时最少的路线 # 2,距离优先,仅走距离最短的路线,但是可能存在穿越小路/小区的情况 # 3,速度优先,不走快速路,例如京通快速路(因为策略迭代,建议使用13) # 4,躲避拥堵,但是可能会存在绕路的情况,耗时可能较长 # 5,多策略(同时使用速度优先、费用优先、距离优先三个策略计算路径)。 # 其中必须说明,就算使用三个策略算路,会根据路况不固定的返回一~三条路径规划信息。 # 6,速度优先,不走高速,但是不排除走其余收费路段 # 7,费用优先,不走高速且避免所有收费路段 # 8,躲避拥堵和收费,可能存在走高速的情况,并且考虑路况不走拥堵路线,但有可能存在绕路和时间较长 # 9,躲避拥堵和收费,不走高速 strategy = 2
不懂就看开发文档 https://lbs.amap.com/api/webservice/guide/api/direction#driving
标签:origin,批量,python,destination,value,cell,url,ws,高德 From: https://www.cnblogs.com/xujunhui/p/17584050.html