什么是初始轴承和最终轴承

What is initial bearing and final bearing

我正在尝试计算 this link 中给出的两个 lat/lon 点之间的方位。我看到我们最初使用以下等式得到的方位是初始方位。

    public static double GetBearing(double latitude1, double longitude1, double latitude2, double longitude2)
        {
            var lat1 = ToRadians(latitude1);
            var lat2 = ToRadians(latitude2);
            var longdiff = ToRadians(longitude1 - longitude2);
            var X = Math.Cos(lat2) * Math.Sin(longdiff);
            var Y = Math.Cos(lat1) * Math.Sin(lat2) - Math.Sin(lat1) * Math.Cos(lat2) * Math.Cos(longdiff);
            var bearing =ToDegrees(Math.Atan2(X, Y));
            return (bearing+360)%360;
        }

假设

For final bearing, simply take the initial bearing from the end point to the start point and reverse it (using θ = (θ+180) % 360).

我对初始轴承和最终轴承之间的区别感到困惑。 这个初始方位和最终方位是什么,我们应该将哪个方位作为两点之间方位的最终答案。

方位角是沿最短路径到达目的地的方向与向北方向之间的角度。我们有初始和最终一个的原因是我们生活在球体上,所以最短路径是测地线。它是地球上的一条直线,如果你在平面地图上画它 - 它会是一条曲线。

有两种思考方式。在平面地图上思考:当您从 A 行进到 B 时,这条曲线会稍微改变方向,因此这条线与北之间的角度会发生变化,即方位发生变化。

或者你可以考虑球体,然后考虑三角形A - B - 北极。方位角是 AB 和适当子午线之间的角度。初始方位是AB与子午线交点A的夹角,最后一个是AB与子午线交点B的夹角,两者不同

只有当 A 和 B 之间的距离很近时,单一的“最终答案”方位才有意义。那么地球的曲率关系不大,初始方位和最终方位非常接近,所以根据需要的精度可以谈单方位。

仅供参考:轴承和许多相关计算在 R 包中实现 geosphere bearing 函数 returns 初始方位,但您可以反转坐标以获得最终方位。

library(geosphere)
bearing(cbind(0,0),cbind(20,20))
#[1] 43.4035
finalb <- bearing(cbind(20,20),cbind(0,0)) 
(finalb + 180) %% 360
#[1] 46.9656

(这些结果应该比你参考的算法得到的结果更精确)