焦東來,陳雪飛,蔣 賀,張索非
(1.南京郵電大學地理與生物信息學院,江蘇南京210046;2.南京郵電大學通信與信息工程學院,江蘇南京210003; 3.南京郵電大學物聯網學院,江蘇南京210003)
基于OSMDroid地圖引擎的傳感器數據實時可視化方法研究
焦東來1,陳雪飛2,蔣 賀2,張索非3
(1.南京郵電大學地理與生物信息學院,江蘇南京210046;2.南京郵電大學通信與信息工程學院,江蘇南京210003; 3.南京郵電大學物聯網學院,江蘇南京210003)
隨著物聯網和移動實時地理信息系統的發展,基于地圖的傳感器實時監控系統將成為管理物聯設備的新途徑,而傳感器數據的實時可視化是提高監管效率的主要方法。該文提出一種以開源OSMDroid(Open Street Map)為地圖平臺,基于自定義矢量地圖符號實時展示傳感器數據的方法,并在Android移動終端上實施驗證。該方法利用可縮放矢量圖形(Scalable Vector Graphic,SVG)將傳感器設備抽象為自定義矢量地圖符號,根據傳感器數據類型設計地圖符號圖元與傳感器數據的映射規則,據此在地圖上實時刷新傳感器設備地圖符號。地圖符號的視覺變量隨傳感器數據實時改變,從而實現傳感器數據的實時可視化顯示。實驗結果表明,通過地圖符號實時可視化傳感器數據可有效提高傳感器設備管理效率,及時獲取設備數據,為傳感器設備管理提供一種直接有效的途徑。
開源地圖OSMDroid;SVG;地圖符號;傳感器;實時可視化
地理信息系統(GIS)集計算機、測繪、遙感、地理學、空間科學、信息科學和管理科學于一身,對空間信息進行分析和處理,將地圖的視覺化效果和地理分析功能與數據庫操作集成在一起[1]。隨著GIS的社會化,以地圖為載體的應用尤為廣泛,基于GIS的設備設施管理已成為GIS應用的重要方面[2]。物聯網的快速發展,對傳感器設備高效便捷的管理需求,使GIS成為管理傳感器設備的一種直觀有效的途徑。
隨著移動終端設備的普及,移動GIS成為傳感器設備管理的新手段。GIS的空間信息分析處理能力與移動終端設備的靈活便利性相結合,使傳感器設備的管理更方便。較之于普通設備,傳感器設備需實時獲取數據并展示,因此,如何實時展示傳感器的數據成為基于移動GIS的傳感器管理應用方面的重點。雖然基于移動GIS在設備管理方面已有較成熟的理論和方法,但是針對傳感器實時數據展示方面,并沒有相應的方法。國內外GIS廠商提出的移動GIS應用方案提供著各種移動GIS商業服務,如ESRI公司設計開發的ArcPad提供地圖導航、查詢要素、地圖測量等功能,但缺乏傳感器設備監控管理的應用開發。Wilkie等[3]利用GIS數據設計交通道路仿真3D模型顯示實時路況,但在交通信息實時數據展示方面存在不足。國內相關的應用也局限于傳感器位置信息的顯示,實時數據的展示則依靠其他途徑,如李神送等[4]實現在Android手機地圖上顯示傳感器的地理位置,而傳感器的實時數據則通過列表的形式展現。劉茂華等[5]實現在移動Android平臺實時查詢公交情況,但并未實現公交車輛實時狀態的可視化(如車況、耗油狀況等),僅以地圖的形式展示公交車輛的實時位置。
為了解決數據源實時性和界面顯示實時性的問題,國內外學者提出了實時GIS,其不僅能反映事物的最新狀態,也可以反映事物隨時間變化的不同狀態[6]。利用實時GIS的突出特征,可動態獲取實時數據并及時處理,做到狀態消息的實時推送和地圖顯示界面的實時更新。實時GIS可結合操作系統和實時數據獲取的形式實現,本文即是在Android操作系統下采用該方式實現傳感器數據的實時獲取[7]。
OSMDroid地圖引擎是移動GIS較常用的一個開發插件,其提供了柵格和矢量兩種地圖的可視化方式,代表了一般移動GIS軟件,本文以OSMDroid地圖引擎為例,探討了移動GIS下傳感器數據實時可視化的方法。通過分析移動GIS實時數據及可視化的特點,提出了基于數據映射的自定義地圖符號在地圖上實現傳感器數據實時可視化的方法,并在OSMDroid地圖引擎中進行驗證。
1.1 移動GIS可視化
GIS可視化是可視化與地理信息數據結合而形成的技術,運用地圖學、計算機圖形學和圖像處理技術,將結果采用圖形符號等可視化方法在屏幕上顯示出來,并進行交互處理的理論、方法和技術[6]。在移動終端上的GIS可視化與GIS可視化相同,目前主要有兩種表達方式,即矢量化圖形和柵格圖像。利用柵格圖像實現移動GIS可視化操作簡單易實現,但存儲數據量大,地圖操作時存在失真現象;而矢量化圖形的表達方式需要移動終端具有很強的圖形處理能力,地圖圖形不失真且圖像數據量小。隨著硬件技術的快速進步,目前的移動設備具備較強的計算和實現能力,因此矢量化圖形因其不失真等優點得到廣泛使用。較之于柵格圖像,矢量化圖形表達方式更加靈活,就GIS矢量化圖形的可視化過程而言,地圖符號化仍是其主要途徑。在可視化過程中,經過坐標轉換將地圖的平面坐標轉換為設備的顯示屏幕坐標,然后利用設備的圖形函數進行屏幕繪制,在地圖繪制過程中,選擇樣式或地圖符號,最終實現矢量圖形可視化。由于在繪制過程中可以更換樣式或地圖符號,因此矢量圖形可視化的過程更靈活,展示效果更豐富。
1.2 傳感器數據可視化
在移動地圖上實現傳感器實時數據可視化的過程就是移動GIS可視化的過程。傳感器數據可視化本質上屬于實時數據可視化,通過建立實時數據和視覺變量(顏色、形狀等)對應關系的方式,最終將實時獲取的數據以直觀的圖形方式展示出來,與傳統數據可視化不同,實時數據可視化不斷通過觸發器事件來刷新實時數據可視化的內容[7]。在基于移動GIS的傳感器設備管理過程中,傳感器設備被抽象成地圖上的點符號,通過圖層加載傳感器符號到移動地圖中,而地圖符號是由不同的視覺變量構成的,因此傳感器數據在地圖上可視化的根本是建立傳感器數據與地圖符號視覺變量的映射關系,通過傳感器數據的消息觸發器,驅動地圖符號數據的變化,以達到地圖上傳感器數據實時可視化的目的。
2.1 地圖符號的視覺變量與傳感器數據可視化的關系
地圖上能引起視覺變化的基本圖形、色彩元素稱為視覺變量,也叫圖形變量,是構成地圖符號的基本元素[8]。繪制矢量地圖符號時,由于其是基于圖元的設計模式,因此通過繪制參數控制符號的視覺變量信息(如形狀、顏色的不同),形成一系列具有不同意義的自定義地圖符號。
當傳感器設備被抽象成地圖符號顯示在地圖過程當中,自定義地圖符號雖然實現傳感器設備的可視化,在地圖上僅僅顯示傳感器的地理位置信息及狀態信息,并不能實現傳感器數據的實時可視化,需要通過傳感器數據變化驅動視覺變量變化實現。建立傳感器數據與視覺變量直接映射的可視化描述,視覺變量與屬性值一一對應,通過條件判斷的方式表達傳感器數據與視覺變量的映射關系。定義該條件判斷產生式的條件和結果,通過“IF…T HEN”的產生式結構描述映射規則,利用邏輯判斷實現視覺變量在特定條件下的不同視覺表達。
建立自定義地圖符號與傳感器數據的映射關系要求其地圖符號的所有圖元可被提取且編輯,即圖元的要素屬性可修改,因此自定義地圖符號必須是可編輯矢量圖形而不是傳統的柵格圖像。SVG圖形元素和矢量地圖符號圖元相似,組成其圖形的每個圖元都可提取并編輯,尹章才等[9]提出使用SVG代替傳統柵格圖像繪制地圖符號,利用SVG這一特性方便建立地圖符號與數據的映射關系。
2.2 SVG地圖符號定義
SVG是W3C組織(萬維網聯盟)推出的新一代基于XML的開放的矢量圖形描述語言,支持矢量圖形,如矩形、圓形、橢圓形、多邊形、貝塞爾曲線等,具有靈活的坐標控制手段,可加入用戶自定義的符號,因此可以說它是圖形、圖像和文字的有機統一。由于SVG是XML文本文件,繼承了XML的跨平臺性和可拓展性,可以用任何文本編輯器創建和編輯[10]。SVG的獨特優勢,更體現在組成其圖形的每個圖元都可提取并編輯。以下給出一個簡單組合圖形的SVG文件的例子:


