【问题标题】:Geographic distance: Wolfram Alpha not agreeing with Google Maps API地理距离:Wolfram Alpha 不同意 Google Maps API
【发布时间】: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


【解决方案1】:

Google Maps API 给了我 1034 公里的距离。你只是把坐标换错了。

你的代码:

var home = ['London', new google.maps.LatLng(-0.1167, 51.5)];

伦敦的正确坐标:

var home = ['London', new google.maps.LatLng(51.5, -0.1167)];

这同样适用于您示例中的其他点。希望这会有所帮助!

【讨论】:

  • 天哪。我知道这是一件愚蠢的事情。疯狂的笨蛋。谢谢,@MrUpisdown。
  • 让我难过的是构造函数的名称 (LatLng)告诉你将参数放入的顺序。我要把它归咎于寒冷我已经……显然,它扰乱了我的大脑。
  • @EthanBrown,去过那里,在 KML / FusionTablesLayers 中,它在各种功能中也是相反的。很混乱。但谁会想到这一点:)
猜你喜欢
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-20
  • 2010-11-21
  • 1970-01-01
相关资源
最近更新 更多