我有一个小算法问题。
我正在开发一个Android应用程序。我得到了GPS坐标。例如:纬度:23.23907
,经度:50.45786
。
所以我明白了。我想计算这个点上下5米的边界细节。即:
[23.23907 - 5 meters ; 23.23907 + 5 meters]
[50.45786 - 5 meters ; 50.45786 + 5 meters]
如何进行此计算?
非常感谢!
答案 0 :(得分:15)
当您只在南北和东西方向工作时,可以简化大概的公式。
如果地球的周长为C,则指定点以南d公里处的点向南强<360> d / C 度。向东d公里处的点是向东的 360 * d /(C * cos(纬度))度。分母中的余弦来自这样一个事实:给定纬度的经度长度比赤道短得多。
因此,如果the Earth's circumference为40075.04 km,要向北/向移动5 m,您将从纬度添加/减去 0.0000449 并使用相同的经度。要向西/向东移动5米,您将使用相同的纬度,并将 0.0000449 / cos(纬度)加/减到经度。不要忘记边缘情况:近极点你需要将纬度夹紧到90°,而经度接近180°你会增加或减去360°以保持经度在正确的范围内。
根据您的数字,范围大约为:
latitude: [23.23903 ; 23.23911]
longitude: [50.45781 ; 50.45791]
更新:请注意,这仍然假定地球是一个完美的球体,which it's not。例如,GPS系统将地球模拟为椭圆体,其中赤道为6378.137km,极点距离地球中心6356.7523142km。差异大约是1/300,对许多应用来说都很重要,但在这种情况下,它在误差范围内。
校正经度的公式应该很简单,因为平行线仍然是圆形:你只需要交换cos(latitude)
来获得正确的系数。计算correct latitude比较困难,因为经线不是圆而是椭圆,并且无法使用基本函数计算椭圆的弧长,因此必须使用近似值。
答案 1 :(得分:6)
我想补充一条非常重要的评论(对于那些不熟悉的人或那些忘记了这一点的人):
余弦是以弧度为单位计算的,而不是以度为单位。
转换:弧度= PI / 180 *度
(我为自己的答案道歉,但凭借我目前的35的声望,我无法发表评论)