如何计算经纬度之间的距离?
在地理学习中偶尔会碰到需要计算给定的的经纬度坐标之间的距离,网上确实有不少代码可以实现,但是,但是,看不懂代码可咋整呢?那就直接用公式,在Excel里敲公式来计算吧。下面介绍公式的原理,这些都是从网上获取的,侵删。
首先假设:
把地球看成是理想的球体,其半径为R=6731km;
计算点都在地球表面;
球面上2(A,B)点之间的距离按过球心的大圆的弧长来算;
第二步:
待求点A(lon1,lat1)和B(lon2,lat2)
第三步:
需要用到这个Up主的关于经纬度定义以及向量等概念,将点A和B的经纬度坐标转成直角坐标,x=cos(lat)cos(lon);y=cos(lat)sin(lon);z=sin(lat);
球心O为原点(0,0,0)则向量OA=V1=[cos(lat1)cos(lon1),cos(lat1)sin(lon1),sin(lat1)];OB=V2=[cos(lat2)cos(lon2),cos(lat2)sin(lon2),sin(lat2)];
距离(弧长)=R*弧度;弧度=Acos[V1*V2/(|V1|*|V2|)];
将2中的向量代入弧度公式中:
弧度=Acos{cos(lat1)cos(lon1)*cos(lat2)cos(lon2)+cos(lat1)sin(lon1)*cos(lat2)*sin(lon2)+sin(lat1)*sin(lat2)}
=Acos{cos(lat1)cos(lat2)*[cos(lon1)cos(lon2)+sin(lon1)sin(lon2)]+sin(lat1)sin(lat2)}
=Acos{cos(lat1)cos(lat2)cos(lon1-lon2)+sin(lat1)sin(lat2)}
最终的公式,距离d=6371*Acos{cos(lat1)cos(lat2)cos(lon1-lon2)+sin(lat1)sin(lat2)};单位 km
注意事项,所有涉及三角函数的地方,都是用弧度;弧度=度*Pi/180。
今朝有酒今朝醉,今日之事今日毕。