9

我有一个小算法问题。

我正在开发一个 Android 应用程序。我得到 GPS 坐标。例如:纬度:23.23907,经度:50.45786

所以我得到了一点。我想计算这一点正负 5 米的边界细节。IE:

[23.23907 - 5 meters ; 23.23907 + 5 meters]
[50.45786 - 5 meters ; 50.45786 + 5 meters]

如何进行这个计算?

非常感谢你!

4

2 回答 2

17

当您仅在南北和东西方向工作时,可以大大简化半正弦公式。

如果地球的周长是 C,则给定点以南 d 公里处的点是向南360*d/C度。向东 d 公里处的点是向东360*d/(C*cos(纬度))度。分母中的余弦来自这样一个事实,即给定纬度的经度长度比赤道短那么多。

因此,如果地球的周长为 40075.04 公里,要向北/南移动 5 m,您将从纬度中添加/减去0.0000449并使用相同的经度。要向西/东移动 5 m,您将使用相同的纬度并将经度添加/减去0.0000449/cos(latitude)。但是不要忘记边缘情况:在极点附近,您必须将纬度限制在 90°,而在经度 180° 附近,您必须加或减 360°,以将经度保持在正确的范围内。

根据您的数字,范围大约是:

latitude:  [23.23903 ; 23.23911]
longitude: [50.45781 ; 50.45791]

更新:请注意,这仍然假设地球是一个完美的球体,但事实并非如此。例如,GPS 系统将地球建模为一个椭球体,其中赤道位于 6378.137 公里处,两极位于距地球中心 6356.7523142 公里处。差异大约为 1/300,对于许多应用程序来说非常重要,但在这种情况下,它在误差范围内。

修正经度公式应该很简单,因为平行线仍然是圆圈:您只需要交换cos(latitude)正确的系数。计算正确的纬度比较困难,因为子午线不是圆而是椭圆,而且椭圆的弧长不能用初等函数计算,所以必须使用近似值。

于 2013-03-07T07:35:55.250 回答
7

我想添加一个非常重要的评论:

余弦是在纬度上以弧度而不是度数计算的。

换算:弧度 = PI / 180 * 度

于 2015-01-09T12:10:49.990 回答