python数据可视化开发(5):webAPI百度地图轻量驾车路线规划距离与直线距离计算

news2024/12/23 10:22:42

webAPI百度地图轻量驾车路线规划规划

  • 一、驾车路线规划说明
    • 1.接口说明
    • API服务地址
    • 请求参数
    • 返回参数
  • 二、python核心代码
    • 1.轻量路线规划代码封装
    • 2.批量读取起始点信息
  • 三、直线距离计算

在这里插入图片描述
轻量级路线规划服务(又名DirectionLite API )是一套REST风格的Web服务API,以HTTP/HTTPS形式提供了路线规划服务。相较于Direction API,DirectionLite API更注重服务的高性能和接口的轻便简洁,满足基础的路线规划需求,并不具备Direciton API中的驾车多路线/未来出行和公交跨城规划等高级功能。DirectionLite API支持驾车、骑行、步行、公交路线规划,支持中国大陆地区。

一、驾车路线规划说明

官方文档:https://lbsyun.baidu.com/faq/api?title=webapi/guide/webservice-lwrouteplanapi/dirve#

1.接口说明

根据起终点坐标规划驾车出行路线和耗时,支持:

  • 支持10个途经点
  • 支持设置偏好:常规路线、不走高速、躲避拥堵
  • 支持传入起点车头方向,辅助判断起点所在正逆向车道,辅助更准确算路

API服务地址

https://api.map.baidu.com/directionlite/v1/driving?origin=40.01116,116.339303&destination=39.936404,116.452562&ak=您的AK
//GET请求

请求参数

字段名称字段含义字段类型必填备注
ak开发者密钥,AK申请string
origin起点double,double起点经纬度,格式为:纬度,经度;小数点后不超过6位,40.056878,116.30815
destination终点double,double终点经纬度,格式为:纬度,经度;小数点后不超过6位,40.056878,116.30815

返回参数

在这里插入图片描述
其中:

  1. distance 路段距离 单位:米 ;
  2. duration 路段耗时 单位:秒;

二、python核心代码

1.轻量路线规划代码封装

  • ak,需要服务端AK
# 百度地图轻量路线规划距离测算

def get_urls(lat1, lng1, lat2, lng2):
    url = "https://api.map.baidu.com/directionlite/v1/driving?origin=" + str(lat1) + "," + str(lng1) + "&destination=" + str(lat2) + "," + str(lng2) + ""
    url = url + "&ak=7dQBLdpcG***"
    r = requests.get(url)
    res = json.loads(r.text)
    # print(res['result']['routes'][0]['distance'])
    # print(res['result']['routes'][0]['duration'])

    # 判断是否正常解析
    if res['status'] == 0:
        content = str(lat1) + "," + str(res['result']['routes'][0]['distance']) + "," + str(res['result']['routes'][0]['duration']) + "\n"
    else:
        content = str(lat1) + ",0,0" + "\n"

    # 写入文件
    with open('data.csv', 'a') as d:
        d.write(content)
    return ""

2.批量读取起始点信息

将要计算的起始点经纬度保存为txt格式,读取后通过测算函数进行转化。

# 读取起始点信息;
with open(r'add.txt', 'r', encoding='utf-8') as f:
    # 读取地址信息列表
    address = f.read().split()
    # 地址转换
    i = 0
    for item in address:
        # print(item)
        newAdd = item.split(',')
        # print(newAdd)
        # print(newAdd[0], newAdd[1], newAdd[2], newAdd[3])
        # 调用百度转换API封装函数;
        get_urls(newAdd[0], newAdd[1], newAdd[2], newAdd[3])
        print("第{}个起始点已转换".format(i + 1))
        if i % 99 == 0 and i > 0:
            print("第", i + 1, "个数据,执行延迟策略.")
            time.sleep(1)
        i += 1

三、直线距离计算

