首页 > 编程语言 >python 高德批量获取路径信息

python 高德批量获取路径信息

时间:2023-07-27 09:23:23浏览次数:46  
标签:origin 批量 python destination value cell url ws 高德

高德开发者文档 :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

相关文章

  • INNOVUS批量摆放cell array的脚本
    说明:invs_place_cell_array-prefix$prefix-libcell$libcell-hornum$hornum-vernum$vernum-startX$startX-startY$startY-spaceX$spaceX-spaceY$spaceY-orientation$orientation,类似于ICC2中create_cell_array的用法procinvs_place_cell_array{args}{ ......
  • Python使用 - array
    常用操作 常见用法arr1=array.array("i",[1,2])#元素的字节数print(arr1.itemsize)#4print(len(arr1))#2#添加元素arr1.append(3)arr1.append(4)print(len(arr1))#4print(arr1)#array('i',[1,2,3,4])#修改元素arr1[0]=10print(arr1)#......
  • Python使用 - 字符串和二进制的转换
    字符串和二进制的转换,需要用到编码(比如:utf-8,gbk),它起到的主要作用:1)字符转二进制时:根据字符,去编码表查询该字符的二进制值2)二进制转字符时:根据二进制值,去编码表查询该二进制对应的字符 #字符转二进制,也叫编码str_bytes="123abc中文".encode("gbk")print(type(str......
  • Python使用 - struct工具
    转换为二进制a=struct.pack('cc',b"1",b"2")print(type(a))print(a)print(type(b"1"))a=struct.pack('bb',1,127)#signedchar,范围[-128,127],用128会抛异常print(type(a))#<class'bytes'>pr......
  • Python测试用例-unittest-基础
    一个简单的测试用例脚本importunittestclassTestCase(unittest.TestCase):@classmethoddefsetUpClass(cls)->None:print("setUpClass")@classmethoddeftearDownClass(cls)->None:print("tearDownClass")......
  • 使用Python统计下桌面某个文件夹下(含多层子文件夹)具体文件的数量(方法一)
    大家好,我是皮皮。一、前言前几天在Python最强王者群【东哥】问了一个Python自动化办公的问题,一起来看看吧。这个是他自己在实际工作中遇到的需求,正好遇到了这个问题,想着用Python来实现下。二、实现过程这里【郑煜哲·Xiaopang】给了一个提示,使用pathlib.glob()来进行解决,后来......
  • Python基础day53 Django
    web应用的简介因为Django框架是一个专门用来开发web项目的框架1.web应用程序是什么?web应用程序是一种可以通过web访问的应用程序,也就是说只需要一个浏览器即可,不需要其他软件了2.应用程序与有两种模式Django就是开发的B/S应用程序,所以,我们就认为浏览器就是我们......
  • Python学习4
    Python学习(二)1Python集合1.1集合(Set)集合是无序和无索引的集合。在Python中,集合用花括号编写。1.2访问项目您无法通过引用索引来访问set中的项目,因为set是无序的,项目没有索引。但是您可以使用for循环遍历set项目,或者使用in关键字查询集合中是否存在指定值。......
  • 物料/产品报检单批量生成检验单设置 提示:检验部门编码不能为空
    检查以下两点:1.物料质量属性中要设置默认的检验方案:2.检验方案上要有默认的部门 ......
  • 用Python为接口自动生成测试用例
    基于属性的测试会产生大量的、随机的参数,特别适合为单元测试和接口测试生成测试用例尽管早在2006年haskell语言就有了QuickCheck来进行”基于属性的测试“,但是目前来看这依然是一个比较小众的领域,参考资料有限,本文如有不足,欢迎指正。1.基于表的测试在过去的测试实践中,执行测......