5

一个纬度和经度在地球表面可以具有的最大长度(以公里或英里为单位 - 但请指定)是多少?

我不确定我是否足够清楚,让我重新表述一下。众所周知,地球不是一个完美的圆,赤道(或厄瓜多尔)的纬度/经度变化 1.0 可能意味着一个距离,而两极的相同变化可能意味着另一个完全不同的距离。

我正在尝试减少数据库(在本例中为 MySQL)返回的结果数量,以便我可以使用Great Circle公式计算几个点之间的距离。我希望选择纬度/经度边界内的坐标,而不是选择所有点然后单独计算它们,例如:

SELECT * FROM poi
 WHERE latitude >= 75 AND latitude <= 80
   AND longitude >= 75 AND longitude <= 80;

PS:时间不早了,感觉我的英语没有达到预期,如果有什么看不懂的请说出来,我会根据需要修复/改进它,谢谢。

4

4 回答 4

9

一个纬度的长度变化不大,在赤道约 110.6 公里到两极附近约 111.7 公里之间。如果地球是一个完美的球体,它将是恒定的。出于诸如获取已知(纬度,经度)10公里范围内的点列表之类的目的,假设恒定的111公里应该是可以的。

然而,经度是一个完全不同的故事。它的范围从赤道的约 111.3 公里、纬度 60 度的 55.8 公里、纬度 89 度的 1.9 公里到极地的零。

你问错了问题;您需要知道最小长度以确保您的查询不会拒绝有效的候选人,不幸的是,经度的最小长度为零!

假设您接受其他人的建议,对经度和纬度都使用大约 111 公里的常数。对于 10 公里查询,您将使用 10 / 111 = 0.09009 纬度或经度的边距。这在赤道是可以的。然而,在纬度 60(例如,斯德哥尔摩所在的位置)向东移动 0.09 度经度只会得到大约 5 公里。在这种情况下,您错误地拒绝了大约一半的有效答案

幸运的是,获得更好的经度界限(取决于已知点的纬度)的计算非常简单 - 请参阅这个 SO answer以及它引用的 Jan Matuschek 的文章。

于 2010-07-14T23:12:22.507 回答
7

最初,海里的定义是赤道上一分钟经度的长度。因此,赤道周围有 360 * 60 = 21,600 海里。同样,一公里的原始定义是 10,000 公里 = 从极点到赤道的长度。因此,假设一个球形地球,将有:

  • 40,000 ÷ 21,600 = 1.852 公里每分钟
  • 1.852 × 60 = 111.11 公里每度

允许使用球形地球而不是球形地球会稍微调整该因子,但不会调整那么多。您可以非常确信该系数小于每分钟 1.9 公里或每度 114 公里。

于 2009-12-13T22:18:52.743 回答
4

如果您可以使用 MySQL 空间扩展:http ://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html ,您可以使用它的运算符和函数来过滤点和计算距离。请参阅http://dev.mysql.com/doc/refman/5.0/en/functions-that-test-spatial-relationships-between-geometries.html,特别是函数contains()distance()

于 2009-12-14T14:39:40.853 回答
2

用于地球的参考椭球体是 WGS84 系统,这意味着赤道的地球半径长度为 6 378 137 m 或 3963.19 英里

经度的最大长度在赤道达到,约为(上限)111.3195 公里或 69.1708 英里

在赤道和1°之间达到1度纬度的最大长度。它几乎完全等于经度的最大长度;第一个近似值表明差异小于 4.2 米

111.3153 公里或 69.1682 英里

于 2009-12-14T13:45:48.420 回答