上文給出的SVG文件代碼中,SVG符號文件的開頭為XML的聲明,其解析可以通過XML解析器實現;SVG地圖符號的數據部分以<svg>標簽開始,</svg>標簽結束;其中可以包含若干個數據塊,每個數據塊存儲在<g>標簽中,數據塊由若干SVG的基本圖形元素(circle、ellipse、polyline、rect、polygon、line等)組成[11]。圖形元素包括多個繪制參數,如其中一個矩形數據塊<rect>,height和width屬性定義矩形的寬和高,x和y屬性定義矩形左上角的頂點在畫布上的坐標,stroke和stoke-width屬性控制如何顯示形狀的輪廓,fill屬性設置形狀內的顏色。圖形元素繪制參數決定了SVG地圖符號文件的繪制效果,因此建立傳感器數據與圖形元素繪制參數之間的映射關系,即可實現通過地圖符號可視化展示傳感器數據的過程。
2.3 SVG繪制參數與傳感器數據的映射及定義
基于地圖符號實現傳感器實時數據的可視化,需建立傳感器數據與地圖符號繪制參數的映射關系,當地圖符號以SVG的格式進行描述時,該映射關系就轉換為傳感器數據與SVG圖形元素繪制參數之間的映射關系[12]。由于每一類SVG圖形元素的繪制參數是固定的,為了區別同一類圖形元素的不同實例,需要在圖形元素中增加id屬性,如表1中的每個矩形rect都添加有id號,SVG與傳感器數據的映射關系正是利用此id號修改指定圖元屬性建立的。

