如何计算沿着大圆航线给定距离处的经纬度?

5
我希望能够通过经纬度在地图上叠加机场间的大圆弧线段。我已经得到了初始和最终坐标之间的距离和方向,但现在需要生成曲线上的点以便绘制。我需要的是一个公式,该公式需要输入起点、终点和距离,并返回位于起点和终点路径之间的该距离处的点的纬度/经度。目前,我正在将地球近似为一个球体,并使用弧度 - 最终我将添加椭球体修正。
1个回答

2
currlat = oldlat + d * sin (angle)/ (radius); 
currlon = oldlon + d * cos (angle)/ (radius * cos(oldlat));

其中d是行驶距离,角度以弧度表示。这是在假设赤道和极点处地球周长均为40000公里的情况下进行的。您可以转换成弧度...

此外,它假定角度(方向)是相对于赤道线的。

显然,这需要椭球修正。

如果你向南走,sin值会变成负数,向北走则会变成正数。如果你向西走,cos值会变成负数,向东走则会变成正数。

d * sin(angle)和d * cos(angle)给出了变化量。然后你可以根据地球周长的比例尺计算新的纬度/经度。


谢谢,但这里的单位不匹配,你会得到rads+rads/km。我认为这里明智的做法是将距离从rads转换为km以取消单位。因此,currlat=oldlat+(d*sin(angle)*R)/40000,其中R是地球半径(以公里为单位),2*Pi通过将旅行距离从rads转换为km而被取消了,即d(km)=(d(rads)/2*pi)*R - Nathan
我认为问题出在 x 轴上。因此,你的 d * cos(angle) 应该改为 d * cos(angle)/(radius * cos(oldlat))。 - Sid Malani
修改了上面的答案,以考虑在更高纬度处缩小周长。在较小的距离上,这应该可以正常工作... - Sid Malani
嘿,这个方程 currlat = oldlat + d * sin (angle) * 2 * pi / (circumference_across_poles); 可以简化为 currlat = oldlat + (d * sin (angle)/ (地球半径));,因为 _周长=2Pi*R_,其中 _R=地球半径_。 - Nathan

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