突然对于经纬度与距离感兴趣了(公选课讲到东风系列弹道导弹射程),就想了解一下如何通过经纬度来计算距离。百度了一下,觉得不满意就自己尝试做一下,都是些基本的数学知识,感兴趣玩玩。(如果有错漏之处,欢迎指正!)
首先说思路:经纬度转换为空间直角坐标系,由此得到两个向量,求出向量夹角,由向量夹角和地球半径求出弧长,即距离。
首先说一下经纬度,
经度:地球上一点与零度经线之间的夹角(相对于自转轴),并规定向东为正、向西为负。
纬度:地球上一点与赤道之间的夹角(相对于赤道平面),并规定向北为正、向南为负。
这里定义:
X轴为地心到(经度:0°、纬度:0°)的向量。
Y轴为地心到(经度:90°、纬度:0°)的向量。
Z轴为地心到(纬度:90°)的向量。
由此可以得到由经纬度到空间直角坐标系的对应关系:(注意正弦函数的输入为弧度)
由角度到弧度对应关系:
由两个点对应的单位向量求出向量夹角:
假设地球为理想球体:(半径为:6378.1370Km)
则由半径和夹角可求弧长:
由此就全部理论就有了、但是还没完.
下面由以上结论使用 MATLAB 验证。
下面使用Google Map 做个验证:
还是很好用的呢.!!!
误差可能是由于取的坐标点与测量时的没有完全重合,误差还是很小的。
不过瘾,再来个大点的范围:北京到上海。
奇怪,直接用上面的坐标得到结果也有0.25Km的误差。
算了,不纠结了。喜欢就点个赞呗......