已知经纬度求距离

已知经纬度求距离

如下图所示,已知点A的经度θA\theta_A和纬度φA\varphi_A以及点B的经纬度θB\theta_BφB\varphi_B,求两点的距离。图中点C为地球北极,其与点A和点B构成了一个球面三角形ABC\bigtriangleup ABC,三角形三边长分别为aabbcc。点F、D、E分别为本初子午线、过点A的经线以及过点B的经线与赤道面的交点。
首先将地球视为一单位圆球,则根据球面三角形余弦定理,有cosc=cosacosb+sinasinbcosCcosc=cosacosb+sinasinbcosC
对于单位圆球来说,球面三角形边的弧长即为相应球心角的弧度,即b=AOC=π/2φAb=\angle AOC=\pi/2-\varphi_A a=COB=π/2φBa=\angle COB=\pi/2-\varphi_B
C\angle C是平面CODCOD和平面COECOE的夹角C=DOE=θBθA\angle C=\angle DOE=\theta_B-\theta_A
代入余弦定理公式,得cosc=cos(π/2φA)cos(π/2φB)+sin(π/2φA)sin(π/2φB)cos(θBθA)=sin(φA)sin(φB)+cos(φA)cos(φB)cos(θBθA)cosc=cos(\pi/2-\varphi_A)cos(\pi/2-\varphi_B)+sin(\pi/2-\varphi_A)sin(\pi/2-\varphi_B)cos(\theta_B-\theta_A)\\=sin(\varphi_A)sin(\varphi_B)+cos(\varphi_A)cos(\varphi_B)cos(\theta_B-\theta_A)
因此c=arccos(sin(φA)sin(φB)+cos(φA)cos(φB)cos(θBθA))c=arccos(sin(\varphi_A)sin(\varphi_B)+cos(\varphi_A)cos(\varphi_B)cos(\theta_B-\theta_A))
再由弧长计算公式=×弧长=弧度\times半径
则可计算两点间得距离S=c×Re=Re×arccos(sin(φA)sin(φB)+cos(φA)cos(φB)cos(θBθA))S=c\times R_e=R_e\times arccos(sin(\varphi_A)sin(\varphi_B)+cos(\varphi_A)cos(\varphi_B)cos(\theta_B-\theta_A))
其中ReR_e为地球半径

已知经纬度求距离