欢迎光临散文网 会员登陆 & 注册

如何计算经纬度之间的距离?

2022-01-23 18:43 作者:山水知音户外俱乐部  | 我要投稿

在地理学习中偶尔会碰到需要计算给定的的经纬度坐标之间的距离,网上确实有不少代码可以实现,但是,但是,看不懂代码可咋整呢?那就直接用公式,在Excel里敲公式来计算吧。下面介绍公式的原理,这些都是从网上获取的,侵删。

首先假设:

  1. 把地球看成是理想的球体,其半径为R=6731km;

  2. 计算点都在地球表面;

  3. 球面上2(A,B)点之间的距离按过球心的大圆的弧长来算;

第二步:

待求点A(lon1,lat1)和B(lon2,lat2)

第三步:

  1. 需要用到这个Up主的关于经纬度定义以及向量等概念,将点A和B的经纬度坐标转成直角坐标,x=cos(lat)cos(lon);y=cos(lat)sin(lon);z=sin(lat);

  2. 球心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)];

  3. 距离(弧长)=R*弧度;弧度=Acos[V1*V2/(|V1|*|V2|)];

  4. 将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)}

  5. 最终的公式,距离d=6371*Acos{cos(lat1)cos(lat2)cos(lon1-lon2)+sin(lat1)sin(lat2)};单位 km

  6. 注意事项,所有涉及三角函数的地方,都是用弧度;弧度=度*Pi/180。

今朝有酒今朝醉,今日之事今日毕。


如何计算经纬度之间的距离?的评论 (共 条)

分享到微博请遵守国家法律