<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于嵌入式Linux的MapInfo格式地圖顯示

基于嵌入式Linux的MapInfo格式地圖顯示

作者: 時(shí)間:2012-05-21 來(lái)源:網(wǎng)絡(luò ) 收藏

掌握了文件之間的關(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教程



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 嵌入式 地圖顯示 電子地圖

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>