纬度/经度和米的计量单位

10

我有一个小的算法问题。

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

所以我得到了一个点。我想计算这个点加减5米的边界细节。也就是说:

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

如何进行这个计算?

非常感谢!


2
请看这个链接:https://dev59.com/HXRB5IYBdhLWcg3wZWbi - Trinimon
可能是重复的问题:如何在给定距离内找到源坐标 - Joni
2个回答

17

The haversine公式简化为只涉及南北和东西方向时可以大大简化。

如果地球周长为C,则距给定点d公里的点朝南360*d/C度。距离东边d公里的点是朝东360*d/(C*cos(latitude))度。分母中的余弦来自于该纬度下经线的长度比赤道短得多。

因此,如果地球的周长为40075.04公里,则向南/北移动5米将从纬度中加/减0.0000449并使用相同的经度。向西/东移动5米将使用相同的纬度,并将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)换成正确的系数即可。计算正确的纬度较难,因为子午线不是圆而是椭圆,并且椭圆弧长无法使用初等函数计算,因此必须使用近似值。


7

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

余弦值应该根据纬度以弧度而不是角度计算。

转换公式:弧度 = PI / 180 * 角度


是的,没错,但这并不是错误仍然存在的原因。该错误主要是由上面更新的内容引起的:“... 这仍然假设地球是一个完美的球体,但实际上并非如此。” - user2587965

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