iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何利用百度地图获取两地距离
  • 507
分享到

Python如何利用百度地图获取两地距离

2023-06-20 15:06:54 507人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python如何利用百度地图获取两地距离”,在日常操作中,相信很多人在Python如何利用百度地图获取两地距离问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python如何利用百度地图获取两

这篇文章主要介绍“python如何利用百度地图获取两地距离”,在日常操作中,相信很多人在Python如何利用百度地图获取两地距离问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python如何利用百度地图获取两地距离”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

目录
  • 百度地图开放平台

  • 介绍需要用到的api

  • 编写Python程序

  • 获取对应地点的经纬度

  • 获取两地之间的距离

  • 合并函数调用

  • 进行简单的功能测试

  • excel中的批量地点计算距离

百度地图开放平台

进入百度地图开放平台后,登陆用户,点击上方的控制台,按照提示进行激活后创建服务端类型的应用,应用名任意设置,其中白名单校验不做任何限制可以填写0.0.0.0/0。创建成功后画面应如下图所示,其中访问应用AK)即途中红色方框圈起来的部分一定要注意不要随意泄漏,后面需要使用到,这是后面访问需要用到的一串口令。

Python如何利用百度地图获取两地距离

介绍需要用到的API

项目中所有使用的API均为WEB服务API,官方开发文档。

地点检索服务

地点检索服务(又名Place API)是一类Web API接口服务;
服务提供多种场景的地点(POI)检索功能,包括城市检索、圆形区域检索、矩形区域检索。开发者可通过接口获取地点(POI)基础或详细地理信息。

我们利用这个API来获取指定地点的经纬度(lat, lng)两个参数。

批量算路服务

批量算路服务(又名RouteMatrix API)是一套以Http/https形式提供的轻量级批量算路接口,用户可通过该服务,根据起点和终点坐标计算路线规划距离和行驶时间,RouteMatrix API V2.0支持中国大陆地区。

我们利用这个API来获取两个地点(用经纬度来给出)之间的路线规划距离。

编写Python程序

0.需要用到的模块

  •  requests

  • json

1.获取对应地点的经纬度

将传入的address通过地点检索服务得到其经纬度,返回值为经纬度对应的字符串值,中间以逗号隔开,之后跟一个查询返回状态,如果查询失败,状态值不为0。

注意将代码中的AK换成一开始截图中的AK码。

