通过经纬度计算两点之间的距离的公式
时间: 2024-05-20 07:12:31 浏览: 68
计算地球上两点之间的距离可以使用 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 千米
osg根据经纬度计算两点之间的距离的公式
在使用OpenSceneGraph (OSG)计算两点之间的距离时,可以使用以下公式:
d = R * arccos(sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon2 - lon1))
其中,d表示两点之间的距离,R表示地球半径,lat1和lon1表示第一个点的纬度和经度,lat2和lon2表示第二个点的纬度和经度。
在OSG中,可以使用以下代码实现此公式:
double distance(double lat1, double lon1, double lat2, double lon2)
{
const double R = 6371.0; // 地球半径,单位为千米
lat1 = osg::DegreesToRadians(lat1);
lon1 = osg::DegreesToRadians(lon1);
lat2 = osg::DegreesToRadians(lat2);
lon2 = osg::DegreesToRadians(lon2);
double dlon = lon2 - lon1;
double dlat = lat2 - lat1;
double a = pow(sin(dlat / 2), 2) + cos(lat1) * cos(lat2) * pow(sin(dlon / 2), 2);
double c = 2 * atan2(sqrt(a), sqrt(1 - a));
return R * c;
}
其中,osg::DegreesToRadians()函数用于将角度转换为弧度。
阅读全文