我有一个小的算法问题。
我正在开发一个Android应用程序。 我得到的GPS坐标。 例如:纬度: 23.23907
,经度: 50.45786
。
所以,我得一分。 我想计算在这点上加上或减去5米界限的细节。 即:
[23.23907 - 5 meters ; 23.23907 + 5 meters]
[50.45786 - 5 meters ; 50.45786 + 5 meters]
如何使这种计算?
非常感谢你!
我有一个小的算法问题。
我正在开发一个Android应用程序。 我得到的GPS坐标。 例如:纬度: 23.23907
,经度: 50.45786
。
所以,我得一分。 我想计算在这点上加上或减去5米界限的细节。 即:
[23.23907 - 5 meters ; 23.23907 + 5 meters]
[50.45786 - 5 meters ; 50.45786 + 5 meters]
如何使这种计算?
非常感谢你!
当你只在南北和东西方向的工作haversine公式可以简化很多。
如果地球的周长为C,在d公里点给定点的南面是360×d / C度到南部。 在d公里向东点是360×d /(C * COS(纬度))度到东部。 在分母中的余弦来自一个事实,即经度在给定的纬度比,大部分的赤道短的长度。
所以,如果地球的周长是40075.04公里,移动5〜北/南,你会加/减从纬度0.0000449,并使用同一经度。 要移动5〜东/西,你会使用相同的纬度和加/减0.0000449 / COS(纬度)经度。 不要忘了边缘的情况下,虽然:在极点附近,你必须夹紧北纬90°,东经附近的180°你必须得加上或减去360°,以保持经线在正确的范围内。
随着你的号码的范围内原来是近似:
latitude: [23.23903 ; 23.23911]
longitude: [50.45781 ; 50.45791]
更新:请注意,这还是假设地球是一个完美的球体, 它不是 。 例如模型地球为椭球在赤道是6378.137公里和两极的GPS系统是在离地球中心6356.7523142公里。 所不同的是约1 /第300和关系重大的许多应用,但在这种情况下,它的误差范围之内。
因为相似之处仍然圈修正公式经度应该很简单:你只需要交换cos(latitude)
的修正系数。 计算正确的纬度是困难,因为经络是椭圆形而非圆形,并且不能用初等函数来计算椭圆的弧长,所以你必须使用近似。
我想补充一个非常重要的意见(门外汉或为那些谁已经忘记了这一点):
余弦要上以弧度为单位的纬度和不以度来计算。
转换:弧度= PI / 180 *度
(我很抱歉,我自己制作一个答案,但我目前的35声誉,我不能发表评论)