def getPosition(address):    url = r"http://api.map.baidu.com/place/v2/search?query={}&region=全国&output=JSON&ak={}".fORMat(        address,        AK  # 这里是一开始截图用红色圈起来的部分    )    res = requests.get(url)    json_data = json.loads(res.text)    if json_data['status'] == 0:        lat = json_data["results"][0]["location"]["lat"]  # 纬度        lng = json_data["results"][0]["location"]["lng"]  # 经度    else:        print("[ERROR] Can not find {}.".format(address))        return "0,0", json_data["status"]    return str(lat) + "," + str(lng), json_data["status"]

2.获取两地之间的距离

将传入的两个地点(以经纬度描述)通过批量算路服务得到之间的路线规划距离。本范例是以驾车行驶(对应参数为'driving')的方式来进行计算的。

同样注意将代码中的AK换成一开始截图中的AK码。

def getDistance(start, end):    url = "http://api.map.baidu.com/routematrix/v2/driving?output=json&origins={}&destinations={}&ak={}".format(        start,        end,        AK  # 这里是一开始截图用红色圈起来的部分    )    res = requests.get(url)    content = res.content    jsonv = json.loads(str(content, "utf-8"))    dist = jsonv["result"][0]["distance"]["value"]    return dist

3.合并函数调用

传入两个地点名,返回两地点距离,当某个地点查询不到时,返回结果设置为-1。

def calcDistance(startName, endName):    start, status1 = getPosition(startName)    end, status2 = getPosition(endName)    if status1 == 0 and status2 == 0:        return getDistance(start, end)    else:        return -1

4.进行简单的功能测试

运行代码输出北京成都之间的距离,其单位为米。

Python如何利用百度地图获取两地距离

5.对Excel中的批量地点计算距离

data.xlsx文件中的地点全部读取并计算出距离,将结果保存到本地的result.xlsx文件中,其中我们将距离的单位设置为千米。主模块代码如下:

if __name__ == "__main__":    data = pd.read_excel("data.xlsx")    res = []    for i in range(0, len(data)):        startName = data.iloc[i, 0]        endName = data.iloc[i, 1]        dist = calcDistance(startName, endName)        res.append([startName, endName, dist / 1000])    pd.DataFrame(res).to_excel(        "result.xlsx",        header=["起点", "终点", "距离"],        index=None,        encoding="utf-8"    )

其中data.xlsx文件的内容为:

Python如何利用百度地图获取两地距离

对应的输出result.xlsx文件内容如下:

Python如何利用百度地图获取两地距离

附录

# 本次整体的源代码AK = "修改为你自己的AK码即可使用"import pandas as pdimport requestsimport jsondef getPosition(address):    url = r"http://api.map.baidu.com/place/v2/search?query={}&region=全国&output=json&ak={}".format(        address,        AK  # 这里是一开始截图用红色圈起来的部分    )    res = requests.get(url)    json_data = json.loads(res.text)    if json_data['status'] == 0:        lat = json_data["results"][0]["location"]["lat"]  # 纬度        lng = json_data["results"][0]["location"]["lng"]  # 经度    else:        print("[ERROR] Can not find {}.".format(address))        return "0,0", json_data["status"]    return str(lat) + "," + str(lng), json_data["status"]def getDistance(start, end):    url = "http://api.map.baidu.com/routematrix/v2/driving?output=json&origins={}&destinations={}&ak={}".format(        start,        end,        AK  # 这里是一开始截图用红色圈起来的部分    )    res = requests.get(url)    content = res.content    jsonv = json.loads(str(content, "utf-8"))    dist = jsonv["result"][0]["distance"]["value"]    return distdef calcDistance(startName, endName):    start, status1 = getPosition(startName)    end, status2 = getPosition(endName)    if status1 == 0 and status2 == 0:        return getDistance(start, end)    else:        return -1if __name__ == "__main__":    data = pd.read_excel("data.xlsx")    res = []    for i in range(0, len(data)):        startName = data.iloc[i, 0]        endName = data.iloc[i, 1]        dist = calcDistance(startName, endName)        res.append([startName, endName, dist / 1000])    pd.DataFrame(res).to_excel(        "result.xlsx",        header=["起点", "终点", "距离"],        index=None,        encoding="utf-8"    )

到此,关于“Python如何利用百度地图获取两地距离”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Python如何利用百度地图获取两地距离

本文链接: https://www.lsjlt.com/news/297758.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python如何利用百度地图获取两地距离
    这篇文章主要介绍“Python如何利用百度地图获取两地距离”,在日常操作中,相信很多人在Python如何利用百度地图获取两地距离问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python如何利用百度地图获取两...
    99+
    2023-06-20
  • js如何根据百度地图提供经纬度计算两点距离
    这篇文章给大家分享的是有关js如何根据百度地图提供经纬度计算两点距离的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。正常在使用百度地图时,我们可以通过BMap的实例对象提供的方法计...
    99+
    2024-04-02
  • AngularJs如何利用百度地图API 定位当前位置获取地址信息
    这篇文章主要介绍AngularJs如何利用百度地图API 定位当前位置获取地址信息,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!第一、申请百度密钥  很简单的几步就搞定第二...
    99+
    2024-04-02
  • 利用高德地图API批量获取地点经纬度和行车线路与OD距离(excel和python)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、excel调取API方法1.申请一个key2.excel调用API 二、python方法计算地址列...
    99+
    2023-09-10
    python
  • Android 百度地图Sha1获取的方法
    Android 百度地图Sha1获取的方法场景一由于最近项目钟要用到定位功能因此肯定需要用到地图以及地位功能,相信大家也知道目前国内比较出名的地图像百度、高德、腾讯等这些还是用到比较多的,于是思考了一下决定还是用百度,相信老司机们都知道的哈...
    99+
    2023-05-31
    android 百度地图 sha1
  • C#调用百度地图API根据地名获取经纬度geocoding
    目录前言步骤 一、到百度地图开放平台注册认证,并创建应用,获取ak二、查看api文档三、创建GeocodingMap类,根据地名获取经纬度参考前言 公司的一个内部网站维护,需要根据地...
    99+
    2024-04-02
  • python使用百度或高德地图获取地理位置并转换
    目录一、地理编码与逆编码二、高德地图地理编码三、百度地图地理编码四、坐标转换和空间化总结一、地理编码与逆编码 地理编码与逆编码表示的是地名地址与地理坐标(经纬度)互相转换的过程。其中...
    99+
    2024-04-02
  • vue中调用百度地图获取经纬度的实现
    项目中,需要实现获取当前位置的经纬度,或者搜索某个位置并获取经纬度信息,我使用的的是vue,地图使用的是百度地图。 默认自动获取当前位置经纬度 拖动小红标 获取经纬度 关键词 ...
    99+
    2024-04-02
  • 使用python如何随心所欲地爬取百度图片
    小编给大家分享一下使用python如何随心所欲地爬取百度图片,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、前言之前爬取了很多静态网页的内容,包括:小说、图片等...
    99+
    2023-06-06
  • Vue中如何使用百度地图
    这篇文章主要为大家展示了“Vue中如何使用百度地图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue中如何使用百度地图”这篇文章吧。Vue下使用百度地图的简易...
    99+
    2024-04-02
  • java调用百度的接口获取起-止位置的距离
    需求:校验收货地址是否超出配送范围 重要:做该需求的思路就是通过卖家和卖家具体的地址信息,来获取到二者的经纬度, 此时可以使用百度的 "地理编码服务",即可获取对...
    99+
    2023-05-18
    java调用百度接口获取起-止位置 java获取起-止位置
  • 如何利用Mysql计算地址经纬度距离实时位置
    目录前言思路数据库地址表设计需求实现总结前言 最近在做项目时候,遇到一个这样子的需求, 点到卡包里面卡券使用使用,需要展示卡券使用附近门店, 思路 数据库地址表设计 通用的区域街道...
    99+
    2024-04-02
  • 如何利用百度知道获取流量
    本篇文章给大家分享的是有关如何利用百度知道获取流量,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。百度知道做流量应该注意的问题:   一、 回答问题要精准,要围绕作者问题的有针对...
    99+
    2023-06-12
  • 利用java、js或mysql计算高德地图中两坐标之间的距离
    前言因为工作的原因,最近在做与地图相关的应用,使用了高德地图,研究了下高德地图计算两坐标距离的方法,官网上提供的开发包中有相关的方法,但是我的产品中比较特殊,无法直接使用提供的方法,所以就自己封装了相关计算方法,供大家参考,下面话不多说了,...
    99+
    2023-05-31
    高德地图 坐标距离 java
  • web开发如何使用百度地图实现地图网格
    这篇文章主要介绍了web开发如何使用百度地图实现地图网格,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言:最近要使用百度地图实现楼盘可视化...
    99+
    2024-04-02
  • HTML5怎么获取当前地理位置并在百度地图上展示
    这篇文章主要介绍了HTML5怎么获取当前地理位置并在百度地图上展示,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.HTML5获取当前地理位置HTML5 Geolocatio...
    99+
    2023-06-09
  • JavaScript如何嵌入百度地图API
    小编给大家分享一下JavaScript如何嵌入百度地图API,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!先看效果图一、申请成为百度开发者,获得使用地图API接口...
    99+
    2023-06-14
  • Vue中如何使用百度地图插件
    这期内容当中小编将会给大家带来有关Vue中如何使用百度地图插件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。安装CDN全局安装<script src=&q...
    99+
    2024-04-02
  • HTML5页面直接调用百度地图API如何获取当前位置直接导航目的地
    这篇文章主要介绍了HTML5页面直接调用百度地图API如何获取当前位置直接导航目的地,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我是应用在微信中,自定义菜单,菜单直接链接到...
    99+
    2023-06-09
  • 如何使用html5定位获取当前位置并在百度地图上显示
    这篇文章将为大家详细讲解有关如何使用html5定位获取当前位置并在百度地图上显示,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 代码如下: navigator.geo...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作