焦東來(lái),陳雪飛,蔣 賀,張索非
(1.南京郵電大學(xué)地理與生物信息學(xué)院,江蘇南京210046;2.南京郵電大學(xué)通信與信息工程學(xué)院,江蘇南京210003; 3.南京郵電大學(xué)物聯(lián)網(wǎng)學(xué)院,江蘇南京210003)
基于OSMDroid地圖引擎的傳感器數(shù)據(jù)實(shí)時(shí)可視化方法研究
焦東來(lái)1,陳雪飛2,蔣 賀2,張索非3
(1.南京郵電大學(xué)地理與生物信息學(xué)院,江蘇南京210046;2.南京郵電大學(xué)通信與信息工程學(xué)院,江蘇南京210003; 3.南京郵電大學(xué)物聯(lián)網(wǎng)學(xué)院,江蘇南京210003)
隨著物聯(lián)網(wǎng)和移動(dòng)實(shí)時(shí)地理信息系統(tǒng)的發(fā)展,基于地圖的傳感器實(shí)時(shí)監(jiān)控系統(tǒng)將成為管理物聯(lián)設(shè)備的新途徑,而傳感器數(shù)據(jù)的實(shí)時(shí)可視化是提高監(jiān)管效率的主要方法。該文提出一種以開(kāi)源OSMDroid(Open Street Map)為地圖平臺(tái),基于自定義矢量地圖符號(hào)實(shí)時(shí)展示傳感器數(shù)據(jù)的方法,并在Android移動(dòng)終端上實(shí)施驗(yàn)證。該方法利用可縮放矢量圖形(Scalable Vector Graphic,SVG)將傳感器設(shè)備抽象為自定義矢量地圖符號(hào),根據(jù)傳感器數(shù)據(jù)類(lèi)型設(shè)計(jì)地圖符號(hào)圖元與傳感器數(shù)據(jù)的映射規(guī)則,據(jù)此在地圖上實(shí)時(shí)刷新傳感器設(shè)備地圖符號(hào)。地圖符號(hào)的視覺(jué)變量隨傳感器數(shù)據(jù)實(shí)時(shí)改變,從而實(shí)現(xiàn)傳感器數(shù)據(jù)的實(shí)時(shí)可視化顯示。實(shí)驗(yàn)結(jié)果表明,通過(guò)地圖符號(hào)實(shí)時(shí)可視化傳感器數(shù)據(jù)可有效提高傳感器設(shè)備管理效率,及時(shí)獲取設(shè)備數(shù)據(jù),為傳感器設(shè)備管理提供一種直接有效的途徑。
開(kāi)源地圖OSMDroid;SVG;地圖符號(hào);傳感器;實(shí)時(shí)可視化
地理信息系統(tǒng)(GIS)集計(jì)算機(jī)、測(cè)繪、遙感、地理學(xué)、空間科學(xué)、信息科學(xué)和管理科學(xué)于一身,對(duì)空間信息進(jìn)行分析和處理,將地圖的視覺(jué)化效果和地理分析功能與數(shù)據(jù)庫(kù)操作集成在一起[1]。隨著GIS的社會(huì)化,以地圖為載體的應(yīng)用尤為廣泛,基于GIS的設(shè)備設(shè)施管理已成為GIS應(yīng)用的重要方面[2]。物聯(lián)網(wǎng)的快速發(fā)展,對(duì)傳感器設(shè)備高效便捷的管理需求,使GIS成為管理傳感器設(shè)備的一種直觀有效的途徑。
隨著移動(dòng)終端設(shè)備的普及,移動(dòng)GIS成為傳感器設(shè)備管理的新手段。GIS的空間信息分析處理能力與移動(dòng)終端設(shè)備的靈活便利性相結(jié)合,使傳感器設(shè)備的管理更方便。較之于普通設(shè)備,傳感器設(shè)備需實(shí)時(shí)獲取數(shù)據(jù)并展示,因此,如何實(shí)時(shí)展示傳感器的數(shù)據(jù)成為基于移動(dòng)GIS的傳感器管理應(yīng)用方面的重點(diǎn)。雖然基于移動(dòng)GIS在設(shè)備管理方面已有較成熟的理論和方法,但是針對(duì)傳感器實(shí)時(shí)數(shù)據(jù)展示方面,并沒(méi)有相應(yīng)的方法。國(guó)內(nèi)外GIS廠商提出的移動(dòng)GIS應(yīng)用方案提供著各種移動(dòng)GIS商業(yè)服務(wù),如ESRI公司設(shè)計(jì)開(kāi)發(fā)的ArcPad提供地圖導(dǎo)航、查詢要素、地圖測(cè)量等功能,但缺乏傳感器設(shè)備監(jiān)控管理的應(yīng)用開(kāi)發(fā)。Wilkie等[3]利用GIS數(shù)據(jù)設(shè)計(jì)交通道路仿真3D模型顯示實(shí)時(shí)路況,但在交通信息實(shí)時(shí)數(shù)據(jù)展示方面存在不足。國(guó)內(nèi)相關(guān)的應(yīng)用也局限于傳感器位置信息的顯示,實(shí)時(shí)數(shù)據(jù)的展示則依靠其他途徑,如李神送等[4]實(shí)現(xiàn)在Android手機(jī)地圖上顯示傳感器的地理位置,而傳感器的實(shí)時(shí)數(shù)據(jù)則通過(guò)列表的形式展現(xiàn)。劉茂華等[5]實(shí)現(xiàn)在移動(dòng)Android平臺(tái)實(shí)時(shí)查詢公交情況,但并未實(shí)現(xiàn)公交車(chē)輛實(shí)時(shí)狀態(tài)的可視化(如車(chē)況、耗油狀況等),僅以地圖的形式展示公交車(chē)輛的實(shí)時(shí)位置。
為了解決數(shù)據(jù)源實(shí)時(shí)性和界面顯示實(shí)時(shí)性的問(wèn)題,國(guó)內(nèi)外學(xué)者提出了實(shí)時(shí)GIS,其不僅能反映事物的最新?tīng)顟B(tài),也可以反映事物隨時(shí)間變化的不同狀態(tài)[6]。利用實(shí)時(shí)GIS的突出特征,可動(dòng)態(tài)獲取實(shí)時(shí)數(shù)據(jù)并及時(shí)處理,做到狀態(tài)消息的實(shí)時(shí)推送和地圖顯示界面的實(shí)時(shí)更新。實(shí)時(shí)GIS可結(jié)合操作系統(tǒng)和實(shí)時(shí)數(shù)據(jù)獲取的形式實(shí)現(xiàn),本文即是在Android操作系統(tǒng)下采用該方式實(shí)現(xiàn)傳感器數(shù)據(jù)的實(shí)時(shí)獲取[7]。
OSMDroid地圖引擎是移動(dòng)GIS較常用的一個(gè)開(kāi)發(fā)插件,其提供了柵格和矢量?jī)煞N地圖的可視化方式,代表了一般移動(dòng)GIS軟件,本文以O(shè)SMDroid地圖引擎為例,探討了移動(dòng)GIS下傳感器數(shù)據(jù)實(shí)時(shí)可視化的方法。通過(guò)分析移動(dòng)GIS實(shí)時(shí)數(shù)據(jù)及可視化的特點(diǎn),提出了基于數(shù)據(jù)映射的自定義地圖符號(hào)在地圖上實(shí)現(xiàn)傳感器數(shù)據(jù)實(shí)時(shí)可視化的方法,并在OSMDroid地圖引擎中進(jìn)行驗(yàn)證。
1.1 移動(dòng)GIS可視化
GIS可視化是可視化與地理信息數(shù)據(jù)結(jié)合而形成的技術(shù),運(yùn)用地圖學(xué)、計(jì)算機(jī)圖形學(xué)和圖像處理技術(shù),將結(jié)果采用圖形符號(hào)等可視化方法在屏幕上顯示出來(lái),并進(jìn)行交互處理的理論、方法和技術(shù)[6]。在移動(dòng)終端上的GIS可視化與GIS可視化相同,目前主要有兩種表達(dá)方式,即矢量化圖形和柵格圖像。利用柵格圖像實(shí)現(xiàn)移動(dòng)GIS可視化操作簡(jiǎn)單易實(shí)現(xiàn),但存儲(chǔ)數(shù)據(jù)量大,地圖操作時(shí)存在失真現(xiàn)象;而矢量化圖形的表達(dá)方式需要移動(dòng)終端具有很強(qiáng)的圖形處理能力,地圖圖形不失真且圖像數(shù)據(jù)量小。隨著硬件技術(shù)的快速進(jìn)步,目前的移動(dòng)設(shè)備具備較強(qiáng)的計(jì)算和實(shí)現(xiàn)能力,因此矢量化圖形因其不失真等優(yōu)點(diǎn)得到廣泛使用。較之于柵格圖像,矢量化圖形表達(dá)方式更加靈活,就GIS矢量化圖形的可視化過(guò)程而言,地圖符號(hào)化仍是其主要途徑。在可視化過(guò)程中,經(jīng)過(guò)坐標(biāo)轉(zhuǎn)換將地圖的平面坐標(biāo)轉(zhuǎn)換為設(shè)備的顯示屏幕坐標(biāo),然后利用設(shè)備的圖形函數(shù)進(jìn)行屏幕繪制,在地圖繪制過(guò)程中,選擇樣式或地圖符號(hào),最終實(shí)現(xiàn)矢量圖形可視化。由于在繪制過(guò)程中可以更換樣式或地圖符號(hào),因此矢量圖形可視化的過(guò)程更靈活,展示效果更豐富。
1.2 傳感器數(shù)據(jù)可視化
在移動(dòng)地圖上實(shí)現(xiàn)傳感器實(shí)時(shí)數(shù)據(jù)可視化的過(guò)程就是移動(dòng)GIS可視化的過(guò)程。傳感器數(shù)據(jù)可視化本質(zhì)上屬于實(shí)時(shí)數(shù)據(jù)可視化,通過(guò)建立實(shí)時(shí)數(shù)據(jù)和視覺(jué)變量(顏色、形狀等)對(duì)應(yīng)關(guān)系的方式,最終將實(shí)時(shí)獲取的數(shù)據(jù)以直觀的圖形方式展示出來(lái),與傳統(tǒng)數(shù)據(jù)可視化不同,實(shí)時(shí)數(shù)據(jù)可視化不斷通過(guò)觸發(fā)器事件來(lái)刷新實(shí)時(shí)數(shù)據(jù)可視化的內(nèi)容[7]。在基于移動(dòng)GIS的傳感器設(shè)備管理過(guò)程中,傳感器設(shè)備被抽象成地圖上的點(diǎn)符號(hào),通過(guò)圖層加載傳感器符號(hào)到移動(dòng)地圖中,而地圖符號(hào)是由不同的視覺(jué)變量構(gòu)成的,因此傳感器數(shù)據(jù)在地圖上可視化的根本是建立傳感器數(shù)據(jù)與地圖符號(hào)視覺(jué)變量的映射關(guān)系,通過(guò)傳感器數(shù)據(jù)的消息觸發(fā)器,驅(qū)動(dòng)地圖符號(hào)數(shù)據(jù)的變化,以達(dá)到地圖上傳感器數(shù)據(jù)實(shí)時(shí)可視化的目的。
2.1 地圖符號(hào)的視覺(jué)變量與傳感器數(shù)據(jù)可視化的關(guān)系
地圖上能引起視覺(jué)變化的基本圖形、色彩元素稱為視覺(jué)變量,也叫圖形變量,是構(gòu)成地圖符號(hào)的基本元素[8]。繪制矢量地圖符號(hào)時(shí),由于其是基于圖元的設(shè)計(jì)模式,因此通過(guò)繪制參數(shù)控制符號(hào)的視覺(jué)變量信息(如形狀、顏色的不同),形成一系列具有不同意義的自定義地圖符號(hào)。
當(dāng)傳感器設(shè)備被抽象成地圖符號(hào)顯示在地圖過(guò)程當(dāng)中,自定義地圖符號(hào)雖然實(shí)現(xiàn)傳感器設(shè)備的可視化,在地圖上僅僅顯示傳感器的地理位置信息及狀態(tài)信息,并不能實(shí)現(xiàn)傳感器數(shù)據(jù)的實(shí)時(shí)可視化,需要通過(guò)傳感器數(shù)據(jù)變化驅(qū)動(dòng)視覺(jué)變量變化實(shí)現(xiàn)。建立傳感器數(shù)據(jù)與視覺(jué)變量直接映射的可視化描述,視覺(jué)變量與屬性值一一對(duì)應(yīng),通過(guò)條件判斷的方式表達(dá)傳感器數(shù)據(jù)與視覺(jué)變量的映射關(guān)系。定義該條件判斷產(chǎn)生式的條件和結(jié)果,通過(guò)“IF…T HEN”的產(chǎn)生式結(jié)構(gòu)描述映射規(guī)則,利用邏輯判斷實(shí)現(xiàn)視覺(jué)變量在特定條件下的不同視覺(jué)表達(dá)。
建立自定義地圖符號(hào)與傳感器數(shù)據(jù)的映射關(guān)系要求其地圖符號(hào)的所有圖元可被提取且編輯,即圖元的要素屬性可修改,因此自定義地圖符號(hào)必須是可編輯矢量圖形而不是傳統(tǒng)的柵格圖像。SVG圖形元素和矢量地圖符號(hào)圖元相似,組成其圖形的每個(gè)圖元都可提取并編輯,尹章才等[9]提出使用SVG代替?zhèn)鹘y(tǒng)柵格圖像繪制地圖符號(hào),利用SVG這一特性方便建立地圖符號(hào)與數(shù)據(jù)的映射關(guān)系。
2.2 SVG地圖符號(hào)定義
SVG是W3C組織(萬(wàn)維網(wǎng)聯(lián)盟)推出的新一代基于XML的開(kāi)放的矢量圖形描述語(yǔ)言,支持矢量圖形,如矩形、圓形、橢圓形、多邊形、貝塞爾曲線等,具有靈活的坐標(biāo)控制手段,可加入用戶自定義的符號(hào),因此可以說(shuō)它是圖形、圖像和文字的有機(jī)統(tǒng)一。由于SVG是XML文本文件,繼承了XML的跨平臺(tái)性和可拓展性,可以用任何文本編輯器創(chuàng)建和編輯[10]。SVG的獨(dú)特優(yōu)勢(shì),更體現(xiàn)在組成其圖形的每個(gè)圖元都可提取并編輯。以下給出一個(gè)簡(jiǎn)單組合圖形的SVG文件的例子:
上文給出的SVG文件代碼中,SVG符號(hào)文件的開(kāi)頭為XML的聲明,其解析可以通過(guò)XML解析器實(shí)現(xiàn);SVG地圖符號(hào)的數(shù)據(jù)部分以<svg>標(biāo)簽開(kāi)始,</svg>標(biāo)簽結(jié)束;其中可以包含若干個(gè)數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊存儲(chǔ)在<g>標(biāo)簽中,數(shù)據(jù)塊由若干SVG的基本圖形元素(circle、ellipse、polyline、rect、polygon、line等)組成[11]。圖形元素包括多個(gè)繪制參數(shù),如其中一個(gè)矩形數(shù)據(jù)塊<rect>,height和width屬性定義矩形的寬和高,x和y屬性定義矩形左上角的頂點(diǎn)在畫(huà)布上的坐標(biāo),stroke和stoke-width屬性控制如何顯示形狀的輪廓,fill屬性設(shè)置形狀內(nèi)的顏色。圖形元素繪制參數(shù)決定了SVG地圖符號(hào)文件的繪制效果,因此建立傳感器數(shù)據(jù)與圖形元素繪制參數(shù)之間的映射關(guān)系,即可實(shí)現(xiàn)通過(guò)地圖符號(hào)可視化展示傳感器數(shù)據(jù)的過(guò)程。
2.3 SVG繪制參數(shù)與傳感器數(shù)據(jù)的映射及定義
基于地圖符號(hào)實(shí)現(xiàn)傳感器實(shí)時(shí)數(shù)據(jù)的可視化,需建立傳感器數(shù)據(jù)與地圖符號(hào)繪制參數(shù)的映射關(guān)系,當(dāng)?shù)貓D符號(hào)以SVG的格式進(jìn)行描述時(shí),該映射關(guān)系就轉(zhuǎn)換為傳感器數(shù)據(jù)與SVG圖形元素繪制參數(shù)之間的映射關(guān)系[12]。由于每一類(lèi)SVG圖形元素的繪制參數(shù)是固定的,為了區(qū)別同一類(lèi)圖形元素的不同實(shí)例,需要在圖形元素中增加id屬性,如表1中的每個(gè)矩形rect都添加有id號(hào),SVG與傳感器數(shù)據(jù)的映射關(guān)系正是利用此id號(hào)修改指定圖元屬性建立的。
表1 SVG圖元與傳感器數(shù)據(jù)的映射關(guān)系Table 1 The mapping relationship between SVG element and sensor data
傳感器數(shù)據(jù)從傳感器設(shè)備采集并通過(guò)服務(wù)器存入數(shù)據(jù)庫(kù),其數(shù)據(jù)類(lèi)型分為離散型數(shù)據(jù)和連續(xù)性數(shù)據(jù)。離散型數(shù)據(jù)一般為數(shù)值為1或者0的開(kāi)關(guān)變量,連續(xù)性數(shù)據(jù)一般為浮點(diǎn)型數(shù)值,如溫度、濕度和坐標(biāo)等。根據(jù)傳感器數(shù)據(jù)可視化方法、數(shù)據(jù)類(lèi)型及基于產(chǎn)生式映射規(guī)則的原理,建立如下映射方式。離散型傳感器數(shù)據(jù)利用邏輯判斷“=”建立映射,如表1中svg_1,此圖元填充顏色對(duì)應(yīng)傳感器開(kāi)關(guān)變量1.1。當(dāng)傳感器開(kāi)關(guān)1.1為開(kāi),即傳感器數(shù)據(jù)為1,根據(jù)映射規(guī)則將此圖元的填充顏色設(shè)置為紅色(# ff0000);當(dāng)傳感器開(kāi)關(guān)1.1為閉,即傳感器數(shù)據(jù)為0,則將此圖元的填充色修改為灰色(#808080)。連續(xù)型的傳感器數(shù)據(jù)則通過(guò)區(qū)間判斷建立映射關(guān)系,如表1中svg_5,此圖元對(duì)應(yīng)傳感器溫度3.2的數(shù)據(jù),當(dāng)溫度數(shù)據(jù)處于區(qū)間(20.0,100.0)時(shí),將圖元線條填充色設(shè)置為橙色(#ffa500)等。
3.1 安卓開(kāi)源地圖OSMDroid
開(kāi)放街道地圖(Open Street Map,OSM)開(kāi)源wiki地圖,是一個(gè)網(wǎng)上地圖協(xié)作計(jì)劃,OSMDroid為其應(yīng)用于Android操作系統(tǒng)的終端地圖。通過(guò)訪問(wèn)網(wǎng)站便可自由繪制地圖,在地圖上標(biāo)示出需要的地點(diǎn)及添加建筑物等?;贠SM可以搭建用戶自己的地圖服務(wù)器,可用于嵌入網(wǎng)站中或者對(duì)外提供服務(wù),如供移動(dòng)設(shè)備使用等。OSMDroid地圖提供Marker方法使用自定義的矢量圖形作為地圖符號(hào),因此在自定義地圖符號(hào)過(guò)程中,通過(guò)傳感器數(shù)據(jù)與符號(hào)視覺(jué)變量關(guān)系建立矢量圖形圖元與傳感器數(shù)據(jù)映射關(guān)系,實(shí)現(xiàn)自定義地圖符號(hào)的傳感器數(shù)據(jù)可視化。
3.2 OSMDroid上的可視化方法實(shí)現(xiàn)
在Eclipse的Android開(kāi)發(fā)環(huán)境下,由于OSMDroid地圖提供了Marker的自定義方法,所以可通過(guò)繼承Drawable類(lèi)及其方法繪制自定義地圖符號(hào)。此地圖符號(hào)不僅可以由Drawable類(lèi)內(nèi)部繪圖工具繪制,也可通過(guò)解析外部SVG文件繪制已定義的矢量圖形。
地圖上每項(xiàng)操作功能都是通過(guò)先定義圖層元件添加到圖層,再將該圖層覆蓋在地圖底圖上實(shí)現(xiàn)的。如實(shí)現(xiàn)地圖符號(hào)在地圖上顯示,需將載有地圖符號(hào)的圖層元件添加到圖層并覆蓋到地圖上,在地圖相應(yīng)的地理坐標(biāo)位置處顯示地圖符號(hào)[13]。如圖1的UML類(lèi)圖所示,在OSMDroidMap繪制地圖符號(hào)時(shí)新建圖層元件OverlayItem對(duì)象,在OverlayItem對(duì)象中傳入地理坐標(biāo)位置及其他參數(shù),該圖層元件提供公共方法setMarker,允許開(kāi)發(fā)人員自定義Marker,即繪制自定義地圖符號(hào)作為標(biāo)識(shí)符號(hào)。使用set-Marker繪制自定義地圖符號(hào)由Drawable類(lèi)及其子類(lèi)(BitmapDrawable、ColorDrawable、PictureDrawable、ShapeDrawable等)代碼實(shí)現(xiàn),其中Bitmap-Drawable與PictureDrawable類(lèi)用于實(shí)現(xiàn)圖片資源自定義為地圖符號(hào),ColorDrawable類(lèi)直接繪制單一幾何色彩圖形到畫(huà)布。繪制矢量地圖符號(hào)不可直接使用Drawable類(lèi)直接繪制,因此定義MapSymbol繼承ShapeDrawable類(lèi),在類(lèi)中定義畫(huà)布尺寸,存放矢量圖形的元素對(duì)象,獲取傳感器數(shù)據(jù)和映射規(guī)則文件,實(shí)現(xiàn)繪制矢量圖形為自定義地圖符號(hào)顯示在地圖上。
圖1 OSMDroid地圖符號(hào)繪制操作UML類(lèi)圖Fig.1 The UML class diagram of drawing OSMDroid map symbol
移動(dòng)終端運(yùn)行程序時(shí)檢測(cè)地圖符號(hào)文件及映射規(guī)則文件,預(yù)先載入地圖符號(hào)繪制模塊,當(dāng)圖層傳遞坐標(biāo)、傳感器數(shù)據(jù)和繪圖句柄過(guò)來(lái)時(shí),繪制模塊就會(huì)按照映射規(guī)則,將符號(hào)數(shù)據(jù)通過(guò)繪圖句柄繪制到指定地理坐標(biāo)。
3.3 傳感器地圖符號(hào)的數(shù)據(jù)獲取、映射、繪制過(guò)程
在基于OSMDroid地圖的傳感器數(shù)據(jù)可視化過(guò)程中,同一類(lèi)傳感器使用的地圖符號(hào)模型相同,只是空間位置和傳感器獲取的數(shù)據(jù)有差異,因此在可視化過(guò)程中,自定義符號(hào)采用一次讀取、多次使用的方式,代表同一類(lèi)傳感器的地圖符號(hào)在地圖加載之前進(jìn)行數(shù)據(jù)載入;符號(hào)數(shù)據(jù)加載后給予編號(hào)并常駐內(nèi)存,根據(jù)映射規(guī)則和傳感器數(shù)據(jù)的變化,實(shí)時(shí)更改內(nèi)存符號(hào)數(shù)據(jù)模型中的繪制參數(shù),并可視化在地圖上。3.3.1 地圖符號(hào)數(shù)據(jù)的獲取加載過(guò)程 SVG文件的SAX(Simple APIs for XML)解析方式[14]按照標(biāo)簽解析,逐行掃描文檔,一邊掃描一邊解析,如當(dāng)標(biāo)簽為<Rect>時(shí),新建Rect對(duì)象并將該矩形的參數(shù)值傳入Rect對(duì)象中,再將此對(duì)象以屬性id名存放到一個(gè)定義為IGraphicElement泛型的ArrayList列表中,以此類(lèi)推,最終ArrayList存放著該SVG文件所有圖元對(duì)象。
如圖2所示的SVG圖元解析與存儲(chǔ)UML類(lèi)圖,在解析SVG文件前先創(chuàng)建一個(gè)接口函數(shù)IGraphicElement,在函數(shù)中定義SVG各個(gè)屬性,如paint、fillcolor、strokecolor等,并初始化繪制方法,創(chuàng)建類(lèi)AbsGraphicElement實(shí)現(xiàn)該接口,初始化接口函數(shù)中的方法并定義畫(huà)筆屬性及其他屬性值。創(chuàng)建6個(gè)子類(lèi)SVG_Circle、SVG_Ellipse、SVG_Rect、SVG_Line、SVG_Polygon(Polyline)、SVG_Path繼承AbsGraphicElement父類(lèi),并重寫(xiě)Draw方法用于繪制圖元。
圖2 SVG圖元解析與存儲(chǔ)UML類(lèi)圖Fig.2 The UML class diagram of SVG graphic elements′analysis and storage
3.3.2 傳感器數(shù)據(jù)與地圖符號(hào)的映射與繪制的過(guò)程 基于3.3.1節(jié)所述方式解析SVG文件獲取所有圖元存儲(chǔ)在ArrayList列表中,同時(shí)導(dǎo)入映射規(guī)則文件,據(jù)此映射規(guī)則建立圖元與傳感器數(shù)據(jù)映射關(guān)系。接收到傳感器數(shù)據(jù)后對(duì)其進(jìn)行判斷,當(dāng)傳感器數(shù)據(jù)的數(shù)值發(fā)生變化,超過(guò)規(guī)則文件中定義的傳感器數(shù)據(jù)閾值時(shí),則獲取相應(yīng)需要修改的圖元id號(hào)并在ArrayList列表中修改對(duì)應(yīng)id號(hào)的圖元屬性值。
在地圖符號(hào)繪制模塊中(圖3),定義一個(gè)畫(huà)布Canvas后,遍歷ArrayList列表獲取所有圖形元素,調(diào)用圖元對(duì)象的Draw方法繪制各個(gè)圖形元素到畫(huà)布Canvas上。由于OSMDroid地圖上坐標(biāo)符號(hào)只可調(diào)用本地圖片數(shù)據(jù)或者直接利用Drawable類(lèi)繪制,所以新建一個(gè)繼承Shape類(lèi)的SVGShape類(lèi)并將其抽象為ShapeDrawable(Drawable的子類(lèi))。在SVGShape類(lèi)中,定義Draw方法繪制圖元到畫(huà)布Canvas上,并對(duì)該類(lèi)進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換及其他屬性設(shè)置,例如在Draw方法中設(shè)置畫(huà)筆Paint屬性改變畫(huà)布Canvas在地圖上顯示大小及其背景透明度等,以滿足SVG圖形作為地圖上傳感器設(shè)備的自定義坐標(biāo)符號(hào)的需求。
當(dāng)移動(dòng)、縮放地圖或者重新載入地圖時(shí),都是對(duì)地圖的一次刷新,重新建立socket連接服務(wù)器獲取傳感器數(shù)據(jù),重復(fù)上述流程,對(duì)比傳感器數(shù)據(jù)與映射規(guī)則中閾值,根據(jù)對(duì)比結(jié)果修改相應(yīng)圖元屬性并重新渲染繪制地圖符號(hào)。通過(guò)以上數(shù)據(jù)的獲取、解析及映射方法可以在地圖上繪制傳感器設(shè)備自定義符號(hào),實(shí)現(xiàn)地圖上傳感器數(shù)據(jù)的實(shí)時(shí)可視化。
在測(cè)試程序中,以電機(jī)監(jiān)控和加油站管理為例, OSMDroid地圖預(yù)先載入表示電機(jī)和加油站的地圖符號(hào)和映射規(guī)則文件,以不同變量名存儲(chǔ)在內(nèi)存中,并將地圖符號(hào)繪制在不同的地理位置,通訊程序?qū)?shù)據(jù)發(fā)送至地圖窗口,地圖窗口一旦偵聽(tīng)到數(shù)據(jù)的變化,即可按照規(guī)則重新繪制。如圖4所示,設(shè)置兩種數(shù)據(jù)類(lèi)型的傳感器處于4個(gè)不同位置,以不同地圖符號(hào)的圖元表達(dá)代表傳感器的工作狀態(tài)。圖4中左側(cè)圖例為初始化的電機(jī)和加油站地圖符號(hào),右側(cè)圖例為處于工作狀態(tài)的電機(jī)和加油站地圖符號(hào)。當(dāng)電機(jī)工作溫度高于映射規(guī)則中限制的溫度閾值,電機(jī)地圖符號(hào)的機(jī)身將修改為紅色;當(dāng)電機(jī)濕度低于映射規(guī)則限制濕度,則將其風(fēng)扇定義為紫紅色;電機(jī)機(jī)身上3個(gè)按鈕開(kāi)關(guān)開(kāi)閉時(shí)的顏色變化代表轉(zhuǎn)子的運(yùn)行狀態(tài)。加油站地圖符號(hào)中的矩形窗口表示目前正在加油車(chē)輛數(shù),以矩形色彩深淺代表?yè)頂D程度。而油管則表示站中剩余油量,以綠色為充足,紅色為報(bào)警,黑色為耗盡。用戶在地圖上不僅能夠獲取周?chē)佑驼镜奈恢?查看地圖符號(hào)還能了解每個(gè)加油站的實(shí)時(shí)使用情況,以便選取最優(yōu)加油途徑。
圖3 傳感器數(shù)據(jù)實(shí)時(shí)可視化系統(tǒng)流程Fig.3 Flow chart of real time visualization system for sensor data
圖4 OSMDroid地圖上實(shí)時(shí)可視化的應(yīng)用Fig.4 The application of real time visualization on OSMDroid map
本方案研究傳感器數(shù)據(jù)在Open Street Map地圖實(shí)時(shí)可視化的過(guò)程,以SVG格式的自定義地圖符號(hào)為例,分析了傳感器數(shù)據(jù)性質(zhì)及其映射到地圖符號(hào)視覺(jué)變量的方法。根據(jù)傳感器數(shù)據(jù)變化實(shí)時(shí)改變地圖符號(hào)視覺(jué)變量,實(shí)現(xiàn)傳感器數(shù)據(jù)在OSM地圖上的實(shí)時(shí)可視化顯示。鑒于物聯(lián)網(wǎng)應(yīng)用越來(lái)越多,基于地圖的傳感器設(shè)備管理已經(jīng)成為物聯(lián)網(wǎng)應(yīng)用領(lǐng)域的一個(gè)重要方面,本研究以安卓系統(tǒng)作為應(yīng)用平臺(tái),在地圖上實(shí)時(shí)繪制出傳感器設(shè)備模擬圖形,為傳感器設(shè)備的管理和控制提供更直接有效的途徑。
[1] 傅肅性.地理信息系統(tǒng)的理論與應(yīng)用發(fā)展[J].地理科學(xué)進(jìn)展, 2001(2):192-199.
[2] 李霖,許銘,尹章才,等.基于地圖的地理信息可視化現(xiàn)狀與發(fā)展[J].測(cè)繪工程,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] 李神送,溫嘉銘,劉學(xué)鋒.Android手機(jī)上傳感器信息的實(shí)時(shí)獲取與可視化[J].電子測(cè)量技術(shù),2015(6):104-107.
[5] 劉茂華,韓卯,王巖,等.移動(dòng)GIS公交查詢系統(tǒng)的實(shí)現(xiàn)分析[J].遼寧工程技術(shù)大學(xué)學(xué)報(bào)(自然科學(xué)版),2015(3):424-427.
[6] 劉文明,楊浚,朱建奇,等.GIS實(shí)時(shí)數(shù)據(jù)可視化研究[J].測(cè)繪與空間地理信息,2015(3):31-33.
[7] 王柯,王騰,張文詩(shī),等.移動(dòng)終端GIS地圖數(shù)據(jù)模型研究[J].測(cè)繪通報(bào),2015(3):53-57.
[8] 陳毓芬.地圖符號(hào)的視覺(jué)變量[J].解放軍測(cè)繪學(xué)院學(xué)報(bào),1995 (2):145-148.
[9] 尹章才,李霖,王錚,等.基于SVG的地圖符號(hào)設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)繪科學(xué),2006(5):97-99.
[10] 程小峰,朱紅軍,崔興貴.基于Mobile SVG的移動(dòng)GIS數(shù)據(jù)可視化方法的研究與實(shí)現(xiàn)[J].科技資訊,2012(31):21-23.
[11] 劉遵雄,況志軍,高玉柱.基于SVG的電力圖形系統(tǒng)的實(shí)現(xiàn)[J].繼電器.2005,33(21):69-73.
[12] 焦東來(lái),苗立志,朱彩英.基于映射方法的動(dòng)態(tài)GIS地圖符號(hào)設(shè)計(jì)研究[J].南京郵電大學(xué)學(xué)報(bào)(自然科學(xué)版),2012(6):27 -30,36.
[13] 李基鴻.ArcGIS中自定義地圖符號(hào)[J].計(jì)算機(jī)與現(xiàn)代化,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
國(guó)家自然科學(xué)基金面上項(xiàng)目(41471329)
焦東來(lái)(1977-),男,博士,副教授,從事空間信息可視化、GIS在物聯(lián)網(wǎng)領(lǐng)域的應(yīng)用研究。E-mail:jiaodonglai@njupt.edu.cn