偏移 GPS 坐标的公式/算法
Posted
技术标签:
【中文标题】偏移 GPS 坐标的公式/算法【英文标题】:Formula/algorithm to offset GPS coordinations 【发布时间】:2015-01-06 21:28:39 【问题描述】:我提供了以纬度、经度为单位的 GPS 坐标,并希望将它们偏移一个距离和一个角度。
例如:如果我将45.12345
、7.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 坐标的公式/算法的主要内容,如果未能解决你的问题,请参考以下文章