【发布时间】:2014-05-01 08:21:52
【问题描述】:
在测试以验证地图解决方案时,我发现 Google Maps API 和 Wolfram Alpha 之间存在差异。两者都是我信任的来源,所以我只能相信我做错了什么,但对于我的一生,我无法确定是什么。
例如,乌鸦在伦敦(51.5°N,0.1167°W)和布拉格(50.8°N,14.43°E)之间飞行的距离:
Wolfram Alpha: 1036 公里
Google Maps API: 1627 公里
这是一个非常显着的差异。与其他位置的距离相差类似。我没有混合行驶距离和球面线距离,也没有混合单位(一切都以公里为单位)。对于这两个引擎,我正确地将本初子午线以西的经度视为负数,将本初子午线以东的经度视为正数。对于谷歌地图测试(见上面的链接),我使用的是google.maps.geometry.spherical.computeDistanceBetween 方法。
更新:我添加了自己的半正弦公式 (jsfiddle) 实现,它与 Google Maps API 一致,所以我很确定问题出在 Wolfram Alpha 上。怎么样?输入看起来很明确,输出也是如此......
【问题讨论】:
-
也许西澳没有考虑地球曲率? 1036公里是平面上的距离?
-
我希望 WA 正在考虑球体上的距离……它被认为是可用的最佳数据挖掘引擎之一,并声称其地理空间功能非常强大。既然我已经根据 hasrsine 结果验证了 Google Maps 解决方案,我已经联系了 WA,因为如果 WA 错了……好吧,他们会想知道的。如果我用错了,我想知道怎么做。
-
嗯,我不认为它像WA一样简单地犯了计算笛卡尔距离的菜鸟错误。如果取 1°~=111km,则伦敦和布拉格之间的笛卡尔距离为 1591 公里,这仍然比 WA 答案更接近 Google Maps/haversine 答案。
-
这确实是一个好问题。经过重新考虑,差异与曲率有很大关系。尝试在西澳点击“方向”,它显示的只是一条乌鸦飞的路径,但仍然只有 1271 公里。远远超过我的技能,但我真的很想看到一个答案。
-
是的,“方向”区域并不是我担心的……而且它确实在笛卡尔投影上显示了一条直线。我过去曾使用 WA 来验证地理空间应用程序,它的直线距离与 Google/Bing/havesine 一致,所以这是新行为……我认为 WA 已经破烂了 :(
标签: google-maps-api-3 geospatial geo wolframalpha