为啥博尔德到费城的距离是 7 英里?我做错数学了吗?

Posted

技术标签:

【中文标题】为啥博尔德到费城的距离是 7 英里?我做错数学了吗?【英文标题】:Why is the distance between Boulder and Philadelphia is 7 miles? Am I doing my math wrong?为什么博尔德到费城的距离是 7 英里?我做错数学了吗? 【发布时间】:2011-03-08 05:21:55 【问题描述】:

这是费城的经纬度:http://www.rcn.montana.edu/resources/tools/coordinates.aspx?nav=11&c=DD&md=24&mdt=International(1924)-Hayford(1909)&lat=39.947648&lath=N&lon=-75.151978&lonh=W

这是博尔德的纬度/经度:http://www.rcn.montana.edu/resources/tools/coordinates.aspx?nav=11&c=DD&md=24&mdt=International(1924)-Hayford(1909)&lat=40.0149856&lath=N&lon=-105.2705456&lonh=W

纬度和经度是正确的(您可以在谷歌地图中查看)。 UTM_east 和 UTM_north 对两者也是正确的。

现在,将 UTM 代入此处的距离公式:http://www.basic-mathematics.com/distance-formula-calculator.html

您将获得以米为单位的距离,即 7 英里。

为什么博尔德距离费城 7 英里?

【问题讨论】:

我看到了 Python 标签,但这和 Python 有什么关系? 您是否排除了两个城市之间存在虫洞(en.wikipedia.org/wiki/Wormhole)的可能性? 哦,我明白了。克利夫兰介于他们之间。 【参考方案1】:

你不能像这样插入 UTM 坐标,因为这两个城市不在同一个UTM Zone。

编辑:

而且,正如其他人所指出的那样,即使他们在同一个区域中,也不应该只对 UTM 坐标应用平面笛卡尔距离计算,因为 UTM 坐标基于圆柱投影。我只是指出导致您的错误的最大因素是区域问题。

【讨论】:

即使是这样,在 UTM 区域中使用笛卡尔距离仍然不会给您正确的答案,因为该投影对于这种类型的计算来说还不够好。您将需要使用角度方法,就像其他 cmets 中建议的那样。 @Niklas:也非常正确。但是,球坐标与平面坐标之间的误差通常没有这么大。【参考方案2】:

纬度和经度是一个球坐标系,您使用的公式仅适用于平面。您需要使用haversine formula。

【讨论】:

@TIMEX 可能是因为 UTM 位于不同的网格上。您必须添加缺少的网格。抱歉,我以前从未使用过 UTM。【参考方案3】:

当我像在标准笛卡尔平面上一样计算两点之间的距离时,我得到的距离为 29.9,这与工具的结果非常接近:

这两点之间的距离是29.900202340452488

首先,在球形物体上使用笛卡尔距离计算器不会得到好的结果。 :) (撇开地球不是球形的,但它肯定也不是平的。)

但是,让我们假设使用笛卡尔距离“足够好”,这里的结果是用我们输入的任何单位来衡量的。并且知道1 degree is roughly 111 km,我们可以快速猜测博尔德和费城之间的距离大约是3318.9 km。鉴于谷歌在两者之间的行车路线大致是2841 km,您可以立即明白为什么应用笛卡尔距离算法在球体上不起作用,以及为什么需要使用haversine formula。

【讨论】:

对于球体的 6 度 x 6 度的小部分,可能最好的 UTM 可以近似平坦。这个近似值是否“足够好”取决于数据的使用方式:行驶距离,很好,但我不想将它用于炮台或自动驾驶着陆系统。

以上是关于为啥博尔德到费城的距离是 7 英里?我做错数学了吗?的主要内容,如果未能解决你的问题,请参考以下文章

距离计算器

Mysql 计数给了我一个非常糟糕的性能,我做错了吗?

将指针值分配给另一个指针值。我做错了吗?

Nativescript + Angular:flexShrink=“1” 似乎不适用于 iOS。我做错了吗?

放弃百万年薪,独自创业,我做错了吗?

尝试运行第二个命令时,在 bash 脚本中运行 AWS 服务会产生错误,我做错了吗?