十进制纬度/经度度的最大长度?
Posted
技术标签:
【中文标题】十进制纬度/经度度的最大长度?【英文标题】:Maximum length of a decimal latitude/longitude Degree? 【发布时间】:2010-12-26 06:12:48 【问题描述】:地球表面一个纬度和经度的最大长度是多少(以公里或英里为单位,但请具体说明)?
我不确定我是否足够清楚,让我重新表述一下。众所周知,地球不是一个完美的圆,赤道(或厄瓜多尔)的纬度/经度变化 1.0 可能意味着一个距离,而两极的相同变化可能意味着另一个完全不同的距离。
我正在尝试减少数据库(在本例中为 mysql)返回的结果数量,以便可以使用 Great Circle 公式计算多个点之间的距离。我希望选择纬度/经度边界内的坐标,而不是选择所有点然后单独计算它们,例如:
SELECT * FROM poi
WHERE latitude >= 75 AND latitude <= 80
AND longitude >= 75 AND longitude <= 80;
PS:时间不早了,感觉我的英文没有达到我的预期,如果有看不懂的地方请说出来,我会根据需要修复/改进,谢谢.
【问题讨论】:
放松——你的英语很好。转换为 UTM 可能是一种选择 - 它旨在处理曲率问题。 谢谢,UTM 对我来说是新的。我会更深入地研究它。 您提出了错误的问题,并且没有回答者考虑您对您计划如何使用它的描述(第三段)。仅在赤道使用此或类似答案是可以的 - 请参阅我的答案。 对于所有真正想知道最大长度的人,我已经给出了答案。 【参考方案1】:最初,海里的定义是赤道上一分钟经度的长度。因此,赤道周围有 360 * 60 = 21,600 海里。同样,一公里的原始定义是 10,000 公里 = 从极点到赤道的长度。因此,假设一个球形地球,将会有:
40,000 ÷ 21,600 = 1.852 公里/分钟 1.852 × 60 = 111.11 公里/度允许使用球形地球而不是球形地球会稍微调整系数,但不会调整那么多。您可以非常确信该因子小于每分钟 1.9 公里或每度 114 公里。
【讨论】:
-1 阅读 OP 的第 3 段,看看答案的用途,看看高纬度地区会发生什么。 @John:问题标题要求学位的“最大长度”。我的回答提供了这些信息。 是的。是的。即使“学位的最大长度”不适合问题第 3 段中所述的过滤目的,OP 也提出了错误的问题。 -1 因为人们会根据这个迂腐正确但具有误导性的答案构建错误的系统【参考方案2】:用于地球的参考椭球体是 WGS84 系统,意思是 赤道的地球半径的长度为 6 378 137 m 或 3963.19 英里
在赤道处达到经度的最大长度,大约为(上界) 111.3195 公里或 69.1708 英里
在赤道和1°之间达到1度纬度的最大长度。它几乎完全等于经度的最大长度;第一个近似值表明差异小于 4.2 米,产生
111.3153 公里或 69.1682 英里
【讨论】:
-1 解决 OP 的标题问题并忽略答案的用途。 只是问:由于问题仍然标记在错误的标题下,纠正错误问题而不是投票否决正确答案不是更好的解决方案吗?所以如果人们只阅读标题,仍然会产生错误的印象吗?那么那些真正想知道经度/纬度最大长度的人呢?那么如何使用您的声誉来编辑问题呢?【参考方案3】:如果您可以使用 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()。
【讨论】:
【参考方案4】:一个纬度的长度变化不大,在赤道约110.6公里到两极附近约111.7公里之间。如果地球是一个完美的球体,它将是恒定的。出于获取已知(纬度、经度)10 公里范围内的点列表等目的,假设恒定的 111 公里应该是可以的。
然而,经度却是完全不同的故事。它的范围从赤道的约 111.3 公里、纬度 60 度的 55.8 公里、纬度 89 度的 1.9 公里到极地的零。
你问错了问题;您需要知道 MINIMUM 长度以确保您的查询不会拒绝有效的候选人,不幸的是,经度的最小长度为零!
假设您听从其他人的建议,对经度和纬度都使用大约 111 公里的常数。对于 10 公里查询,您将使用 10 / 111 = 0.09009 纬度或经度的边距。这在赤道是可以的。然而,在纬度 60(例如,斯德哥尔摩所在的位置)向东移动 0.09 度经度只会得到大约 5 公里。在这种情况下,您错误地拒绝了大约一半的有效答案!
幸运的是,获得更好的经度界限(取决于已知点的纬度)的计算非常简单 - 请参阅 this SO answer 以及它引用的 Jan Matuschek 的文章。
【讨论】:
以上是关于十进制纬度/经度度的最大长度?的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 483. 最小好进制(数学) / 1239. 串联字符串的最大长度 / 1600. 皇位继承顺序(多叉树) / 401. 二进制手表