表1 SVG圖元與傳感器數據的映射關系Table 1 The mapping relationship between SVG element and sensor data
傳感器數據從傳感器設備采集并通過服務器存入數據庫,其數據類型分為離散型數據和連續性數據。離散型數據一般為數值為1或者0的開關變量,連續性數據一般為浮點型數值,如溫度、濕度和坐標等。根據傳感器數據可視化方法、數據類型及基于產生式映射規則的原理,建立如下映射方式。離散型傳感器數據利用邏輯判斷“=”建立映射,如表1中svg_1,此圖元填充顏色對應傳感器開關變量1.1。當傳感器開關1.1為開,即傳感器數據為1,根據映射規則將此圖元的填充顏色設置為紅色(# ff0000);當傳感器開關1.1為閉,即傳感器數據為0,則將此圖元的填充色修改為灰色(#808080)。連續型的傳感器數據則通過區間判斷建立映射關系,如表1中svg_5,此圖元對應傳感器溫度3.2的數據,當溫度數據處于區間(20.0,100.0)時,將圖元線條填充色設置為橙色(#ffa500)等。
3.1 安卓開源地圖OSMDroid
開放街道地圖(Open Street Map,OSM)開源wiki地圖,是一個網上地圖協作計劃,OSMDroid為其應用于Android操作系統的終端地圖。通過訪問網站便可自由繪制地圖,在地圖上標示出需要的地點及添加建筑物等。基于OSM可以搭建用戶自己的地圖服務器,可用于嵌入網站中或者對外提供服務,如供移動設備使用等。OSMDroid地圖提供Marker方法使用自定義的矢量圖形作為地圖符號,因此在自定義地圖符號過程中,通過傳感器數據與符號視覺變量關系建立矢量圖形圖元與傳感器數據映射關系,實現自定義地圖符號的傳感器數據可視化。
3.2 OSMDroid上的可視化方法實現
在Eclipse的Android開發環境下,由于OSMDroid地圖提供了Marker的自定義方法,所以可通過繼承Drawable類及其方法繪制自定義地圖符號。此地圖符號不僅可以由Drawable類內部繪圖工具繪制,也可通過解析外部SVG文件繪制已定義的矢量圖形。
地圖上每項操作功能都是通過先定義圖層元件添加到圖層,再將該圖層覆蓋在地圖底圖上實現的。如實現地圖符號在地圖上顯示,需將載有地圖符號的圖層元件添加到圖層并覆蓋到地圖上,在地圖相應的地理坐標位置處顯示地圖符號[13]。如圖1的UML類圖所示,在OSMDroidMap繪制地圖符號時新建圖層元件OverlayItem對象,在OverlayItem對象中傳入地理坐標位置及其他參數,該圖層元件提供公共方法setMarker,允許開發人員自定義Marker,即繪制自定義地圖符號作為標識符號。使用set-Marker繪制自定義地圖符號由Drawable類及其子類(BitmapDrawable、ColorDrawable、PictureDrawable、ShapeDrawable等)代碼實現,其中Bitmap-Drawable與PictureDrawable類用于實現圖片資源自定義為地圖符號,ColorDrawable類直接繪制單一幾何色彩圖形到畫布。繪制矢量地圖符號不可直接使用Drawable類直接繪制,因此定義MapSymbol繼承ShapeDrawable類,在類中定義畫布尺寸,存放矢量圖形的元素對象,獲取傳感器數據和映射規則文件,實現繪制矢量圖形為自定義地圖符號顯示在地圖上。

圖1 OSMDroid地圖符號繪制操作UML類圖Fig.1 The UML class diagram of drawing OSMDroid map symbol
移動終端運行程序時檢測地圖符號文件及映射規則文件,預先載入地圖符號繪制模塊,當圖層傳遞坐標、傳感器數據和繪圖句柄過來時,繪制模塊就會按照映射規則,將符號數據通過繪圖句柄繪制到指定地理坐標。
3.3 傳感器地圖符號的數據獲取、映射、繪制過程
在基于OSMDroid地圖的傳感器數據可視化過程中,同一類傳感器使用的地圖符號模型相同,只是空間位置和傳感器獲取的數據有差異,因此在可視化過程中,自定義符號采用一次讀取、多次使用的方式,代表同一類傳感器的地圖符號在地圖加載之前進行數據載入;符號數據加載后給予編號并常駐內存,根據映射規則和傳感器數據的變化,實時更改內存符號數據模型中的繪制參數,并可視化在地圖上。3.3.1 地圖符號數據的獲取加載過程 SVG文件的SAX(Simple APIs for XML)解析方式[14]按照標簽解析,逐行掃描文檔,一邊掃描一邊解析,如當標簽為<Rect>時,新建Rect對象并將該矩形的參數值傳入Rect對象中,再將此對象以屬性id名存放到一個定義為IGraphicElement泛型的ArrayList列表中,以此類推,最終ArrayList存放著該SVG文件所有圖元對象。
如圖2所示的SVG圖元解析與存儲UML類圖,在解析SVG文件前先創建一個接口函數IGraphicElement,在函數中定義SVG各個屬性,如paint、fillcolor、strokecolor等,并初始化繪制方法,創建類AbsGraphicElement實現該接口,初始化接口函數中的方法并定義畫筆屬性及其他屬性值。創建6個子類SVG_Circle、SVG_Ellipse、SVG_Rect、SVG_Line、SVG_Polygon(Polyline)、SVG_Path繼承AbsGraphicElement父類,并重寫Draw方法用于繪制圖元。

圖2 SVG圖元解析與存儲UML類圖Fig.2 The UML class diagram of SVG graphic elements′analysis and storage
3.3.2 傳感器數據與地圖符號的映射與繪制的過程 基于3.3.1節所述方式解析SVG文件獲取所有圖元存儲在ArrayList列表中,同時導入映射規則文件,據此映射規則建立圖元與傳感器數據映射關系。接收到傳感器數據后對其進行判斷,當傳感器數據的數值發生變化,超過規則文件中定義的傳感器數據閾值時,則獲取相應需要修改的圖元id號并在ArrayList列表中修改對應id號的圖元屬性值。
在地圖符號繪制模塊中(圖3),定義一個畫布Canvas后,遍歷ArrayList列表獲取所有圖形元素,調用圖元對象的Draw方法繪制各個圖形元素到畫布Canvas上。由于OSMDroid地圖上坐標符號只可調用本地圖片數據或者直接利用Drawable類繪制,所以新建一個繼承Shape類的SVGShape類并將其抽象為ShapeDrawable(Drawable的子類)。在SVGShape類中,定義Draw方法繪制圖元到畫布Canvas上,并對該類進行數據類型轉換及其他屬性設置,例如在Draw方法中設置畫筆Paint屬性改變畫布Canvas在地圖上顯示大小及其背景透明度等,以滿足SVG圖形作為地圖上傳感器設備的自定義坐標符號的需求。
當移動、縮放地圖或者重新載入地圖時,都是對地圖的一次刷新,重新建立socket連接服務器獲取傳感器數據,重復上述流程,對比傳感器數據與映射規則中閾值,根據對比結果修改相應圖元屬性并重新渲染繪制地圖符號。通過以上數據的獲取、解析及映射方法可以在地圖上繪制傳感器設備自定義符號,實現地圖上傳感器數據的實時可視化。
在測試程序中,以電機監控和加油站管理為例, OSMDroid地圖預先載入表示電機和加油站的地圖符號和映射規則文件,以不同變量名存儲在內存中,并將地圖符號繪制在不同的地理位置,通訊程序將數據發送至地圖窗口,地圖窗口一旦偵聽到數據的變化,即可按照規則重新繪制。如圖4所示,設置兩種數據類型的傳感器處于4個不同位置,以不同地圖符號的圖元表達代表傳感器的工作狀態。圖4中左側圖例為初始化的電機和加油站地圖符號,右側圖例為處于工作狀態的電機和加油站地圖符號。當電機工作溫度高于映射規則中限制的溫度閾值,電機地圖符號的機身將修改為紅色;當電機濕度低于映射規則限制濕度,則將其風扇定義為紫紅色;電機機身上3個按鈕開關開閉時的顏色變化代表轉子的運行狀態。加油站地圖符號中的矩形窗口表示目前正在加油車輛數,以矩形色彩深淺代表擁擠程度。而油管則表示站中剩余油量,以綠色為充足,紅色為報警,黑色為耗盡。用戶在地圖上不僅能夠獲取周圍加油站的位置,查看地圖符號還能了解每個加油站的實時使用情況,以便選取最優加油途徑。

圖3 傳感器數據實時可視化系統流程Fig.3 Flow chart of real time visualization system for sensor data

圖4 OSMDroid地圖上實時可視化的應用Fig.4 The application of real time visualization on OSMDroid map
本方案研究傳感器數據在Open Street Map地圖實時可視化的過程,以SVG格式的自定義地圖符號為例,分析了傳感器數據性質及其映射到地圖符號視覺變量的方法。根據傳感器數據變化實時改變地圖符號視覺變量,實現傳感器數據在OSM地圖上的實時可視化顯示。鑒于物聯網應用越來越多,基于地圖的傳感器設備管理已經成為物聯網應用領域的一個重要方面,本研究以安卓系統作為應用平臺,在地圖上實時繪制出傳感器設備模擬圖形,為傳感器設備的管理和控制提供更直接有效的途徑。
[1] 傅肅性.地理信息系統的理論與應用發展[J].地理科學進展, 2001(2):192-199.
[2] 李霖,許銘,尹章才,等.基于地圖的地理信息可視化現狀與發展[J].測繪工程,2006(5):11-14.
[3] WIL KIE D,SEWALL J,LIN M C.Transforming GIS data into functional road models for larg e-scale traffic simulation[J]. IEEE T ransactions on Visualization&Computer Graphics, 2012,18(6):890-901.
[4] 李神送,溫嘉銘,劉學鋒.Android手機上傳感器信息的實時獲取與可視化[J].電子測量技術,2015(6):104-107.
[5] 劉茂華,韓卯,王巖,等.移動GIS公交查詢系統的實現分析[J].遼寧工程技術大學學報(自然科學版),2015(3):424-427.
[6] 劉文明,楊浚,朱建奇,等.GIS實時數據可視化研究[J].測繪與空間地理信息,2015(3):31-33.
[7] 王柯,王騰,張文詩,等.移動終端GIS地圖數據模型研究[J].測繪通報,2015(3):53-57.
[8] 陳毓芬.地圖符號的視覺變量[J].解放軍測繪學院學報,1995 (2):145-148.
[9] 尹章才,李霖,王錚,等.基于SVG的地圖符號設計與實現[J].測繪科學,2006(5):97-99.
[10] 程小峰,朱紅軍,崔興貴.基于Mobile SVG的移動GIS數據可視化方法的研究與實現[J].科技資訊,2012(31):21-23.
[11] 劉遵雄,況志軍,高玉柱.基于SVG的電力圖形系統的實現[J].繼電器.2005,33(21):69-73.
[12] 焦東來,苗立志,朱彩英.基于映射方法的動態GIS地圖符號設計研究[J].南京郵電大學學報(自然科學版),2012(6):27 -30,36.
[13] 李基鴻.ArcGIS中自定義地圖符號[J].計算機與現代化,2004 (7):113-114.
[14] 鄧曉斌,黃志芳,劉小麗.利用DOM、SAX交互解析基于SVG的WebGIS地圖編碼[J].硅谷.2012(22):28,15.
Research of Real-Time Visualization of Sensor Data Based on OSMDroid Map Engine
JIAO Dong-lai1,CHEN Xue-fei2,JIANG He2,ZHANG Suo-fei3
(1.School of Geograp hy and Biological Inf ormation,N anj ing University of Posts and T elecommunications,N anj ing 210046;2.School of Telecommunications and Inf ormation Engineering,N anj ing University of Posts and Telecommunications,N anj ing 210003;3.School of Internet of T hings,N anj ing University of Posts and Telecommunications,N anj ing 210003,China)
With the development of Internet of things and mobile real-time geographic information system,it′s highly possible that real-time sensor monitoring system based on map becomes a new way of managing equipments in the Internet of things, while real-time visualization of sensor data is a main method to improve the efficiency of regulation.In this paper,a method of displaying real-time sensor data which based on the custom vector map symbol,using an open source OSM Droid(Open Street Map)as the map platform is presented,and the authentication is implemented in Android mobile terminal.T he method uses SVG(Scalable Vector Graphic)to draw custom vector map symbol on behalf of the sensor device.The mapping rules between map symbol and sensor data are designed on the basis of the sensor data type,according to which the map symbol of sensor device is refreshed in the map.T he visual variable of map symbol changes with the sensor data in real time,so as to realize the real-time visual display of sensor data.The experiment result shows that by realizing real-time visualization of sensor data through the map symbol and timely accessing to device information the method can effectively improve management efficiency of sensor equipments,which provides a direct and effective way for sensor equipments management,and has a wide range of application scenarios.
open source map OSMDroid;SVG;map symbol;sensor;real-time visualization
P208
A
1672-0504(2016)05-0081-06
10.3969/j.issn.1672-0504.2016.05.013
2016-01-11;
2016-03-28
國家自然科學基金面上項目(41471329)
焦東來(1977-),男,博士,副教授,從事空間信息可視化、GIS在物聯網領域的應用研究。E-mail:jiaodonglai@njupt.edu.cn