地图两点间距离计算公式

时间:2024-03-08 10:36:34

经常访问地图,如果知道地图上的两个点,如何计算两点之间的距离?

首先过这两点及地球球心做一个圆,如下图(地球球心O,待测距的两个点A,B,假设地球半径为R):

 

从上图可以看出,AB地图上的间距(曲面)为: R*2*alpha             (alpha为弧度)          (公式1)

那么核心的问题就是计算alpha。 

由图像知: AB=R*sin(alpha)*2                                                                                         (公式2)

AB就是空间中两点间的距离(假设点A的三维坐标为Ax,Ay,Az;B的三维坐标为Bx,By,Bz,),

计算公式为  sqrt((Ax-Bx)^2+(Ay-By)^2+(Az-Bz)^2);                                                          (公式3)

 

空间的一个点A(如下图)

A点在xOz平面投影B,在y轴投影D点,通过B点对x轴作垂线相交于C点,通过B点对z轴作垂线相交于E点。

OAD夹角为bata,BOx夹角为gama,

则beta即为地图上A点的纬度

   gama即为地图上A点的纬度

  OA为地球半径R,OB=R*cos(beta)    注意角度弧度转换

A点坐标为 Ay=R*sin(beta), Ax=R*cos(beta)*cos(gama),Az=R*cos(beta)*sin(gama)                

带入公式3     :

R*sin(alpha)*2=sqrt((Ax-Bx)^2+(Ay-By)^2+(Az-Bz)^2);

由此计算出 :alpha

然后 AB球面距离  R*2*alpha