from math import radians,sin,cos,asin,sqrt
def haversine_dis(lon1, lat1, lon2, lat2):
    #将十进制转为弧度
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
   
    #haversine公式
    d_lon = lon2 - lon1
    d_lat = lat2 - lat1
    aa = sin(d_lat/2)**2 + cos(lat1)*cos(lat2)*sin(d_lon/2)**2
    c = 2 * asin(sqrt(aa))
    r = 6371 # 地球半径,千米
    return c*r*1000

@漏刻有时

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/500717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

带你玩转数据结构-单链表(适合初学者的文章,讲解的很仔细哦)

前言: 🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯 C语言进阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:讲解数据结构中链表的知识,;链表的分类,c语言实现单链…

界面控件Telerik UI for WinForms使用指南 - 数据绑定 填充(二)

Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件,所有的UI for WinForms控件都具有完整的主题支持,可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。 Telerik UI for WinForms组件为可视化任何类…

使用【SD-WEBUI】插件生成同一张图包含多个人物:分区域的提示词

文章目录 (零)前言(一)潜变量成对(Latent Couple)(1.1)可自组LoRA(Composable LoRA) (二)分区扩散(Multi Diffusion&#…

测试用例常见设计方法

1.基于需求的设计方法 主要从以下方面进行思考: 2.等价类法 将输入的数据等价划分成几个类,从每个类里面选出一个测试用例,如果这个测试用例通过,说明这一个类的测试用例都通过 有效等价类:满足输入数据要求的类 无…

rosbag相关进阶操作

一些很好用的网站 时间戳在线转换网页 旋转矩阵、四元数、绕轴旋转、欧拉角在线转换网页 四元数、欧拉角可视化在线转换网页 一、按时间截取bag 使用如下代码&#xff1a; rosbag filter 原始包名.bag 截取后的包名.bag "t.to_sec() > 开始时间 and t.to_sec() <…

如何导出windows平台下cloudflare warp内部存的私钥和token

结论&#xff1a;管理员身份运行 mimikatz&#xff1a;https://github.com/gentilkiwi/mimikatz/releases/tag/2.2.0-20220919 然后输入&#xff1a; privilege::debug &#xff08;提升权限到&#xff1a;NT-AUTHORITY\SYSTEM&#xff09;以及sekurlsa::credman 就能看到&…

免费使用GPT4.0?搭载多模态的全新New Bing开放使用教程(文末送书)

目录 1 微软发布新必应2 支持文本生成图像3 支持多模态回答4 历史记录和回答导出5 支持插件化导入本期图书推广 1 微软发布新必应 5月4日&#xff0c;微软基于ChatGPT的搜索引擎New Bing发布了一次大规模更新&#xff0c;并宣布已开放给所有用户&#xff0c;现在无需再排队等待…

前端技术搭建弹珠小游戏(内附源码)

The sand accumulates to form a pagoda ✨ 写在前面✨ 功能介绍✨ 页面搭建✨ 样式设置✨ 逻辑部分 ✨ 写在前面 上周我们实通过前端基础实现了小人逃脱&#xff0c;当然很多伙伴再评论区提出了想法&#xff0c;后续我们会考虑实现的&#xff0c;今天还是继续按照我们原定的节…

sentinel 随笔 3-降级处理

0. 像喝点东西&#xff0c;但不知道喝什么 先来段源码&#xff0c;看一下 我们在dashboard 录入的降级规则&#xff0c;都映射到哪些字段上 package com.alibaba.csp.sentinel.slots.block.degrade;public class DegradeRule extends AbstractRule {public DegradeRule(String…

redis(1)---redis的安装以及五大基本类型的使用

一)认识NoSQL 格式化数据VS格式化 1)SQL关系型数据库&#xff0c;在关系型数据库里面表中的字段是有限制的&#xff0c;况且最好不要随意删除修改表结构&#xff0c;存入到关系型数据库中的数据&#xff0c;都是结构化的数据&#xff0c;对于这些数据都是必须要有格式化的要求&…

