地理距离:Wolfram Alpha与Google Maps API不一致

3
当我测试验证一个映射解决方案时,我发现谷歌地图API和沃尔夫拉姆阿尔法之间存在差异。这两个都是我信任的来源,所以我只能相信我做错了什么,但是我无论如何也无法确定是什么。
例如,伦敦(51.5°N,0.1167°W)和布拉格(50.8°N,14.43°E)之间的直线距离为: 沃尔夫拉姆阿尔法:1036公里 谷歌地图API:1627公里
那是一个相当显著的差异。对于其他位置的距离,偏差也类似。我没有混淆驾驶距离和球面上的距离,也没有混淆单位(所有内容都以千米为单位)。对于两个引擎,我正确地将本初子午线以西的经度视为负数,以东的经度视为正数。对于Google Maps测试(见上面的链接),我使用google.maps.geometry.spherical.computeDistanceBetween方法。更新:我添加了自己的haversine公式实现(jsfiddle),它与Google Maps API一致,因此我相信问题出在Wolfram Alpha上。但是,如何解决?输入似乎非常明确,输出也是如此...

也许WA没有考虑到地球的曲率?1036公里是在平坦表面上的距离吗? - davidkonrad
我希望WA正在考虑球面上的距离...它被认为是最好的数据挖掘引擎之一,并声称其地理空间能力非常强大。现在,我已经通过haversine结果验证了Google Maps解决方案,因此我已经联系了WA,因为如果WA错了...他们会想知道的。如果我使用不当,我也想知道如何使用。 - Ethan Brown
嗯,我认为这并不像WA犯了计算笛卡尔距离的初学者错误那么简单。如果你取1°~=111km,伦敦和布拉格之间的笛卡尔距离是1591公里,这仍然比WA的答案更接近Google Maps/haversine的答案。 - Ethan Brown
1
确实是一个好问题。经过仔细思考,差异太大了,与曲率无关。尝试在WA中点击“方向”,它显示的不是直线路径,但仍然只有1271公里。这超出了我的能力范围,但我真的很想看到这个问题的答案。 - davidkonrad
1
是的,“方向”区域并不让我担心...在笛卡尔投影上它确实显示了一条直线。我过去使用WA验证地理空间应用程序,它的直线距离与Google/Bing/haversine一致,所以这是新的行为...我认为WA出了问题。 - Ethan Brown
1个回答

3
谷歌地图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。 - Ethan Brown
2
让我困扰的是构造函数(LatLng)的名称告诉你参数的顺序。我会把它归咎于我得了感冒...显然它已经使我的大脑混乱了。 - Ethan Brown
@EthanBrown,我也遇到过这种情况,在KML / FusionTablesLayers中的各种函数中也是相反的。非常令人困惑。但是谁会想到呢 :) - davidkonrad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接