做建模或者研究空间数据,可能会遇到“根据经纬度计算两点间的球面距离”的问题,网上的资料很多,都是各种公式推导,但是一旦按公式编程计算,很可能得不到正确的距离。根本原因是在“角度-弧度的转化”与“软件语法”结合上出错了。
为此,我梳理了两种常用的计算方法,并用 Matlab 编程实现,保证能计算出正确的距离。
方法一:Great-Circle距离(基于球面余弦公式)
计算公式为:
其中,
为地球半径,
分别表示
点的经度、纬度;
分别表示
点的经度、纬度。
公式的具体推导过程略(可参考文献[1][2])
Matlab实现:
先定义一个角度转弧度的函数:
functionrad =D2R(theta)rad = theta*pi/180;
再定义计算Great-Circle距离的函数:
functiond =SphereDist(x,y,R)%根据两点的经纬度计算大圆距离(基于球面余弦公式)
%x为A点[经度, 纬度], y为B点[经度, 纬度]
if nargin < 3