劉愛龍,杜清運,陳 濤,張 東,姚霄飛
(1.武漢大學資源與環(huán)境科學學院,湖北 武漢 430079;2.地理信息工程國家重點實驗室,陜西 西安 710054;3.西安測繪研究所,陜西 西安 710054)
跨平臺嵌入式地圖可視化機制研究
劉愛龍1,2,3,杜清運1,陳 濤2,3,張 東2,3,姚霄飛2,3
(1.武漢大學資源與環(huán)境科學學院,湖北 武漢 430079;2.地理信息工程國家重點實驗室,陜西 西安 710054;3.西安測繪研究所,陜西 西安 710054)
針對適應多樣性嵌入式操作系統(tǒng)的地圖可視化,在分析了嵌入式環(huán)境下跨平臺技術的基礎上,基于中間件技術構建了跨平臺的嵌入式地圖可視化引擎EMD_EN體系結構,提出了引擎中涉及的面向?qū)ο蟮南鬟f機制、基于雙緩沖機制的圖形顯示與控制、嵌入式地圖符號庫等關鍵技術解決方案,并給出了基于EMD_EN的跨平臺應用軟件的開發(fā)方法。該跨平臺地圖可視化引擎在工程實踐中得到檢驗,應用表明該引擎能較好地解決跨平臺的數(shù)字地圖顯示問題。
嵌入式系統(tǒng);跨平臺;地圖可視化;中間件
隨著計算機技術、衛(wèi)星定位技術和移動互聯(lián)網(wǎng)的不斷發(fā)展,以位置服務為代表的嵌入式地理信息應用已經(jīng)越來越廣泛,這些應用大都以智能手機、PDA、平板電腦等各種嵌入式設備為載體,豐富的載體在為應用帶來便捷性的同時也為地理信息應用系統(tǒng)開發(fā)帶來了問題。不同嵌入式操作系統(tǒng)在系統(tǒng)架構、圖形繪制接口、窗口系統(tǒng)等圖形支撐能力上存在較大差異。這種異構性使得絕大多數(shù)嵌入式應用只能局限于某一特定的嵌入式操作系統(tǒng),若要應用于其他嵌入式操作系統(tǒng)平臺,需要進行移植。但不同的嵌入式操作系統(tǒng)的異構性給應用系統(tǒng)移植造成了巨大的工作量,有些甚至相當于需要重新開發(fā)??缙脚_技術是解決此類問題最為有效的途徑,而作為嵌入式地理信息應用的核心數(shù)字地圖可視化的平臺是首先需要解決的問題。
為解決地理信息應用軟件的跨平臺問題,許多學者都對其進行了深入研究[1-4]。文獻[5]將數(shù)據(jù)層從系統(tǒng)中剝離出來,獨立形成一個底層的基礎模塊,不包含任何頂層的實現(xiàn),以提高代碼的可移植性。文獻[6]提出了一種跨平臺的嵌入式GIS數(shù)據(jù)模型,該模型將與顯示無關的數(shù)據(jù)處理模塊獨立出來,并進一步劃分為上層用戶接口模型和底層數(shù)據(jù)引擎模型。文獻[7]提出了一種基于中間件的嵌入式GIS設計,并從硬件設計、軟件設計等方面進行了介紹。這些研究成果在一定程度上解決了嵌入式應用軟件在不同運行環(huán)境下的移植性,但其大多不完全基于最底層的軟硬件環(huán)境,對操作系統(tǒng)具有一定的依賴性,不能做到真正的“一次編寫,到處編譯”。本文基于底層的嵌入式軟硬件環(huán)境,設計和實現(xiàn)了跨平臺的數(shù)字地圖可視化引擎,解決了跨不同嵌入式平臺的數(shù)字地圖顯示問題,并將研究成果在工程實踐中進行了驗證。
1.跨平臺開發(fā)語言
(1)C++語言
C++是一種具有國際標準的面向?qū)ο蟪绦蛟O計語言[8],具有非常高的效率,且對各類平臺都具有良好的兼容性,基本上不用考慮開發(fā)應用平臺的限制,具有良好的可移植性。
(2)Java語言
Java是1995年5月由Sun Microsystems公司推出的一種面向?qū)ο蟮某绦蛟O計語言[9]。Java的跨平臺機理在于其開發(fā)出來的程序可運行于所有裝有Java虛擬機的操作系統(tǒng)。目前桌面幾乎所有的操作系統(tǒng)都支持Java虛擬機,這樣Java程序可以做到“一次編譯,到處運行”。但在嵌入式環(huán)境下,某些國產(chǎn)嵌入式系統(tǒng)還缺乏對Java虛擬機的支持,且Java為了追求穩(wěn)定性和跨平臺,其運行效率不如C++。
2.跨平臺組件技術
(1)COM組件
組件對象模型(component object model,COM),是一種說明如何建立可動態(tài)互變組件的規(guī)范,此規(guī)范提供了為保證能夠互操作客戶和組件之間應遵循的一些二進制和網(wǎng)絡標準[1]。通過這些標準可以在任意兩個組件之間進行通信而不用考慮其所處的操作環(huán)境是否相同,以及使用的開發(fā)語言是否一致。但是COM組件的跨平臺是指它在Win32下的跨語言平臺,在嵌入式環(huán)境下只適合于WinCE平臺。
(2)JavaBean
JavaBean是一種基于Java語言編寫的可重用組件[3]。實際上JavaBean是一種Java類,通過封裝屬性和方法成為具有某種功能或處理某個業(yè)務的對象。JavaBean不依賴于平臺,可以在任何安裝了Java運行環(huán)境的平臺上使用,但是JavaBean必須依賴Java語言開發(fā)。
3.嵌入式中間件技術
嵌入式中間件是位于嵌入式系統(tǒng)軟件與應用軟件之間的一種軟件,它在嵌入式操作系統(tǒng)所提供的基本功能與服務基礎上,為上層的應用系統(tǒng)提供運行開發(fā)環(huán)境,是嵌入式應用獨立于具體軟硬件平臺的核心軟件環(huán)境[4]。通過中間件,可以屏蔽各種異構軟硬件平臺差異,為上層應用程序提供統(tǒng)一的開發(fā)接口,從而實現(xiàn)軟件的跨平臺應用[4]。圖1給出了基于中間件的軟件開發(fā)模型。與桌面中間件相比,主要差異在于:①嵌入式中間件運行于資源有限的嵌入式設備上,運行速度和效率受嵌入式環(huán)境的限制;②嵌入式操作系統(tǒng)差異較大,對中間件提出了更高的要求。嵌入式中間件的特點體現(xiàn)在:①微化內(nèi)核,由于嵌入式設備資源限制,嵌入式中間件不能較大,以保證運行速度和效率;②多種嵌入式操作系統(tǒng)支持能力,盡可能做到“一次編寫,多處運行”;③多種應用的標準和協(xié)議支持能力。
圖1 基于中間件的軟件模型
本文基于嵌入式中間件技術,采用組件化圖形集成框架和模塊化方式,按照模塊高內(nèi)聚、模塊間低耦合的思路設計了跨平臺嵌入式地圖可視化引擎EMD_EN。EMD_EN位于嵌入式軟硬件平臺和地圖可視化應用程序之間,為地圖可視化應用程序的開發(fā)提供統(tǒng)一的應用編程接口,以屏蔽嵌入式運行環(huán)境的軟硬件差異。EMD_EN由嵌入式操作系統(tǒng)適配器、嵌入式圖形繪制接口、嵌入式窗口系統(tǒng)、嵌入式地圖可視化、嵌入式圖形集成框架5個模塊組成。其構成如圖2所示。
圖2 EMD_EN結構
1.嵌入式操作系統(tǒng)適配器
嵌入式操作系統(tǒng)適配器由一系列的接口函數(shù)或抽象的接口類組成,這些接口定義了應用所需要的各種操作系統(tǒng)服務[7]。嵌入式操作系統(tǒng)適配器也可以細分為兩層:上層為應用程序定義一致的應用編程接口,這一層對所有的操作系統(tǒng)來說都是相同的;下層與特定的操作系統(tǒng)相關,它是針對這些接口在特定操作系統(tǒng)之上的具體實現(xiàn)。
2.嵌入式窗口系統(tǒng)
嵌入式窗口系統(tǒng)是在嵌入式操作系統(tǒng)適配器基礎上,為上層應用程序提供創(chuàng)建窗口和各類控件的基本接口,并具有完備的消息傳遞和管理機制,以完成用戶交互及內(nèi)部消息處理。
3.嵌入式圖形處理接口
嵌入式圖形處理接口對操作系統(tǒng)適配器提供的基本圖形繪制接口進行擴展,實現(xiàn)了更為豐富的圖形繪制接口,用于完成基本的圖形圖像繪制。
4.嵌入地圖符號庫
嵌入地圖符號利用嵌入式圖形處理接口提供的基本功能,按照地圖可視化符號系統(tǒng)的要求,用于完成各種地圖符號和注記的顯示,以及地圖符號庫的管理組織。
5.嵌入式圖形集成框架
嵌入式圖形集成框架負責管理符合圖形集成框架規(guī)范的繪圖組件,協(xié)調(diào)各組件間的繪圖流程、功能處理、交互響應和消息傳遞,并對各組件圖形繪制、縮放/漫游/旋轉等顯示控制,以及坐標變換等進行統(tǒng)一控制。
1.面向?qū)ο蟮南鬟f與管理機制
消息傳遞和管理機制是圖形可視化的基礎,也是窗口可視化的主控流程。不同嵌入式操作系統(tǒng)下屏幕的響應與消息流動機制各不相同,通過中間件技術將該過程統(tǒng)一起來,屏蔽底層的實現(xiàn)細節(jié),從而實現(xiàn)顯示過程中消息的有效傳遞和管理。本文采用了以面向?qū)ο鬄榛A的消息驅(qū)動方案,以消息驅(qū)動機制為核心進行消息的傳遞和管理。系統(tǒng)接受外部鍵盤、鼠標、觸摸屏等信息,且窗口系統(tǒng)中各窗口之間的通信都通過消息機制進行管理。采用消息驅(qū)動方案是由于面向?qū)ο笤O計容易造成對象之間的關系數(shù)目日益膨脹,形成復雜的網(wǎng)狀結構,關系的復雜度也會導致類和對象間的耦合度增多,而消息驅(qū)動的設計方案可以很好地避免上述缺陷。
消息在操作系統(tǒng)適配層、窗口系統(tǒng)和上層應用之間傳遞,驅(qū)動著整個系統(tǒng)的正常運轉。圖3給出了消息之間的傳遞機制。
圖3 消息傳遞機制
2.基于雙緩沖機制的圖形圖像顯示與控制機制
對圖形核心服務的抽取是實現(xiàn)地圖可視化操作系統(tǒng)的關鍵,為了提高圖形的繪制效率,本文采用了基于雙緩沖機制的顯示策略。雙緩沖技術的基本思想是:不改變可見視頻緩存區(qū)起始地址,而是在內(nèi)存中開辟一塊與屏幕一樣大小的存儲區(qū)域作為緩沖區(qū)域,將下一幀要顯示的地圖數(shù)據(jù)繪制到這個緩沖區(qū)域上,在顯示的時候緩沖區(qū)中的數(shù)據(jù)直接復制到屏幕上。由于圖形繪制過程在后臺進行,可以有效地消除屏幕的閃爍和抖動。
雙緩沖機制的基本過程為:在圖形系統(tǒng)初始化時,創(chuàng)建一個虛擬的內(nèi)存設備,所有的圖形操作都作用在該內(nèi)存設備上,當數(shù)據(jù)調(diào)用完成后,產(chǎn)生屏幕更新事件,應用層通過嵌入式圖形集成框架調(diào)用嵌入式操作系統(tǒng)適配器,并最終調(diào)用特定操作系統(tǒng)提供的基礎繪圖函數(shù),完成圖形在虛擬內(nèi)存設備上的繪制,將該塊內(nèi)存拷貝于實際屏幕上。
3.嵌入式地圖符號繪制機制
嵌入式地圖可視化最主要的技術之一就是地圖符號庫技術。地理信息可視化中存在各種各樣的符號,無法用一段程序完成所有符號化顯示輸出。因此必須把這些符號進行抽象,抽出所有符號的共同特征,用抽象出的共同特征組成各種地圖符號。無論多么復雜的地圖符號都可以分解為點、線段、橢圓、多邊形等基本圖形,這些圖形可稱為圖元。將地圖符號解析為圖元后,在地圖符號描述和存儲時,只需通過圖元的類型、大小、顏色、方向等屬性信息進行描述和存儲即可。
此外,考慮到嵌入式設備自身嵌入式資源(CPU、存儲)有限,以及顯示設備的分辨率低等特點,設計符號時以高效率為主要目標,可對符號的質(zhì)量降低要求,以適應嵌入式環(huán)境的特點。為了證明地圖符號庫在不同嵌入式平臺上通用性,本文符號庫所需要的基本圖元的繪制采用跨平臺的嵌入式繪圖原語完成。符號庫由符號層、圖元層和基本圖形元素層構成,體系結構如圖4所示。
在嵌入式環(huán)境下繪制時,由于點狀符號繪制非常頻繁,因此點狀目標的繪制成為地圖顯示的瓶頸。本文設計了一種柵格化的點狀符號繪制方案,以提高繪制效率。在預處理時將點狀符號預先柵格化,作為地圖數(shù)據(jù)的一部分提供給各種應用,通常情況下點狀符號在符號庫中的描述包括組成它的各種圖元的描述,而在嵌入式環(huán)境下,點狀符號記錄的是該符號在柵格化符號中的位置,采用柵格化的方式顯示,顯示效率提高較為明顯。對于線狀地物的繪制,本文設計了一種光柵化顯示方法,首先根據(jù)線狀符號在符號庫中的描述信息和實際顯示比例信息,調(diào)用圖形繪制原語,對基本的現(xiàn)狀符號進行柵格化處理;圖形繪制原語提供的接口在系統(tǒng)中稱之為GGI (general graphic interface),GGI提供了填充模式的畫線功能,系統(tǒng)將以上柵格化處理的結果作為畫線的填充模式,由GGI繪制出線狀符號。
圖4 符號繪制機制
1.基于EMD_EN的應用開發(fā)流程
基于EMD_EN引擎進行地圖可視化軟件開發(fā)時,由于EMD_EN的跨平臺特性,可使用支持桌面Windows環(huán)境的EMD_EN構建一個模擬開發(fā)平臺,充分利用Windows環(huán)境下開發(fā)環(huán)境熟悉、調(diào)試方便的優(yōu)點進行開發(fā)。開發(fā)完畢后,只需要將代碼移植到目標平臺的集成開發(fā)環(huán)境中進行重新編譯,即可實現(xiàn)目標平臺的嵌入式地圖可視化應用,極大地提高嵌入式應用軟件的開發(fā)效率?;贓MD_EN引擎的嵌入式應用軟件開發(fā)流程如圖5所示。
2.試驗結果
基于本文的研究成果,筆者完成了基于 Vx-Works、WinCE、ReWorks和Android等多種嵌入式操作系統(tǒng)的地圖可視化應用系統(tǒng)的開發(fā)。圖6給出了幾種不同嵌入式平臺下的地圖可視化效果。其中,圖6(a)為基于VxWorks系統(tǒng)的地圖可視化效果;圖6(b)為基于 Andriod系統(tǒng)的地圖可視化效果;圖6(c)為基于 WinCE系統(tǒng)的地圖可視化效果;圖6(d)為基于ReWorks系統(tǒng)的地圖可視化效果。
圖5 基于EMD_EN的開發(fā)流程
圖6 數(shù)字地圖可視化中間件的顯示效果
在實踐過程中,本文對引擎在不同架構、開發(fā)環(huán)境和數(shù)據(jù)類型等條件下的顯示效率進行了測試,表1給出了引擎在4個嵌入式平臺的地圖顯示應用的試驗結果。從試驗結果可以看出,引擎能夠比較好地適應基于ARM、PowerPC、X86等不同系統(tǒng)架構的Android、VxWorks和國產(chǎn)ReWorks等嵌入式操作系統(tǒng)的跨平臺應用,可在Eclipse、WorkBench、EVC++和ReDe等不同集成開發(fā)環(huán)境中進行移植編譯;顯示的效率與CPU頻率、系統(tǒng)圖形支持能力和地物復雜程度密切相關,主要影響因素是每屏顯示的數(shù)據(jù)量和地物復雜程度,其中地物復雜程度對顯示時間影響較大,地物符號越復雜則符號化所需時間就相對較長??傮w上引擎在幾種嵌入式平臺上的漫游均較為順暢,顯示時間可滿足地圖可視化應用的要求。
表1 引擎在不同嵌入式平臺顯示實驗結果
實踐表明,本文提出的嵌入式數(shù)字地圖可視化中間件方法,能夠很好地屏蔽多操作系統(tǒng)間的差異,為上層跨平臺應用系統(tǒng)的開發(fā)提供了便捷的平臺,顯示效果和效率均滿足嵌入式應用系統(tǒng)對地圖顯示的要求,有效降低了地圖可視化應用軟件跨平臺開發(fā)的難度,較大提升了嵌入式應用系統(tǒng)的開發(fā)效率。
[1] TAPADIYA P.Com++Programming:A Practical Guide Using Visual C++and ATL[M].[S.l.]:Prentice Hall,2000.
[2] ROGERSON D.COM技術內(nèi)幕[M].北京:清華大學出版社,2000.
[3] 王煒.JavaBean組件程序設計[M].北京:清華大學出版社,2001.
[4] 何劍.嵌入式中間件技術研究綜述[J].大眾科技,2008(11):20-22.
[5] 宋棟,姜樹明,陳長英,等.跨平臺嵌入式GIS系統(tǒng)設計關鍵技術研究[J].山東科學,2009,22(3):45-49.
[6] 沈文裕,方鈺,蔣昌俊,等.跨平臺嵌入式GIS數(shù)據(jù)模型的研究與應用[J].計算機應用,2007,27(9):2298-2301.
[7] 岳春生,胡松.基于中間件的嵌入式GIS設計[J].信息工程大學學報,2004,5(2):150-153.
[8] LOGAN S.Cross-Platform Development in C++:Building Mac OS X、Linux、and Windows Applications[M]. [S.l.]:Pearson Education Incorporation,2007.
[9] Sun Microsystems Inc.The Java Virtual Machine Specification[EB/OL].2011-01-01.http:∥Java.sun.com/docs/ books/vmspec/2nd-edition/html/VMSpecTOC.doc.html.
Research on Cross-platform Map Display Mechanism Based on Embedded System
LIU Ailong,DU Qingyun,CHEN Tao,ZHANG Dong,YAO Xiaofei
P208
B
0494-0911(2014)12-0051-05
劉愛龍,杜清運,陳濤,等.跨平臺嵌入式地圖可視化機制研究[J].測繪通報,2014(12):51-55.
10.13474/j.cnki.11-2246.2014. 0396
2014-06-06
國家自然科學基金(41371427)
劉愛龍(1973—),男,陜西長安人,博士生,副研究員,主要研究方向為嵌入式地理信息系統(tǒng)與電子地圖導航。