distVincentyEllipsoid() 产生 NA 值(geosphere 包)

distVincentyEllipsoid() yielding NA values (geosphere package)

我正在使用 geosphere 包 中的函数 distVincentyEllipsoid() 来计算世界港口之间的距离。此函数将两个地方的经度和纬度作为输入,并以米为单位给出距离作为输出。它似乎总体上运行良好,但在某些情况下,它无缘无故地给我 NA。我想知道是否有人知道一个错误(我找不到在线文档来解决这个问题),或者可以指出我做错了什么。奇怪的是它似乎只影响特定的对——例如。 f(a,b) 和 f(b,a) 将给出 NA,但 f(a,c) 和 f(b,c) 不会。

例如。 新西兰旺格雷 (Lon:174.35 Lat:-35.76) to Gibraltar, Gibraltar (Lon: -5.35 Lat:36.13):

distVincentyEllipsoid(c(174.35,-35.76),c(-5.35,36.13))

> NA

...但是:

马耳他瓦莱塔 (Lon:14.51 Lat:35.89) to Gibraltar, Gibraltar (Lon: -5.35 Lat:36.13):

distVincentyEllipsoid(c(14.51,35.89),c(-5.35,36.13))

> 1787499

...和:

新西兰旺格雷 (Lon:174.35 Lat:-35.76) 到马耳他瓦莱塔 (Lon:14.51 Lat:35.89):

distVincentyEllipsoid(c(174.35,-35.76),c(14.51,35.89))

> 18207301

(根据 Google 地图,这两个输出都是正确的 - 请注意这些值以米为单位。)

如有任何帮助,我们将不胜感激。

编辑:问题已解决 - Vincenty 的距离方法对近对映点无效。

使用 distGeo 代替 distVincentyEllipsoid。这被添加到 geosphere 版本 1.5,它使用 better algorithm(我的!)比 Vincenty 的。这个returns准确 所有点对的结果。特别是新西兰旺格雷 (Lon:174.35 Lat:-35.76) 到 Gibraltar, Gibraltar (Lon: -5.35 Lat:36.13)

> distGeo(c(174.35,-35.76),c(-5.35,36.13))
[1] 19958627

这个demonstration page显示 Google 地图中显示的近对映测地线示例。