1. 程式人生 > >已知兩個經緯度點,求兩個點的角度.

已知兩個經緯度點,求兩個點的角度.

目前專案上有一個需求.需要從兩個點和到線路的走向. 這個主要應用在地圖和GIS方面

在網上搜索 了一大把也沒有正確的.

用此演算法標註的方位角,即方向,和角度

結果圖2

程式碼如下:

 public double GetAngle(MapPoint pntFirst, MapPoint pntNext)
        {
            double dRotateAngle = Math.Atan2(Math.Abs(pntFirst.X - pntNext.X), Math.Abs(pntFirst.Y - pntNext.Y));
            if (pntNext.X >= pntFirst.X)
            {

                if (pntNext.Y >= pntFirst.Y)
                {
                                    }
                else
                {
                    dRotateAngle = Math.PI - dRotateAngle;
                }
            }
            else            {

                if (pntNext.Y >= pntFirst.Y)
                {
                    dRotateAngle = 2 * Math.PI - dRotateAngle;
                }
                else                {
                    dRotateAngle = Math.PI + dRotateAngle;
                }
            }
            dRotateAngle = dRotateAngle * 180 / Math.PI;
            return dRotateAngle;
        }