想法很簡單,利用MapGuide繪圖的API─DigitizeLine來取得單線的兩點坐標,再手動加上一條往北方的垂線,接著計算方向角及方位角。
程式流程如下:
1. 利用DigitizeLine啟動MapGuide進行單線繪圖。
2. 取得單線兩點坐標後,計算垂線位置,並將坐標轉為WKT字串。
3. 將上步驟之WKT字串繪製臨時層於MapGuide Viewer之上。
4. 計算方向角與方位角,並顯示於頁面上。
怎麼繪圖可以參考量測那篇,以下貼出方向角與方位角的計算程式:
重點只有一句,由兩點坐標計算角度
double degree = (Math.Atan2(Y1 - Y2, X1 - X2)) / Math.PI * 180.0;
 double degree = (Math.Atan2(Y1 - Y2, X1 - X2)) / Math.PI * 180.0;
        string Direction = "";
        if (degree >= 0 && degree <= 90)
        {
            degree = 90 - degree;
            Direction = "N" + degree + "E";
        }
        else if (degree < 0 && degree >= -90)
        {
            degree = 90 + Math.Abs(degree);
            Direction = "S" + (180 - degree) + "E";
        }
        else if (degree < -90 && degree >= -180)
        {
            degree = 90 - degree;
            Direction = "S" + (degree - 180) + "W";
        }
        else if (degree > 90 && degree <= 180)
        {
            degree = 450 - degree;
            Direction = "N" + (360 - degree) + "W";
        }
degree為方位角
Direction為方向角
成果圖:
 
 
沒有留言:
張貼留言