计算两个位置经纬度距离

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

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

原文链接

目录
相关文章
|
编解码 索引 Python
python--根据任意非网格经纬度坐标,找到均匀网格点上最接近的经纬度坐标
需求:根据非规则经纬度坐标,查找均匀网格点上最接近的经纬度坐标,并提取该点上的变量。
python--根据任意非网格经纬度坐标,找到均匀网格点上最接近的经纬度坐标
根据经纬度计算两个点之间的距离
根据经纬度计算两个点之间的距离
|
2月前
|
算法 C++
大地经纬度坐标与地心地固坐标的的转换
大地经纬度坐标与地心地固坐标的的转换
37 0
|
4月前
经纬度大0.1范围会变大多少
【6月更文挑战第18天】经纬度大0.1范围会变大多少
52 0
|
5月前
|
JavaScript 前端开发 Java
根据地球上任意两点的经纬度计算两点间的距离
根据地球上任意两点的经纬度计算两点间的距离
136 2
|
5月前
根据经纬度计算两点距离的方法
根据经纬度计算两点距离的方法
|
算法
1298:计算字符串距离
1298:计算字符串距离
C++ 计算一个区域的内切圆, 区域内的一个点
C++ 计算一个区域的内切圆, 区域内的一个点
86 0
如何判断投影坐标是 3 度带还是 6 度带?如何计算中央子午线经度?
如何判断投影坐标是 3 度带还是 6 度带?如何计算中央子午线经度?
|
Java
java 经纬度处理、计算两地的距离、获取当前一定距离以内的经纬度值
java 经纬度处理、计算两地的距离、获取当前一定距离以内的经纬度值
410 0