计算两个位置经纬度距离

简介: 计算两个位置经纬度距离

python 笔记 haversine (两个经纬度坐标之间的距离)

1 安装包

pip install haversine

2 haversine:计算两个点经纬度之间的距离

from haversine import haversine
lyon = (45.7597, 4.8422)
paris = (48.8567, 2.3508)

haversine(lyon, paris)
#392.2172595594006 默认是公里

haversine(lyon, paris, unit=Unit.MILES)
#单位设置为英里
#243.71250609539814

haversine(lyon, paris, unit='mi')
#243.71250609539814

3 Unit——支持的所有单位

from haversine import Unit

tuple(Unit)
'''
(<Unit.KILOMETERS: 'km'>,
 <Unit.METERS: 'm'>,
 <Unit.MILES: 'mi'>,
 <Unit.NAUTICAL_MILES: 'nmi'>,
 <Unit.FEET: 'ft'>,
 <Unit.INCHES: 'in'>,
 <Unit.RADIANS: 'rad'>,
 <Unit.DEGREES: 'deg'>)
'''

4 inverse haversine 从给定的向量(距离和方向)和起点计算点。

目前明确支持(北,东,南,西)和(东北,东南,西南,西北)方向。但也允许以弧度表示的角度。

from haversine import inverse_haversine, Direction
from math import pi
paris = (48.8567, 2.3508) # (lat, lon)

inverse_haversine(paris, 32, Direction.WEST)
#(48.85587279023947, 1.9134085092836945)

inverse_haversine(paris, 50, Direction.NORTH, unit=Unit.MILES)
#(49.58035791599536, 2.3508

inverse_haversine(paris, 32, pi * 1.25)
#(48.65279552300661, 2.0427666779658806)

5 haversine_vector

from haversine import haversine_vector, Unit

lyon = (45.7597, 4.8422) # (lat, lon)
paris = (48.8567, 2.3508)
new_york = (40.7033962, -74.2351462)

haversine_vector([lyon, lyon,lyon], [paris, new_york,lyon], Unit.KILOMETERS)
#array([ 392.21725956, 6163.43638211,    0.        ])
#分别是 lyon-paris,lyon-new_york,lyon-lyon的距离

5.1 comb=True

from haversine import haversine_vector, Unit

lyon = (45.7597, 4.8422) # (lat, lon)
london = (51.509865, -0.118092)
paris = (48.8567, 2.3508)
new_york = (40.7033962, -74.2351462)

haversine_vector([lyon, london], [paris, new_york], Unit.KILOMETERS, comb=True)
'''
array([[ 392.21725956,  343.37455271],
       [6163.43638211, 5586.48447423]])

注意:经度在-180到180,纬度在-90到90

原文链接

目录
相关文章
|
安全 Linux 测试技术
配置Goby工具环境(win,linux,macOS)
配置Goby工具环境(win,linux,macOS)
2006 2
|
弹性计算 测试技术
阿里云服务器网络收发包PPS是什么意思?5万PPS/10万/20万/80万/100万PPS
阿里云服务器网络收发包PPS是衡量云服务器网络质量的一项重要指标,单位是PPS,PPS是指Packets Per Second,每秒发包数量
8716 0
阿里云服务器网络收发包PPS是什么意思?5万PPS/10万/20万/80万/100万PPS
|
安全 大数据 测试技术
Mongodb亿级数据量的性能测试比较完整收藏一下
原文地址:http://www.cnblogs.com/lovecindywang/archive/2011/03/02/1969324.html 进行了一下Mongodb亿级数据量的性能测试,分别测试如下几个项目: (所有插入都是单线程进行,所有读取都是多线程进行) 1) 普通插入性能 (插...
5034 0
|
11月前
|
Windows
Microsoft Activation Scripts v3.6 (MAS)激活工具安装教程!中文汉化版(激活工具)
Microsoft Activation Scripts v3.6(MAS)是一款开源、轻量级的批量激活工具,支持HWID、KMS38、TSforge等多种方式,可离线永久激活Win7至Win11及Office全系列。兼容旧系统如Vista,操作简单,无误报风险。
14502 1
|
安全 Linux Shell
HDFS常用命令
HDFS常用命令
677 1
|
消息中间件 存储 负载均衡
kafka底层原理分析
kafka底层原理分析
484 2
|
计算机视觉 开发者 Python
OpenCV合并图像中加权和与覆盖的讲解与实战(附Python源码)
OpenCV合并图像中加权和与覆盖的讲解与实战(附Python源码)
813 0
|
机器学习/深度学习 安全 数据挖掘
Swift语言的应用场景非常广泛
Swift语言的应用场景非常广泛
829 4
|
网络协议 网络安全 数据安全/隐私保护
内容安全(DPI和DFI解析)
内容安全(DPI和DFI解析)
1266 6
|
JavaScript 前端开发 安全
【QML 与 C++ 之间的通讯机制】QML 与 Qt 通讯:讲解如何在QML 中使用C++类,以及如何在C++ 中获取QML的内容
【QML 与 C++ 之间的通讯机制】QML 与 Qt 通讯:讲解如何在QML 中使用C++类,以及如何在C++ 中获取QML的内容
2334 1