2011年5月26日 星期四

MapGuide_角度量測(方位角與方向角)

一般在系統中我們都會提供距離量測的功能,但這次專案中有委員提出應該要有方向角與方位角的量測功能。

想法很簡單,利用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為方向角

成果圖:

沒有留言:

張貼留言