Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript GPS坐标:围绕一个点1公里的正方形_Javascript_Math_Gps_Coordinates - Fatal编程技术网

Javascript GPS坐标:围绕一个点1公里的正方形

Javascript GPS坐标:围绕一个点1公里的正方形,javascript,math,gps,coordinates,Javascript,Math,Gps,Coordinates,我希望有人能给我一个方程式来计算一个给定点周围1km的正方形(X从a.aaa到b.bbb,Y从c.ccc到c.ccc),比如lat=53.38292839和lon=-6.1843984?我还需要一个点周围2公里、5公里和10公里的正方形 我试着在谷歌上搜索,但没用。。。现在已经很晚了,我希望在我钻研三角学之前,有人能在手边找到快速的解决方法 我将用Javascript运行所有这些,尽管任何语言都可以。以下是我笔记中的一些内容,将在Android上使用十进制GPS 拉特朗: 纽约市40N 47 7

我希望有人能给我一个方程式来计算一个给定点周围1km的正方形(X从a.aaa到b.bbb,Y从c.ccc到c.ccc),比如
lat=53.38292839
lon=-6.1843984
?我还需要一个点周围2公里、5公里和10公里的正方形

我试着在谷歌上搜索,但没用。。。现在已经很晚了,我希望在我钻研三角学之前,有人能在手边找到快速的解决方法


我将用Javascript运行所有这些,尽管任何语言都可以。

以下是我笔记中的一些内容,将在Android上使用十进制GPS

拉特朗: 纽约市40N 47 73W 58 40.783333 73.966667

冲洗DC 38N 53 77W 02 38.883333 77.033333

产量=209英里!!非常接近

距离(英里)(x)=69.1(lat2-lat1) 距离(英里)(y)=53.0(长2-长1) 作为乌鸦飞行sqrt(x2+y2)。。。哼@

三角洲(纬度)/英里=0.014472 增量(长)/英里=0.018519

使用长方体作为近似值 在100英里范围内找到某人(100北/100南,100东/100西) 从0,0
-14.472/+14.472,-18.519/18.519

如果世界是一个完美的球体,根据基本三角学

纬度在世界任何地方都有相同的线性距离,因为所有的纬度线都是相同的大小。所以1度纬度等于地球周长的1/360,也就是40075公里的1/360

经线的长度取决于纬度。纬度l处的经线为cos(l)*40075公里。一个经度将是这个经度的1/360

因此,你可以从这一点反向工作。假设你想要非常接近一平方公里的东西,你会想要1*(360/40075)=0.008983度的纬度

在您的示例纬度53.38292839处,经线将为cos(53.38292839)*40075=[约]23903.297公里长。因此1km等于1*(360/23903.297)=0.015060度


事实上,地球并不是一个完美的球体,它在赤道处更胖。以上给出了世界上大多数有用区域的一个非常好的答案,但在极点附近有点奇怪(长/宽的矩形不再像地球上的矩形)。例如,如果你在赤道上,假设的经线是0公里长。因此,你如何处理计算度数的需要取决于你为什么需要这些数字。

一个简单的方法是使用间接Vincenty算法生成一个给定中心的gps正方形。这里的Javascript代码展示了如何做到这一点。 使用圆创建正方形并不难。正方形与每个点的距离相等。因此,给定一个中心点,从中心到中心的距离,根据正方形的旋转和90度或π/2弧度的增量,从0或任何数字更改方向角。通过每次递增90度,您将在圆形空间中生成一个正方形

我自己用它来围绕一个中心点生成一个给定距离的GPS点 .---. --/- --0-- -/-- .--.

TL;博士
10公里
=
0.08999
距离某个
地质点的半径
。此计算仅基于纬度值,仅适用于具有WGS84投影的地质点

更多细节 如果你想得到更准确的答案,你必须通过构建某种函数来计算。然而,它仍然不能保证,因为人们甚至为错误的程度而争吵。考虑到高度、墨卡托与否等因素

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

参考文献
GIS StackExchange,回答

你意识到它们在大多数意义上都不是“正方形”,特别是当你的点靠近极点时?你需要正方形,还是半径会起作用?@Paul Tomblin是的,关于“正方形”你是对的。出于所有的意图和目的,我所说的那种简单的正方形对我来说已经足够了@mna,我需要一个范围在数据库中搜索。因此,广场。我不知道如何在线性数据库中搜索圆。看看这个答案,好的,那么delta_lat是0.014472英里,delta_lon是0.018519?酷,我将把它转换成公里,我应该被分类。非常感谢。我以为事情会比这复杂得多!纬度和经度上的距离不服从毕达哥拉斯定律,因为你追踪的是曲面,而不是平面。查找哈弗森公式以得到正确的结果-它并不漂亮,但你可以立即用大约五行代码复制它,然后将它拖放到某个库中。我知道这一点,这在200英里的距离内效果相当好,这就是为什么我将其标记为书签。在服务器上很快。如果你想要更准确的。。。。给你!记住,如果你打算使用正方形来管理数据库查询,那么正方形中心的对角线可以比半径大50%……嗯,我该怎么办?是的,我正在寻找一个正方形。谢谢你的回复。好的。吉姆的1英里=0.014472度纬度(或相当于0.008983公里)似乎恰到好处。非常感谢。注意:在计算cos(lat)时,请确保将lat转换为弧度,因为几乎所有编程语言在cos/Sin trig方法中都使用弧度。