地理知识笔记:Haversine距离

1 介绍 

  • Haversine距离用于计算地球上两点之间的大圆距离
  • 当考虑地球的真实曲率时,它特别适用于计算两个经纬度坐标之间的距离

其中:

2 python 实现 

def haversine_distance(lat1, lon1, lat2, lon2):
    R = 6371  # Earth radius in kilometers
    dlat = np.radians(lat2 - lat1)
    dlon = np.radians(lon2 - lon1)
    a = np.sin(dlat/2) * np.sin(dlat/2) + np.cos(np.radians(lat1)) * np.cos(np.radians(lat2)) * np.sin(dlon/2) * np.sin(dlon/2)
    c = 2 * np.arctan2(np.sqrt(a), np.sqrt(1-a))
    return R * c

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Haversine距离公式是一种计算地球表面两点间距离的方法,其基本思想是将地球看作是一个球体,通过计算两点间的球面距离来表示它们之间的距离。公式如下: d = 2r * arcsin(sqrt(sin^2((lat2-lat1)/2) + cos(lat1) * cos(lat2) * sin^2((lon2-lon1)/2))) 其中,d表示两点间的距离(单位为地球半径r),lat1和lat2表示两点的纬度,lon1和lon2表示两点的经度。 ### 回答2: Haversine距离公式是计算两个经纬度坐标点之间最短曲线距离的一种方法。它基于球形大地模型,假设地球是一个完美的球体。 该公式使用了三角函数来确定两个点之间的弧度距离。首先,我们需要将经纬度坐标转换为弧度值,然后使用Haversine函数计算两个点之间的弧度距离。 Haversine函数的数学表达式如下: haversin(θ) = sin²(θ/2) 其中,θ是两个点之间的弧度距离,可以通过以下公式计算: a = sin²((lat2 - lat1)/2) + cos(lat1) * cos(lat2) * sin²((lon2 - lon1)/2) c = 2 * atan2(√a, √(1-a)) d = R * c 其中,lat1和lon1是第一个点的纬度和经度,lat2和lon2是第二个点的纬度和经度。R是地球的半径,通常取6371千米。 计算出的d即为两个点之间的弧度距离,它表示的是地球表面上的最短曲线距离。 Haversine距离公式在地图应用程序中广泛使用,特别是在计算两个地理位置之间的距离时非常便捷。由于其简单性和准确性,它被视为一种常用的距离计算方法。 ### 回答3: Haversine距离公式是一种用于计算两个经纬度坐标之间距离的数学公式。它基于大圆距离的概念,通过考虑地球球面的曲率来计算两点之间的最短路径距离。 Haversine距离公式的基本形式如下: d = 2r * arcsin(sqrt(sin^2((lat2 - lat1)/2) + cos(lat1) * cos(lat2) * sin^2((lon2 - lon1)/2))) 其中,d表示两点之间的距离,r表示地球半径,单位可以是千米、英里或其他长度单位。lat1和lon1表示第一个点的纬度和经度,lat2和lon2表示第二个点的纬度和经度。上述公式中的单位是弧度,所以需要对纬度和经度进行弧度转换。 具体来说,公式首先计算了两点纬度差和经度差的sin的平方,然后使用三角函数和开方运算,得到两个sin的平方的和。然后将该和带入arcsin函数,再乘以2倍的地球半径r,即可得到两点之间的距离d。 Haversine距离公式在地理信息系统(GIS)和航海导航中经常被用于计算两个经纬度坐标之间的距离。它提供了一种较为准确的近似方法,可以在不考虑地球形状的情况下,对两个点之间的直线距离进行估算。然而,需要注意的是,Haversine距离公式没有考虑地球椭球体的形状、地球多极不规则性、以及海拔高度的差异等因素。所以在具体应用中,可能需要结合其他因素进行修正,以得到更准确的距离计算结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值