1

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

例如。新西兰旺格雷 (Lon:174.35 Lat:-35.76) 到直布罗陀直布罗陀 (Lon: -5.35 Lat:36.13):

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

> NA

...但:

马耳他瓦莱塔(经度:14.51 纬度:35.89)至直布罗陀直布罗陀(经度:-5.35 纬度: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

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

任何帮助将不胜感激。

编辑:问题已解决——Vincenty 的距离方法对近对映点失败。

4

1 回答 1

4

使用 distGeo 代替 distVincentyEllipsoid。这是在 1.5 版中添加到 geosphere 的,它使用 比 Vincenty更好的算法(由我!)计算测地线距离。这将返回所有点对的准确结果。特别是新西兰旺格雷(Lon:174.35 Lat:-35.76)到直布罗陀直布罗陀(Lon:-5.35 Lat:36.13)

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

演示页面显示了 Google 地图中显示的近对跖测地线示例。

于 2017-04-12T14:47:59.933 回答