GPS坐标:一个点周围1公里的正方形区域

20

我希望有人能提供一个方程,用于计算给定点周围1公里正方形(X从a.aaa到b.bbb,Y从c.ccc到c.ccc),例如lat = 53.38292839lon = -6.1843984。我还需要计算距离该点2公里、5公里和10公里的正方形。

我已经尝试过谷歌搜索,但没有找到相关信息... 现在时间已经很晚了,希望在我深入研究三角学之前,有人可以轻松地解决这个问题...

我将在JavaScript中运行所有这些计算,但使用任何语言都可以。


2
你意识到,如果你的点接近极点,它们在大多数情况下不会是“正方形”的,特别是从字面上理解这个词? - Paul Tomblin
你需要正方形还是半径就可以了? - matthewaveryusa
1
@Paul Tomblin 是的,你说的“square”是正确的。就所有意图而言,我所说的这种简单的正方形对我来说已经足够了! - Eamorr
@mna,我需要一个范围来在数据库中进行搜索。因此使用方括号。我不知道如何在线性数据库中搜索圆形。 - Eamorr
看一下这个答案:https://dev59.com/0XA65IYBdhLWcg3wrQh4#12997900 - Bobs
4个回答

44

如果地球是完美的球体,根据基本三角学...

纬度线的间距在全球任何位置都是相同的,因为所有纬线长度相等。因此,1度纬度等于地球周长的1/360,即40075公里的1/360。

经线长度取决于纬度。纬度为l的经线长度为cos(l)*40,075公里。1度经线将是其的1/360。

因此,您可以从这个角度入手。假设您想要一个非常接近一平方公里的范围,您需要0.008983度纬度。

在您所在的53.38292839度纬度的例子中,经线长度将是cos(53.38292839)* 40075 = [约]23903.297公里长。因此,1公里是1 *(360/23903.297)= 0.015060度。

实际上,地球不是完美的球体,在赤道处膨胀。上述计算对于大多数有用的区域都给出了非常好的答案,但在极地附近可能会变得有些奇怪(在经/纬形状不再像地球仪上的矩形时)。例如,如果您在赤道上,假设的经线长度为0公里。因此,如何处理对它进行度数计数的需求将取决于您需要这些数字的原因。


好的。吉姆的1英里等于0.014472纬度(或者相当于0.008983千米)似乎非常正确。非常感谢。 - Eamorr
2
注意:在计算cos(lat)时,请确保将lat转换为弧度,因为几乎所有编程语言在其Cos / Sin三角函数方法中使用弧度。 - Nagendra Rao

4

以下是我笔记中有关使用Android的十进制GPS的内容:

纬度和经度: 纽约市 40N 47 73W 58 40.783333 73.966667 华盛顿特区 38N 53 77W 02 38.883333 77.033333

计算得出距离为209英里!非常接近。

距离(英里)(x)= 69.1(lat2-lat1) 距离(英里)(y)= 53.0(long2-long1) 直线距离为sqrt(x2 + y2)...显然!@

每英里的纬度差= .014472 每英里的经度差= .018519

使用一个框作为近似值, 要在100英里范围内找到某人(100北/ 100南,100东/ 100西) 从0,0开始 -14.472 / + 14.472,-18.519 / 18.519


好的,所以delta_lat是0.014472英里,delta_lon是0.018519英里?太棒了,我只需要将其转换为公里,就可以解决问题了。非常感谢你。我还以为这会比那复杂得多呢! - Eamorr
经度和纬度的距离不符合勾股定理,因为你是在曲面上追踪而不是平面上。查找半正矢公式以获得正确的结果 - 它并不完美,但您可以立即用大约五行代码重现它,然后将其移入到某个库中。 - Tommy
我知道这个,在200英里的范围内它运作得相当不错,这就是为什么我加了书签。它在服务器上很快。如果你想要更精确的东西...在这里!http://www.meridianworlddata.com/Distance-Calculation.asp - Jim
记住,如果您要使用正方形来使数据库查询可管理,则正方形中心的对角线长度可能比半径长50%...嗯,该怎么办? - Jim
是的,我正在寻找一个正方形。感谢您的回复。 - Eamorr

1
给定中心点生成GPS正方形的简单方法是使用间接Vincenty算法。这里的Javascript代码展示了如何做到这一点 http://www.movable-type.co.uk/scripts/latlong.html。 使用圆形创建正方形并不难。正方形到每个点的距离相等。因此,给定一个中心点和距离,更改方位角为0或任何数取决于正方形的旋转,并增加90度或PI / 2弧度。每次增加90度,您将得到一个在圆形空间中的正方形。
我自己使用它来生成围绕中心点具有给定距离的GPS点。 .---. --/- --0-- -/-- .---.

0

简而言之

10公里 = 0.08999 从某个地理点的半径。这个计算仅基于纬度值,并且仅适用于具有WGS84投影的地理点。

更多细节

如果您想要更准确的答案,您必须通过构建某种函数来计算它。然而,即使考虑高度,墨卡托或不考虑,也不能保证完全准确。

注意事项

上面的值只是一个经验法则,因此不要将其用于关键应用程序。

参考资料

GIS StackExchange, 如何计算给定距离和纬度/经度的边界框, 答案由澳大利亚开发人员David提供


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