導航軟體的開發多以eVC+WinCE或者C++ + Linux等開發環境為主,核心算法為Dijkstra最短路徑算法,需要解決路徑分析,行車規劃與引導等功能。Djkstra算法是經典的數學算法
,其地位不容動搖。
ESRI的關于geometric network的開發幫助時,就是一個導航地圖的模型,不僅可以指導導航地圖制作也可以指導開發。GDF的概念與ESRI的諸多概念如出一轍。
導航地圖規格與對應的導航引擎是不可分割的整體。通常,道路規劃會在中心線層加上相關的權值進行計算。如果是簡單的道路十字相交,這種思路用于解決規劃功能不成問題。
網上流行的Djkstra算法所提供的資料也是解決簡單的十字相交問題。對于複雜問題隻能借助于地圖資料。
ESRI的network由junction和edge構成,在Arcgis的toolbox中建立network後,會自動生成新圖層用于儲存相關的junction和edge等資訊。junction由線段的起點,終點生成,edge
則由起點和終點之間的弧段生成。同時将每個junction、edge的拓撲結構都儲存起來。隻在geodatabase裡面對一線層建立過network,在arcmap裡做最短路徑分析時速度是不言而
喻。另外,KIWI裡也将路口、交叉口等視為地物資訊,不僅可以将空間資料存放于某一圖層,而且還有詳細的屬性資訊,包括相關的拓撲結構。
軟體算法上的不足可以在地圖資料上彌補。但是導航地圖采用通用gis平台,以及軟體從底層開發等政策限制了功能的完善。國内的企業多采用通過gis平台進行地圖加工,有
mapinfo、arcgis等,如果軟體采用二次開發,可以直接使用到平台的最短路徑分析接口。可是,導航引擎多以從底層開發為主,所有的功能,包括最短路徑算法都得自己寫,而且
地圖規格也是依照引擎規定的标準而制定。引擎對于地圖的讀取性較差,隻能識别單一标準資料,引擎變則導航地圖也得變。