嵌入式車(chē)載導航電子地圖的設計和實(shí)現
1.3.1 電子地圖的文件格式與數據組織
在電子地圖地理信息系統中,實(shí)行屬性數據與空間數據的分開(kāi)儲存。其中,空間數據以電子地圖的自身格式在文件中進(jìn)行保存,而屬性則以數據鏈形式在一份表中實(shí)現儲存。且兩者利用一定索引機制便可有效地關(guān)聯(lián)。電子地圖以土層為依據進(jìn)行地理管理。每個(gè)圖層均由屬性數據表結構文件、屬性數據文件、交叉索引文件、空間數據文件多個(gè)基本文件構成??臻g數據包括空間對象的顏色信息、坐標信息、幾何類(lèi)型等,當用戶(hù)對索引字段加以規定后,索引文件便會(huì )在地理信息系統中自動(dòng)生成。
電子地圖通過(guò)“Table”的形式來(lái)建立屬性數據與空間實(shí)體間的對應關(guān)系,并以此為基礎建立起電子地圖的查詢(xún)檢索系統。通過(guò)定義空間數據結構,對空間實(shí)體類(lèi)型進(jìn)行確定。數據庫關(guān)系模型選用一組邏輯嚴密、結構簡(jiǎn)單的二維平面表為操作對象,Table中嚴禁重復存儲,從而保障空間內唯一的實(shí)體記錄。在描述空間實(shí)體類(lèi)型的多種屬性時(shí),將其進(jìn)行多個(gè)Table的分解,從而使其形成多重的鏈表關(guān)系,多個(gè)Table屬性信息同空間實(shí)體發(fā)生聯(lián)系,進(jìn)而構成屬性數據同空間實(shí)體間多重對應的關(guān)系。
1.3.2 電子地圖的數據索引機制
電子地圖數據索引機制的索引設計過(guò)程如下:當從屬性信息中進(jìn)行空間信息的查詢(xún)時(shí),電子地圖首先應在屬性文件中找到數據庫中的相應數據。此時(shí)就可在索引文件中選取相應指針,其所指的地圖對象即為同數據庫記錄空間相對應的對象。從而能夠在空間信息中進(jìn)行屬性信息的查詢(xún)。(如對于某一空間對象已在地圖上查出,電子地圖便可在空間文件中讀出同空間信息相對應的記錄號,以此為依據,便可實(shí)現該地圖對象底性信息在屬性數據文件中的查詢(xún)。)而MapInfo地理信息數據格式的應用,則可較好地落實(shí)上述索引思路,且能夠按照土層間的疊加關(guān)系進(jìn)行存放與顯示。
1.3.3 電子地圖的圖層與圖元
在MapX中,對于MapInfo表的地圖標示均是以圖層的形式進(jìn)行顯示的,這些圖層中除有地物元素位置外,默認為透明。疊加圖層后,便可看到地圖的各種方面。圖元則包括區域對象、點(diǎn)對象、線(xiàn)對象。在MapX中,通過(guò)對Feature對象的利用便可實(shí)現對上述地圖對象的房問(wèn)題,可完成創(chuàng )建、自定義、編輯、顯示等操作。
1.3.4 應用Geoset,實(shí)現地圖管理
對于滿(mǎn)意的地圖,便可進(jìn)行保存,在驅動(dòng)器中將其寫(xiě)入Geoset文件當中。將Geoset文件打開(kāi),全部地圖的設置和土層均為保存時(shí)狀態(tài)。此時(shí),可應用MapX自帶工具Geoset Manager可對.gst文件進(jìn)行管理,來(lái)對管理縮放級別、圖層、表和其他屬性進(jìn)行修改。
2 電子地圖模塊的二次開(kāi)發(fā)
基于A(yíng)ctive技術(shù)的MapX控件為開(kāi)發(fā)人員的二次開(kāi)發(fā)提供了方便。在VC++等可視化開(kāi)發(fā)環(huán)境中,將MapX控件嵌入到窗體中即可進(jìn)行編程、設置屬性等操作,完成空間數據查詢(xún),地理空間數據的可視化,編碼等地圖信息系統功能。
2.1 安裝MapX mobile
在MapX安裝完畢后,添加MapX空間便可對地圖進(jìn)行顯示。具體設計步驟為:建立標準exe于編程環(huán)境當中,從“工程”菜單中選取“部件”,隨即將“部分對話(huà)框打開(kāi)”,于部件列表內,將“MapX mobile V5.02”找到,完成復選后,點(diǎn)擊“確定”。隨后工具欄中便會(huì )將Map空間圖標顯示出來(lái),此時(shí),單擊“控件”,便完成了工程中Map空間的引入。
2.2 地圖的基本操作
車(chē)載嵌入式車(chē)載導航中,主要通過(guò)DataSet對象和Layer對象操作來(lái)完成MapX地圖操作。對同此類(lèi)型對象的應用,仍可將地圖土層添加到應用程序當中。而屬性數據操作的完成,則可通過(guò)建立數據綁定、數據源設置的方式實(shí)現。而電子地圖的加載主要通過(guò)以下兩種設計形式實(shí)現。一是在MapX中加載一個(gè)Geoset對象,加載完成后,MapX將各個(gè)圖層自動(dòng)打開(kāi),在地圖窗口中進(jìn)行疊加,并對圖層屬性信息進(jìn)行設置。二是在MapX中加載一個(gè)圖層,該種方法是對一個(gè)MapInfo文件的直接加載,待圖層打開(kāi)后,其將在地圖窗口內完成自動(dòng)的疊加。
2.3 地圖的刷新
MapX首先繪制動(dòng)態(tài)圖層以外的全部圖層,并在某一地方進(jìn)行存儲,當其他圖層未變而動(dòng)態(tài)圖層發(fā)生變化時(shí),便可通過(guò)已存儲的動(dòng)態(tài)圖層和數據來(lái)實(shí)施覆蓋處理,進(jìn)而現實(shí)處理結果。地圖的刷新過(guò)程設計為依次全部刷新的形式,從最小外界矩形窗口區域開(kāi)始,來(lái)完成整合刷新過(guò)程。該方法的優(yōu)點(diǎn)是相比于整個(gè)地圖窗口的刷新形式要更加快速。同時(shí),因受地圖刷新速度的影響,MapX難以同時(shí)完成多目標的刷新,這時(shí)iju可進(jìn)行統一刷新鬧鐘的設置,從而使每個(gè)一定時(shí)間間隔,目標地圖便會(huì )自動(dòng)刷新一次。
2.4 地圖調用
首先,在工程中加入MaoX.cpp和MapX.h文件。在菜單“Project”中選擇“Files”命令,隨后將對話(huà)框打開(kāi)選取MaoX.cpp和MapX.h文件加入到MapX系統當中。將MapX對象頭文件加入到視圖(包含MapX)中。針對MapX進(jìn)行一個(gè)資源ID的創(chuàng )建,通過(guò)“新建一名稱(chēng)輸入”的操作來(lái)完成。進(jìn)行消息映射函數SIZE和CREATE的創(chuàng )建,在“視圖/類(lèi)導向”中選擇視圖類(lèi),并將兩個(gè)信息在消息框中完成分別選擇,之后通過(guò)函數的條件,來(lái)對代碼進(jìn)行編輯,導入地圖。通過(guò)類(lèi)向導,來(lái)進(jìn)行SETFOCUS映射函數的創(chuàng )建,使得窗口在獲得焦點(diǎn)的同時(shí),地圖空間也可獲取焦點(diǎn)。
2.5 圖層的控制
GIS軟件中,通常需對圖層屬性進(jìn)行設置,而通過(guò)對顯示圖層控制方法的應用便可實(shí)現此項功能,借助于MapX中可選擇、可顯示、自動(dòng)標注、可編輯的四種屬性設置來(lái)實(shí)現地理信息維護與查詢(xún)功能的發(fā)揮。
2.6 鷹眼圖的實(shí)現
鷹眼圖是基于嵌入式車(chē)載導航電子地圖的一項基本功能,其實(shí)現思路為:進(jìn)行一個(gè)無(wú)模式對話(huà)框的創(chuàng )建,確立HAWK為ID。建立MapX空間來(lái)對鷹眼圖進(jìn)行控制,并創(chuàng )建一新圖層于鷹眼圖中,以此添加矩形框,對主視圖中地圖作出表示,且該矩形框的位置和大小不隨主視圖邊界變化而發(fā)生變化。添加一個(gè)按鈕于對話(huà)框,依據按鈕下的相應函數來(lái)操作鷹眼圖MapX空間,從而使其對Map空間的操作得以實(shí)現,且當按下對話(huà)框按鈕后,便可對CLICK信息進(jìn)行發(fā)送。依靠此設計程度的鷹眼圖可在EVC模擬器上運行,并具備了車(chē)載導航電子地圖的基本功能。
3 結束語(yǔ)
嵌入式車(chē)載導航在車(chē)載導航領(lǐng)域中有廣泛的應用,隨著(zhù)社會(huì )信息化的發(fā)展,嵌入式車(chē)載導航電子地圖的功能必將進(jìn)一步完善。因此,嵌入式車(chē)載導航的應用前景將十分廣闊。本文引用地址:http://dyxdggzs.com/article/148024.htm linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論