偏移 GPS 坐标的公式/算法

Posted

技术标签:

【中文标题】偏移 GPS 坐标的公式/算法【英文标题】:Formula/algorithm to offset GPS coordinations 【发布时间】:2015-01-06 21:28:39 【问题描述】:

我提供了以纬度、经度为单位的 GPS 坐标,并希望将它们偏移一个距离和一个角度。

例如:如果我将45.123457.34567 沿方位角 104 度偏移 22 公里,新坐标是什么?

谢谢

【问题讨论】:

这其实是一个复杂的问题。考虑地形了吗?你假设地球是一个球体吗? 我看到的距离大约是 20 公里,很少超过。但希望得到一个与事实相差 +-1 公里的结果。 你考虑地形了吗?你假设地球是一个球体吗?什么是“真相”?有很多方法可以测量 A 点和 B 点之间的距离,而且在短距离时会变得很复杂。 是的,我认为它是一个球体,而不是一个平面。 澄清一下,您是否假设地球是一个完美球体?地球不是,但很多人使用球体来近似,因为它更容易。请澄清您的问题。 【参考方案1】:

对于大多数应用程序,这两个公式之一就足够了:

"Lat/lon given radial and distance"

第二个速度较慢,但​​在特殊情况下产生的问题较少(请参阅该页面上的文档)。 阅读该页面上的介绍,并确保在得到结果之后将纬度/经度转换为弧度,然后再转换回度数。 确保您的系统使用的是 atan2(y,x)(通常是这种情况),而不是 Excell 中的 atan2(x,y)。

【讨论】:

链接失效了。能更新一下链接吗?【参考方案2】:

上一个答案的链接已经失效了,这里是使用回程机的链接:

https://web.archive.org/web/20161209044600/http://williams.best.vwh.net/avform.htm

公式为:

点 lat,lon 在 tc 径向上距离点 1 的距离为 d 如果:

 lat=asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc))
 IF (cos(lat)=0)
    lon=lon1      // endpoint a pole
 ELSE
    lon=mod(lon1-asin(sin(tc)*sin(d)/cos(lat))+pi,2*pi)-pi
 ENDIF

此算法仅限于 dlon

 lat =asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc))
 dlon=atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(lat))
 lon=mod( lon1-dlon +pi,2*pi )-pi

【讨论】:

以上是关于偏移 GPS 坐标的公式/算法的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序 获取位置移动选点逆地址解析

请教高手gps经纬度转XY坐标的公式,我对这方面比较白痴,还望师傅能说得简单易懂一些!谢谢!

GIS中坐标系与偏移算法总结

在 GPS 坐标数据库中查找“热点”的算法

GPS定位的偏移校正(WGS84与火星坐标互转)

坐标系转换