文章来源于我的B站专栏:
用经纬度算距离www.bilibili.com突然对于经纬度与距离感兴趣了(公选课讲到东风系列弹道导弹射程),就想了解一下如何通过经纬度来计算距离。百度了一下,觉得不满意就自己尝试做一下,都是些基本的数学知识,感兴趣玩玩。(如果有错漏之处,欢迎指正!)
首先说思路:经纬度转换为空间直角坐标系,由此得到两个向量,求出向量夹角,由向量夹角和地球半径求出弧长,即距离。
首先说一下经纬度,
- 经度,是地球上一个地点离一根被称为本初子午线的南北方向走线以东或以西的度数。本初子午线的经度是0°,地球上其它地点的经度是向东到180°或向西到180°。
- 纬度,是指某点与地球球心的连线和地球赤道面所成的线面角,其数值在0至90度之间。位于赤道以北的点的纬度叫北纬,记为N,位于赤道以南的点的纬度称南纬,记为S。
这里定义:
- X轴为地心到(经度:0°、纬度:0°)的向量。
- Y轴为地心到(经度:90°、纬度:0°)的向量。
- Z轴为地心到(纬度:90°)的向量。
由此可以得到由经纬度到空间直角坐标系的对应关系:(注意正弦函数的输入为弧度)
由角度到弧度对应关系:
由两个点对应的单位向量求出向量夹角:
假设地球为理想球体:(半径为:6378.1370Km),则由半径和夹角可求弧长:
由此就全部理论就有了、但是还没完^.^ 。 下面由以上结论使用 MATLAB 验证。
下面使用Google Map 做个验证:
还是很好用的呢^.^!!!! 误差可能是由于取的坐标点与测量时的没有完全重合,误差还是很小的。
不过瘾,再来个大点的范围:北京到上海。
奇怪,直接用上面的坐标得到结果也有0.25Km的误差。(这个是手动两次选取起始点不一致造成的)
算了,不纠结了。喜欢就点个赞呗^.^^.^^.^^.^^.^^.^