基于嵌入式Linux的MapInfo格式地圖顯示
掌握了文件之間的關(guān)系之后,可以用C或C++語(yǔ)言編程實(shí)現對.TAB或.MIF文件的讀取。為了存儲對應地理圖元的記錄的信息,本文構造了如下的數據結構,如圖2所示:
其中NTz結構指明該文件包含多少個(gè)字段,ONETz指明該字段包含多少個(gè)部分,kind指明改部分是點(diǎn)、線(xiàn)還是標注,ONEPART又給出了各個(gè)部分包含的坐標點(diǎn)的數量和位置信息。接下來(lái)在MiniGUI中主要對這個(gè)ONETz結構進(jìn)行處理。
圖 2 存儲地理圖元數據結構 |
4. 地圖的繪制
4.1 基本的點(diǎn)、線(xiàn)、多邊形的繪制
在把將上一步得到的坐標和坐標系的定義通過(guò)高斯投影變換[5],再將得到的坐標經(jīng)過(guò)變換到MiniGUI的顯示窗口,在本文中即平臺的LCD的某個(gè)區域上,按照MiniGUI中定義的POINT類(lèi)型,最后在MiniGUI中的MSG_PAINT消息中進(jìn)行地圖的繪制。
進(jìn)入MiniGUI的繪制窗口前,首先完成對MapInfo格式文件的解析,得到上述的數據結構。進(jìn)入窗口后,根據不同的地圖元數據中指示的類(lèi)型特點(diǎn),如點(diǎn)、線(xiàn)、面、文本,調用不同的MiniGUI的繪圖函數,如PollyLineTo、FillPolygon、 TextOut、Circle等函數在繪制區進(jìn)行圖元的繪制。增加坐標的變換和比例尺的分析后,可實(shí)現放大,縮小,漫游,測距功能。
4.2 功能擴展
在基本的繪制完成后,還可以根據之前得到的數據結構和MiniGUI庫函數的API擴展其他的功能。
選取圖元的功能可以通過(guò)截取鼠標鍵彈起的信息,得到當前的屏幕位置信息,如果將該位置與線(xiàn)元素的距離比較,如果小于一定的像素閾值,則認為選中,并顯示提示信息;如果是選取面,可以用是否在多邊形內部來(lái)判斷是否被選中。
另外,對一些特殊的標注點(diǎn)的圖形顯示,如醫院、學(xué)校,可以采用加載bmp格式的圖標在顯示區標注。
筆者的平臺要實(shí)時(shí)的通過(guò)串口接受GPS定位坐標和農田采集的信息,通過(guò)一個(gè)按鈕控制一個(gè)線(xiàn)程的開(kāi)關(guān),該線(xiàn)程讀取串口數據記錄到文件中。該線(xiàn)程和MiniGUI之間可采用信號量同步,最終根據屬性信息對農田區,即MiniGUI的API對多邊形區域進(jìn)行著(zhù)色,產(chǎn)生某種屬性的分布圖。最后還可以將所有農田數據整合,得到預測的產(chǎn)量等分布圖等等。
5. 結束語(yǔ)
本文提供了一種面向手持設備的工具嵌入式地圖顯示的具體方案,通過(guò)對MiniGUI的移植和對MapInfo格式文件的分析,達到最終地圖的顯示。采用北京市二環(huán)以?xún)鹊腗apInfo地圖進(jìn)行顯示(含1000個(gè)左右的各種圖元),將嵌入式平臺顯示結果(圖3)和PC機上的 MapInfo軟件顯示的結果(圖4)進(jìn)行對比,顯示效果良好,這種方案支持漫游、查詢(xún)、地圖匹配等功能,并可利用Linux和MiniGUI的API進(jìn)行功能擴展,在手持平臺上很好的滿(mǎn)足一般的地圖顯示的要求,為今后地圖匹配,農田數據采集打下了基礎。
本文由北京市教委基金委教育委員會(huì )發(fā)展計劃項目支持 項目名稱(chēng):CANOPEN現場(chǎng)總線(xiàn)與電動(dòng)汽車(chē)綜合監控系統關(guān)鍵技術(shù)研究項目編號:KZ20041000501
文章創(chuàng )新點(diǎn):本文提供了一種面向手持設備的工具嵌入式地圖顯示的具體方案--采用Linux和MiniGUI開(kāi)發(fā),在保證系統穩定性的同時(shí),減小系統大小,保持穩定性,最終形成一個(gè)低成本的但能支持主流MapInfo格式地圖文件的地圖顯示平臺,平臺在小型地圖中應用良好,平臺用途廣泛,可擴展功能,滿(mǎn)足一些對地圖基本操作的應用,為農田信息采集或其它進(jìn)一步功能的實(shí)現打下了基礎。
參考文獻:
[1] 三味工作室 MapInfo6.0 應用開(kāi)發(fā)指南[M] 北京人民郵電出版社 2001年
[2] 劉瑜,張晶等 地理信息系統——原理、方法和應用[M] 北京 科學(xué)出版社 2003
[3] 趙森 地理坐標與直角坐標相互轉換的算法[J] 火力與指揮控制 2001年12月
[4] 胡伍生,高成發(fā) GPS測量原理及其應用[M] 北京 人民交通出版社 2002年
[5] 鄧玉嬌 高斯投影與經(jīng)緯度投影VC++ 編程轉換——以MIF 文件中投影轉換為例[J]中國地質(zhì)大學(xué)計算機應用研究 2003年
[6] 陳諷,毛洋林,潘志浩 基于嵌入式Linux的圖形界面顯示系統的設計[J] 微計算機信息 2004 20卷 01期 76頁(yè)
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)linux相關(guān)文章:linux教程
評論