sentinel 随笔 2-流控

0. 想要个半个月的旅游 最近发现算法比较有意思一些&#xff0c;什么企业框架都是看不完的… 书接 FlowSlot 1. FlowRuleChecker.checkFlow() : 配置的规则校验类 sentinel 并没有对这个Checker进行抽象的设计&#xff0c;第一次看有些别扭… package com.alibaba.csp.sent…

01- 综述 (目标检测)

要点&#xff1a; 区分One-stage detector 和 Two-stage detector 参考链接&#xff1a;深度学习目标检测最全综述 - 爱码网 详细模型解读参考&#xff1a;目标检测简介 - 知乎 一 目标检测分类 1.1 发展历程 检测网络发布历程&#xff1a; 1.2 检测模型分类 2014年后目标…

C嘎嘎~~ [类 下篇之运算符重载]

类 下篇 之运算符重载 5.赋值运算符重载5.1运算符重载5.1.1 运算符的概念5..1.2 重载运费符的位置5.1.3运算符重载的实质 5.2 赋值运算符重载5.2.1深刻理解---编译器生成的默认赋值运算符重载5.2.2深刻理解---拷贝构造和赋值运算符重载5.2.3深刻理解---传参和返回值用引用修饰…

CUDA error: device-side assert triggered CUDA kernel errors might be asynchronously reported at some

问题描述&#xff1a; 在修改代码时&#xff0c;出现入下报错。 发生异常: RuntimeError CUDA error: device-side assert triggered CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below might be incorrect. For debuggi…

Android Switch开关按钮使用和自定义样式(系列教程五)

Switch开关按钮简介 Switch开关按钮是Android中的基本控件之一&#xff0c;其本质上也是一个按钮&#xff0c;具有开和关两种展示状态。 Switch开关按钮基本使用 在布局文件中定义开关按钮&#xff1a; <LinearLayoutandroid:layout_width"300dp"android:layo…

Vivado安装后添加器件库

1.前言 通常安装Vivado时&#xff0c;由于软件完整安装的空间需求过于庞大&#xff0c;一般只会选择一部分器件进行安装。而随着学习和工作的进展&#xff0c;遇到新的赛灵思朋友是成长的里程碑&#xff0c;也是综合不能通过的绊脚石。 今天有幸认识了一位新的赛灵思朋友——…

云原生: istio+dapr构建多运行时服务网格

2020 年&#xff0c;Bilgin Ibryam 提出了 Multi-Runtime&#xff08;多运行时&#xff09;的理念&#xff0c;对基于 Sidecar 模式的各种产品形态进行了实践总结和理论升华。那到底什么是多运行时呢&#xff1f;首先还是得从分布式应用的四大类基本需求讲起。简单来讲任何分布…

刷题练习3

文章目录 题目一分析题解 题目二分析第一种第二种 题解第一种方法代码第二种方法代码 题目一 题目链接 描述 读入一个字符串str&#xff0c;输出字符串str中的连续最长的数字串 输入描述&#xff1a; 个测试输入包含1个测试用例&#xff0c;一个字符串str&#xff0c;长度不超…

牛顿迭代法解超越方程

牛顿迭代法解超越方程 L g T 2 2 π t a n h ( 2 π L d ) L\frac{gT^2}{2\pi}tanh(\frac{2\pi}{L}d) L2πgT2​tanh(L2π​d) 方程&#xff1a; f ( L ) L − g T 2 2 π t a n h ( 2 π L d ) 0 f(L)L-\frac{gT^2}{2\pi}tanh(\frac{2\pi}{L}d)0 f(L)L−2πgT2​tanh(L2π…

~项目启动~

rmq是什么&#xff1f; "rmq" 可能指的是 "RabbitMQ"&#xff0c;它是一种开源消息队列软件&#xff0c;采用 AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;协议&#xff0c;可以用于支持异步处理、任务分发、解耦合等应用场景。Rabbit…