• 沒有找到結果。

Routing Algorithm

由於地理資訊系統(GIS)能夠有效的掌握規劃及管理空間之資訊,針對室內 環境所繪成室內平面圖,透過圖形與相關位置連結各自的屬性資料會有不同的分 析資訊,而其中最為一般民眾廣泛使用的即是路線規劃,也就是導航(Navigation),

依照所給予之起始點與目的地進行評估與計算,列出一條路線在地圖中讓使用者 做參考。

在一張地圖中,當有了起始點與目的地時,路線的規劃即是透過演算法運用,

除了能夠得到最短路徑之外,還牽扯著各式各樣的使用者需求或環境因素而有的 最佳路徑,如:時間、速度限制等,使得最佳路徑並非距離最短。本系統所運用 的路徑規劃演算法為Dijkstra’s Algorithm[13],是由荷蘭計算機科學家艾茲赫爾.

戴克斯特拉(Edsger Wybe Dijkstra)發明所發明,用來解決向量圖中單個起始點到 其他頂點的最短路徑問題,也就是說,在一張地圖中頂點代表城市,而權重表示開 車行經的距離,則演算法可以用來找到兩個程式之間的最短路徑。

圖 3. 9Dijkstra’s Algorithm 之虛擬碼

本系統之室內地圖經由章節 3.3 中敘述繪製而成後,圖上的每個點(pixel)皆 包含 X 軸及 Y 軸之座標資訊,以數學直角坐標系中之第一象限為規則,舉例來 說:圖中左下角之座標為(0,0)。除此之外,為了符合室內環境會有房間、牆壁等 阻隔物而導致人無法穿越行走,一張圖中的每個點分為兩種類型,一種是可以行 走,另外一種則是無法行走,即設置為 Way 的每個房間或區域上的點。

其中,每個 Way 由每個 Node 所圍成,所圍起的中心點視為頂點,每個可以 行走類型的點皆可為起始點,當起始點與頂點選定後,透過演算法的計算形成一 條路線,即為最短路徑,如圖 3. 10 左圖所示。

圖 3. 10 左圖為原路徑規劃,右圖為新增特定路徑後而改變路徑規劃

本研究之路徑規劃套用 Ericsson Lab 提供之 API,給予起始與目的地之地圖 編號,程式呼叫 RoutingService 操作路徑規劃演算法,程式如圖 3. 11,透過 GetRoute(from,From_Map_ID,to,To_Map_ID)此一功能類別,將單一地圖之路徑規 劃演化為跨場域之路徑規劃,是本研究主要重點之一。

圖 3. 11 路徑規劃主要程式碼

另外,藉由 Map Studio 可自行創造(Create)特定路線,如圖 3. 12,並在 Tag 中添加一個為名稱的鍵值,例如:name=" Go to XML lab",則系統在路徑規劃時,

必定會改變原始演算法所計算出的最短路徑,而使路徑經過所設定的特定路線而 至目的地,圖 3. 10 右圖。

圖 3. 12 新增特定路徑 RoutingService routingService =

DefaultRoutingService.getRoutingService(getApplicationContext());

Point from = location.getPoint();

Point to = focusedMapItem.getCenter();

try {

Route r = routingService.getRoute(from, FROM_MAP_ID,to, TO_MAP_ID);

return r;

}

catch (final IllegalArgumentException e) { handler.post(new Runnable() {

public void run() {

showMessage(e.getMessage());

} });

return null;

}

相關文件