Haversine和Vincenty之间的错误率

时间:2016-11-29 11:04:59

标签: matlab plot graph haversine geodesic-sphere

我正在比较Vincenty公式和半正式公式在不同分离距离上的有效性。我想知道它们之间的错误率。有没有很酷的方式来绘制这些?

1 个答案:

答案 0 :(得分:0)

我假设你真的想比较大圆距离 测地距离。 Haversine和Vincenty恰好是算法 计算这样的距离;然而,两者都导致过多的错误 一些限制。请参阅我对Is the Haversine Formula or the Vincenty's Formula better for calculating distance?的回答。

我在Matlab中为测地距离提供了更好的算法 包geographiclib。这也提供了准确的大圆 如果椭圆体的扁平设置为0,则距离为。这是a 其用途的简单说明绘制相对和绝对误差 对于一组随机点。这需要我的包裹在你的 Matlab路径。

num = 100000;
lat1 = asind(2*rand(num,1)-1);
lat2 = asind(2*rand(num,1)-1);
lon1 = 180*(2*rand(num,1)-1);
lon2 = 180*(2*rand(num,1)-1);
wgs84 = defaultellipsoid;
a = wgs84(1);
b = a * (1 - ecc2flat(wgs84(2)));
sphere = [(2*a + b)/3, 0];
[s12s, azi1s, azi2s] = geoddistance(lat1,lon1,lat2,lon2, sphere);
[s12e, azi1e, azi2e] = geoddistance(lat1,lon1,lat2,lon2, wgs84);
erra = (s12s - s12e);
errr = 100 * erra ./ s12e;
figure(1); plot(s12e, abs(errr), 'x');
figure(2); plot(s12e, abs(erra), 'x');

您可能还想查看我对How accurate is approximating the Earth as a sphere?的回答。