李 艷,胡慶武,龔書林
(1.長安大學信息工程學院,西安 710064;2.武漢大學遙感信息工程學院,武漢 430079;3.武漢立得空間信息技術有限公司,武漢 430074)
應急指揮、多兵種聯合作戰或演習要求基于地圖一體化共享態勢。標圖必須具有易讀性、可縮放性以及與平臺無關性,能在指揮中心、工作站和現場終端上快速傳遞、無縫交換和共享[1-2]。通常態勢圖標圖方法有3種:一是使用位圖文件,但數據量大,支持縮放和旋轉易變形失真;二是建立標圖符號模型,每一個標圖符號由專門符號算法庫實現,不利于標圖人員擴展標圖符號;三是使用SVG(Scalable Vector Graphic),以適應以XML標準的網絡傳輸共享,符號擴展容易,在很多標圖系統中得到使用[3-7]。隨著網絡化地圖態勢標圖和信息分發系統的不斷擴展,各種嵌入式終端引入帶來了終端操作系統的多樣性,如WinCE、Windows Mobile、Palm OS、Symbian、Android、iPhone 等,給地圖標圖技術提出了新的挑戰。地圖標圖需要解決在各種桌面系統和移動終端下跨平臺傳輸、顯示和交互的問題,開源Qt以其強大的功能、良好的可移植性成為一種被廣泛使用的圖形圖像開發平臺[8-10]。本文提出了基于開源Qt和SVG的跨平臺地圖標圖方法。結合SVG和Qt特點,提出了基于Qt的SVG結構化標圖符號描述模型,設計了基于開源Qt的跨平臺SVG標圖符號體系,進一步提出了動態標圖方法,采用同一個標圖內核編譯了不同操作系統下的標圖原型,解決了不同操作系統下地圖標圖應用,顯示效率和效果均能滿足智能應用要求。
標圖要解決兩方面問題:一是跨部門快速網絡傳輸和交換;二是跨操作系統共享、表達和使用。基于結構化XML的SVG是一種可縮放矢量圖形標準,其擴展性強,易于交換,可解決標圖在不同網絡環境中快速傳輸及在不同應用系統中交換共享問題[11]。對于不同終端中標圖符號的共享與表達,一般可設計不同操作系統下的支持類庫,其結果是標圖符號開發、維護和使用不便。開源Qt是一個跨平臺的C++圖形用戶界面庫,基于Qt構建的應用程序可部署在多個桌面和嵌入式設備上,而無需重寫源代碼;同時,Qt是一個開源的應用程序框架,將Qt編譯框架和SVG標準相結合[11],可以解決地圖標圖符號網絡化、跨平臺傳輸和共享問題,這也是本文提出基于Qt和SVG相結合解決跨平臺標圖技術途徑。Qt支持XML跨平臺解析,在Qt 4.1版本后通過一個 Qt SVG模塊支持 SVG 1.1、SVG 1.2的解析,通過二維圖形模塊繪制,可實現對SVG支持,其實現邏輯如圖1所示。如圖1所示,Qt通過對其XML擴展模塊Qt SVG來支持SVG解析,實現對SVG標圖符號支持,然后利用Qt跨平臺繪圖模塊完成對SVG表征符號的繪制。

圖1 基于Qt的SVG支持實現邏輯Fig.1 Qt extension principle to support SVG
綜合SVG矢量圖形數據格式優點和Qt跨平臺編譯能力,可利用QtSVG模塊設計地圖標圖符號體系,包括基于SVG的標圖符號數據組織存儲和基于Qt的標圖符號操作。
采用SVG 1.2格式存儲每個標圖符號,每個SVG文件代表一個符號,常規的標圖符號采用標準SVG格式,非常規標圖符號采用擴展SVG格式存儲,SVG文件按標圖編碼命名。SVG標圖符號的數據模型如圖2所示。

圖2 SVG標圖符號數據模型Fig.2 Data model of SVG based on map plotting symbol
每一個標圖符號可按照圖2所示的SVG物理模型定義其標準狀態,包括符號尺寸、可見性、填充和符號中圖元對象。圖3給出了基于SVG格式定義的一組典型的標圖符號(海軍(點)、進攻方向(線)和配置區域(面))顯示效果。

圖3 不同類型的標圖符號Fig.3 Different types of map plotting symbol
標圖文檔同樣按照XML格式自定義組織,為了提高解析效率,每一個標圖文檔中包含的標圖符號通過編碼區分,一個標圖文檔可以按照如下示例格式定義。

其中,Items結點存儲當前文檔包含所有標圖對象列表,Item結點存儲每個標圖符號對象,其屬性包括code(標圖符號編碼)、x&y(標注坐標)、scale(符號縮放參數)、rotation(符號旋轉角度)。每一個Item對應一個CPlottingPointItem或者CPlottingLineItem實體對象。
標圖符號制作可在支持SVG文檔編輯的二維矢量制圖軟件中完成,通常可采用AutoCAD、SVGDeveloper等軟件工具。
Qt SVG模塊可實現標圖符號的加載、顯示和編輯操作,其中標圖符號編輯功能包括標圖符號的增、刪、改、縮放、旋轉等。實際上,Qt平臺下地圖標圖符號直接繼承GDI+繪制機制,利用Qt對GDI+的跨平臺編譯能力實現在此框架上的標圖操作。一個基于Qt的標圖符號組件包含兩層結構:一是數據交互層,實現標圖符號存取;二是用戶交互層,提供用戶編輯交互接口,包括鼠標和鍵盤操作,并將用戶編輯結果保存,其對象體系如圖4所示。

