#Python实例 计算外卖配送距离(基于经纬度的导航及直线距离)

python,实例,计算,外卖,配送,距离,基于,经纬度,导航,直线 · 浏览次数 : 114

小编点评

**一、X-MIND** X-MIND是一种基于球面的坐标系统,用于描述地球上每个位置的坐标。每个经度坐标由经度 lng 和纬度 lat 两个分量组成。经纬度的有效范围为经度-180度到+180度,纬度大约-90度到+90度。 **二、计算两点经纬度之间的距离** 使用 geopy 库计算两点经纬度之间的距离。该库支持两种距离类型:测地线距离和大圆距离。 **三、Geopy库** Geopy 库是一个用于地理数据操作的 Python 库。该库提供了各种函数,用于计算两点经纬度之间的距离、路径和面积等。 **四、百度API接口** 百度地图开放平台提供导航服务,可以使用 API 来计算两点之间的距离。 **代码示例** ```python import pandas as pdimport import requestsimport import json def getDistance(start, end): url = "https://api.map.baidu.com/direction/v2/riding?origin={}&destination={}&ak={}".format( start, end, AK # 自动调用,不用修改 ) res = requests.get(url) json_data = json.loads(res.text) if json_data["status"] == 0: return json_data["result"]["routes"][0]["distance"] else: print(json_data["message"]) return -1 # 生成距离 result = getDistance("24.854880,102.860170", "24.8635140,102.8667850") # 打印结果 print(result) ```

正文

一:X-MIND

二:计算两点经纬度之间的距离

经纬度是利用三维球面空间来描述地球上一个位置的坐标系统,每个经纬度坐标由经度 lng 和纬度 lat 两个分量组成。经纬度的有效范围为经度-180度到+180度,纬度大约-90度到+90度。

 

 

 三:Geopy库,计算两点直线距离

如果遇到测算直线距离可以使用geopy这个包来进行计算,有两种模式选择,一个是测地线距离,一个是完美地球大圆距离。

3.1  测地线距离|geodesic

测地线距离定义为空间中两点的局域最短路径, 但是是沿着曲面进行计算的,与任何两个给定位置之间的最短曲线不相同。下面说明如何用纬度和经度数据计算测地线距离。

# 导入geopy包
from geopy.distance import geodesic as GD
 # pair数据格式,(latitude, longitude), 纬度和经度, 注意纬度和经度的取值范围
A =(24.854880,102.860170)
B =(24.8635140,102.8667850)
df = GD(A,B).m
df

3.2  大圆距离|great_circle

大圆距离指的是从球面的一点A出发到达球面上另一点B,所经过的最短路径的长度。在此示例中,假定地球是一个完美的球体。下面说明如何用纬度和经度数据计算大圆距离。

大圆距离将两个点分为两个弧,任何两个位置之间的较短弧等于大圆距离。

# 导入相应的包
from geopy.distance import great_circle as GRC

# pair对,纬度和经度
A=(9.072264 , 7.491302)
B=(14.716677 , -17.467686)
df = GRC(A,B).m
df

四:百度API接口,计算导航距离

4.1  申请百度API AK

百度地图开放平台下方是网址,首次进入可能需要注册账号,跟着流程注册,即可。

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

https://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5

 

4.2  代码应用

# 本次整体的源代码
AK = "你自己申请的百度API AK"

import pandas as pd
import requests
import json
def getDistance(start, end):
    url = "https://api.map.baidu.com/direction/v2/riding?origin={}&destination={}&ak={}".format(
        start,
        end,
        AK  # 自动调用,不用修改
    )
    res = requests.get(url)
    json_data = json.loads(res.text)

    
    if json_data["status"] == 0:
        return json_data["result"]["routes"][0]["distance"]
    else:
        print(json_data["message"])
        return -1

getDistance("24.854880,102.860170","24.8635140,102.8667850")

与#Python实例 计算外卖配送距离(基于经纬度的导航及直线距离)相似的内容:

#Python实例 计算外卖配送距离(基于经纬度的导航及直线距离)

一:X-MIND 二:计算两点经纬度之间的距离 经纬度是利用三维球面空间来描述地球上一个位置的坐标系统,每个经纬度坐标由经度 lng 和纬度 lat 两个分量组成。经纬度的有效范围为经度-180度到+180度,纬度大约-90度到+90度。 三:Geopy库,计算两点直线距离 如果遇到测算直线距离可以

#Python实例 计算外卖配送距离(基于百度API接口)---第二篇

https://www.cnblogs.com/simone331/p/17218019.html 在上一篇中,我们计算了两点的距离(链接为上篇文章),但是具体业务中,往往会存在一次性计算多组,上百甚至上千的距离。 所以我们需要利用python函数,批量去处理和传参,批量计算距离。前面的操作去第一篇

Python 实现 定义个矩形类,有长和宽两个实例属性,还有一个计算面积的方法

思路:'''1.定义矩形类2.定义属性 属性分:类属性和实例属性实例属性==》self.属性 》self是一个参数在一个方法中==》_init_方法 3.定义方法 def Area(self): s=self.length*self.width ''' class Square: def __ini

数值计算:前向和反向自动微分(Python实现)

自动微分技术(称为“automatic differentiation, autodiff”)是介于符号微分和数值微分的一种技术,它是在计算效率和计算精度之间的一种折衷。自动微分不受任何离散化算法误差的约束,它充分利用了微分的链式法则和其他关于导数的性质来准确地计算它们。我们可以选择定义一种新的数据类型来存储[u,u′]和[v,v′]这类数对。我们可以在这些数对上定义一种代数运算,这些代数运算编码了一些经典的操作。

Python读取大量Excel文件并跨文件批量计算平均值

本文介绍基于Python语言,实现对多个不同Excel文件进行数据读取与平均值计算的方法~

Python常见面试题016. 请实现如下功能|谈谈你对闭包的理解

016. 请实现如下功能|谈谈你对闭包的理解 摘自<流畅的python> 第七章 函数装饰器和闭包 实现一个函数(可以不是函数)avg,计算不断增加的系列值的平均值,效果如下 def avg(...): pass avg(10) =>返回10 avg(20) =>返回10+20的平均值15 avg(

如何用python计算不定积分

本文详细介绍了如何用Python计算不定积分的方法,重点SymPy是一个用于符号数学的Python库,支持许多类型的数学对象,包括整数、有理数、实数、复数、函数、极限、积分、微分、方程、几何等,同时本文也介绍了多项式函数、指数函数和三角函数、换元积分、有理函数的不定积分的方法。

Python gdal读取MODIS遥感影像并结合质量控制QC波段掩膜数据

本文介绍基于Python中GDAL模块,实现MODIS遥感影像数据的读取、计算,并基于质量控制QC波段进行图像掩膜的方法~

Python:对程序做性能分析及计时统计

如果只是想简单地对整个程序做计算统计,通常使用UNIX下的time命令就足够了。由于我用的是Mac系统,和Linux系统的输出可能有不同,不过关键都是这三个时间:user: 运行用户态代码所花费的时间,也即CPU实际用于执行该进程的时间,其他进程和进程阻塞的时间不计入此数字;system: 在内核中执行系统调用(如I/O调用)所花费的CPU时间。total(Linux下应该是real):即挂钟时间

聊聊神经网络的基础知识

来自《深度学习入门:基于Python的理论与实现》 张量 Numpy、TensorFlow、Pytorch等框架主要是为了计算张量或是基于张量计算。 标量:0阶张量;12,4,3, 向量:一阶张量;[12,4,3] 矩阵:二阶张量;[ [12,4,3], [11,2,3] ] 多阶张量:多维数组;