Haversine公式通过经纬度计算两点距离
时间: 2023-08-30 20:07:24 浏览: 239
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分别表示两点的经度。这里的纬度和经度需要使用弧度表示。
需要注意的是,Haversine公式对于小距离的计算结果比较准确,但在计算大距离时可能存在一定误差。此外,由于地球并非完全球形,其他更精确的公式也可以用于计算两点之间的距离。
相关问题
通过经纬度计算两点之间的距离的公式
计算地球上两点之间的距离可以使用 Haversine 公式,公式如下:
d = 2r * arcsin(sqrt(sin²((lat₂-lat₁)/2) + cos(lat₁) * cos(lat₂) * sin²((lon₂-lon₁)/2)))
其中,d 是两点之间的距离,单位可以是千米、英里等;r 是地球的半径,可以取 6371 千米;lat₁、lat₂、lon₁、lon₂ 是两点的纬度和经度,单位为度。
需要注意的是,这个公式计算的距离是球面距离,不考虑地球的几何形状和海拔高度等因素。对于短距离的计算精度比较高,但是对于长距离的计算可能会存在一定误差。
如何通过经纬度计算两点之间的距离
可以使用 Haversine 公式来计算两点之间的距离,公式如下:
a = sin²(Δlat/2) + cos(lat1) * cos(lat2) * sin²(Δlon/2)
c = 2 * atan2( √a, √(1−a) )
d = R * c
其中,lat1 和 lat2 分别为两点的纬度,lon1 和 lon2 分别为两点的经度,Δlat 和 Δlon 分别为两点纬度和经度的差值,R 为地球半径,d 为两点之间的距离。
以下是 Python 代码实现:
import math
def distance(lat1, lon1, lat2, lon2):
R = 6371 # 地球半径,单位为千米
lat1, lon1, lat2, lon2 = map(math.radians, [lat1, lon1, lat2, lon2])
dlat = lat2 - lat1
dlon = lon2 - lon1
a = math.sin(dlat/2)**2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlon/2)**2
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
d = R * c
return d
# 示例
print(distance(39.9, 116.3, 31.2, 121.5)) # 1068.7 千米
阅读全文