圖4 基于Qt的標圖操作對象體系Fig.4 Object architecture of map plotting operation based on Qt
圖4中,CPlottingDocument對象實現標圖文檔管理,CSvgItem對象完成標圖SVG文件及XML文檔解析及繪制,CPlottingItem對象繼承于Qt的QGraphicsSvgItem,實現標圖編輯。
動態標圖對于豐富標圖形式、提高標圖效果和擴展標圖應用非常有效。采用SVG組織的標圖符號可利用Qt的圖形顯示框架實現在不同平臺中的標圖動態推演,其基本原理是利用Qt提供的QGraphicsItem-Animationhes對象與SVG標圖符號關聯,該對象具有改變位置、旋轉、尺寸縮放和裁剪等方法,允許以時間線方式讓動畫在視圖上以一個穩定的速度操作。本文提出可采用Qt中時間觸發管理對象QTimeLine來控制動畫時間參數。為了實現以上標圖動畫過程,本文基于開源Qt提供的圖形顯示框架在開源Qt的基礎上擴展一個CSvgAnimation對象,該對象繼承于QgraphicsItemAnimationhes對象,但根據與時間控制對象的結合重寫相應接口,具備了特定動畫幀管理方實現標圖符號的動畫播放,達到動態標圖目的。如圖5所示為線狀標圖動態推演流程圖。

圖5 標圖符號動態推演流程圖Fig.5 Dynamic deduction flow chart of map plotting
為驗證基于開源Qt的跨平臺標圖技術合理性,以本文設計的標圖符號模型在SVGDeveloper軟件中設計了238種標圖符號。以開源Qt 4.1.5版本源代碼為基礎,以本文提出的標圖技術和符號體系分別編譯了Qt for WindowsXP和 Qt for Windows Mobile 5.0兩套執行程序。如圖6所示為兩套軟件導入同樣標圖文檔和地圖數據運行效果。

圖6 不同平臺下的標圖效果Fig.6 Map plotting result of different operation systems
由圖6可見,本文提出的標圖符號技術能夠適應不同的操作系統平臺,并且與標圖系統顯示界面的配置無關,充分體現了SVG共享交換特點和開源Qt的跨平臺編譯能力,具有較好的通用性。在這種體系下,地圖標圖可以在不同的桌面系統和移動終端間進行傳輸、顯示和交互,無需單獨的符號庫支持,只需通過標圖編碼即可實現標圖意圖的共享,降低了在不同系統間共享信息的安全性和對通信網絡的要求。
圖7給出了基于本文動態標圖技術實現的標圖推演中3個關鍵幀效果。

圖7 動態標圖推演效果Fig.7 Deduction result of dynamic map plotting
由圖7可見,本文設計的動態標圖技術充分利用了Qt的二維動畫圖形框架和Qt對時間的控制管理,SVG標圖能夠按照設計的推演路徑平滑運動,并且可以利用SVG文件中初始旋轉矩陣與路徑矢量進行矩陣變換,實現了在推演過程中不同狀態參數的設置和顯示。
SVG以其不斷完善的標準使得標圖符號的表達規范具有結構性、完備性等特點,為標圖符號的網絡共享和互操作提供一個基礎解決方案。開源Qt為標圖系統的跨平臺編譯應用提供了支持環境,本文將開源Qt和SVG相結合,提出了一種面向多形式網絡環境下標圖技術,該方法通過跨平臺SVG標圖技術實現地圖標圖在不同桌面操作系統和移動終端間的傳輸、顯示進而交互,只需通過標圖編碼即可實現標圖意圖的共享,對于利用標圖進行指揮與響應信息的快速分發、共享和應用提供了技術手段,有利于多終端網絡標圖系統標圖操作、擴展和軟件系統的維護,可有效地提高標圖信息的安全性,降低標圖意圖傳遞的網絡要求,對于提高標圖能力和擴展標圖應用具有較高的實用價值。
[1]胥少卿,路建偉,錢葉魁,等.基于SVG的戰術標圖系統設計與研究[J].電光與控制,2006,13(2):101-104.
[2]巨亞榮,劉小兵.SVG技術在軍事標圖中的應用研究[J].重慶科技學院學報:自然科學版,2008,10(3):118-120.
[3]JIANG Lili,QI Qingwen ,ZHANG An.The thematic mapping system on internet[C]//Proceeding of 18th International Conference on Geoinformatics,Beijing,2010:1-4.
[4]趙恩來,郝文寧,趙水寧,等.改進的基于密度方法的態勢聚類顯示算法[J].計算機工程,2010,36(18):35-37.
[5]尹章才,李霖,朱海紅,等.基于SVG的地圖符號描述模型研究[J].武漢大學學報:信息科學版,2004,29(6):544-547.
[6]王錚,李霖.基于SVG的面狀地圖符號設計與實現[J].測繪科學,2007,32(3):169-170.
[7]周文生.基于SVG的WebGIS研究[J].中國圖像圖形學報,2002,7(7):693-698.
[8]趙毅,游有鵬.基于Qt/Embedded的嵌入式數控系統人機界面設計與開發[J].工業控制計算機,2008,21(4):68-71.
[9]宋榮.基于Qt/Embedded的嵌入式系統GUI開發[J].機電工程,2009,26(4):90-93.
[10]DAL HEIMER M K,HANSEN S.Embedded development with Qt/embedded [J].Dr.Dobbps Journal,2002,27(3):48-53.
[11]DELALANDRE M,HéROUX P,ADAM S ,et al.A statistical and structural approach for symbol recognition using XML modeling[J].Lecture Notes in Computer Science,2002,2396:201-238.