想法很簡單,利用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為方向角
成果圖:
沒有留言:
張貼留言