陳德權
(1.福建省基礎地理信息中心,福建 福州 350002)
基于消息通信的移動協(xié)同GIS
陳德權1
(1.福建省基礎地理信息中心,福建 福州 350002)
為降低移動終端實時GIS協(xié)同工作的數(shù)據(jù)傳輸量,提出了以消息通信的方式構(gòu)建移動協(xié)同GIS系統(tǒng)的方法;闡述了系統(tǒng)的實現(xiàn)原理,設計了系統(tǒng)結(jié)構(gòu);并以Protobuf為消息載體實現(xiàn)了原型系統(tǒng)。
GIS;協(xié)同;消息通信;Protobuf
隨著3G和4G移動網(wǎng)絡的普及以及手機終端設備計算能力的不斷提升,利用移動終端進行高性能計算、移動辦公及群體協(xié)作將會更加普及。計算機支持協(xié)同工作(CSCW)是指在計算機支持的環(huán)境中,一個群體協(xié)同工作完成一項共同的任務。CSCW與GIS的結(jié)合產(chǎn)生了協(xié)同GIS(CoGIS),它能讓異地分布的用戶在同一時間共同參與同一項目。CoGIS的主要特征可概括為分布性、共享性和實時性。它是G1S發(fā)展的一個重要趨勢[1-3]。
由于GIS自身數(shù)據(jù)量大且結(jié)構(gòu)復雜以及移動網(wǎng)絡環(huán)境下流量使用的限制,要實現(xiàn)移動CoGIS就必須考慮在實現(xiàn)CoGIS特征基礎上如何最大程度地降低網(wǎng)絡傳輸?shù)臄?shù)據(jù)量。本文以消息通信的方式構(gòu)建移動CoGIS,對消息類型進行合理劃分,以Protobuf為數(shù)據(jù)傳輸格式,實現(xiàn)了原型系統(tǒng)。
1.1 系統(tǒng)實現(xiàn)原理
移動CoGIS中的消息通信是在移動網(wǎng)絡下完成的,同一時刻會有大量協(xié)同操作同步傳遞,如何最大程度地減少數(shù)據(jù)傳輸量是首要考慮的問題。若都以傳輸操作結(jié)果的方式來實現(xiàn)GIS協(xié)同工作將會帶來大量的數(shù)據(jù)交互,占用移動網(wǎng)絡帶寬,降低通信效率,且在其他的協(xié)同移動終端無法體現(xiàn)操作過程。因此需要對常用的GIS操作進行抽象,并根據(jù)操作類型按一定規(guī)則封裝成命令消息或內(nèi)容消息,通過通信信道傳輸?shù)狡渌K端完成協(xié)同工作過程。實現(xiàn)過程如下:
①移動終端與服務器鏈接,建立通信通道;②協(xié)同發(fā)起者在移動終端上執(zhí)行某一GIS操作(如放大地圖),生成預先定義好的GIS命令消息,將該操作的具體參數(shù)值(當前中心點、放大級別)傳遞到命令消息中;③消息組件將命令消息通過通道傳輸?shù)椒掌鳎虎芊掌鹘邮盏矫钕⒑?,將該消息以同樣方式發(fā)送到其他協(xié)作者的移動終端上;⑤其他移動終端接收到該消息后進行解析,并將操作還原到GIS界面上,完成協(xié)同過程。
1.2 系統(tǒng)結(jié)構(gòu)
從系統(tǒng)實現(xiàn)原理可以看出,一個服務器用于管理協(xié)同操作,移動終端的協(xié)同操作都通過服務器實時處理后轉(zhuǎn)發(fā)給各協(xié)同終端。系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 CoGIS系統(tǒng)結(jié)構(gòu)
用于管理協(xié)同工作的服務器應用程序稱為協(xié)同引擎,實現(xiàn)協(xié)同控制、協(xié)同感知等協(xié)同管理所必備的功能。GIS命令/內(nèi)容消息和非GIS命令/內(nèi)容消息包括從移動終端發(fā)送到協(xié)同引擎和從協(xié)同引擎發(fā)送到移動終端,均通過協(xié)同引擎接收、處理和轉(zhuǎn)發(fā)。移動終端中用于實現(xiàn)GIS操作的基礎地理底圖通過在線調(diào)用地圖服務方式獲取,在此地理底圖上進行協(xié)同標繪、位置共享等GIS操作。操作的結(jié)果在本地終端設備上展示,同時將該GIS操作生成命令或內(nèi)容消息,通過協(xié)同引擎自動記錄并同步到各協(xié)同終端展現(xiàn),從而達到你見即我見的協(xié)同效果。
在CoGIS中,通信是成員間相互感知和信息溝通的基本途徑[4-5]。移動終端與協(xié)同引擎之間的通信是靠系統(tǒng)定義的一系列命令消息和內(nèi)容消息完成的。命令消息一般包含加入退出協(xié)同工作、用戶狀態(tài)、權限控制等與協(xié)同控制感知有關的消息;內(nèi)容消息包含實現(xiàn)具體GIS協(xié)同標繪內(nèi)容、協(xié)作交流內(nèi)容等與協(xié)同具體工作有關的消息。只有合理地劃分系統(tǒng)的消息類型,才能保持協(xié)同系統(tǒng)工作的高響應性以及協(xié)同過程的可再現(xiàn)。
1.3 消息通道建立
移動終端和協(xié)同引擎是通過Socket建立消息通信的。消息通道的建立流程如圖2、3所示。協(xié)同引擎啟動時會創(chuàng)建Socket鏈接的監(jiān)聽端口,移動終端運行時通過Socket鏈接協(xié)同引擎的監(jiān)聽端口。當協(xié)同引擎獲取到終端鏈接時,則向終端發(fā)送應答信息并進入接收心跳包狀態(tài);移動終端收到協(xié)同引擎鏈接成功的應答信息后,定時向協(xié)同引擎發(fā)送心跳包。協(xié)同引擎收到心跳包后則說明當前的移動終端在線,進入與該移動終端的消息通信狀態(tài);若協(xié)同引擎在一段時間內(nèi)無法收到終端發(fā)送的心跳包,則說明當前的終端已失去鏈接,協(xié)同引擎會主動斷開該終端的鏈接。
圖2 服務器與客戶端消息通道建立流程
圖3 客戶端與服務器消息通道建立流程
2.1 消息協(xié)議制定
客戶端與協(xié)同引擎之間的通信是通過命令消息和內(nèi)容消息實現(xiàn)的,每個通信消息中都包含終端信息和消息類型,每種消息都用實體類表示,將消息實體類通過序列化和反序列化完成消息的傳輸和解析??蛻舳撕蛥f(xié)同引擎都有各自的消息處理模塊,根據(jù)消息類型和消息名進行解析并作相應處理。
將系統(tǒng)中的協(xié)同操作抽象成命令消息,如協(xié)同工作下發(fā)、加入或退出協(xié)同工作、地圖操作等。命令消息主要用于控制和更新協(xié)同工作的狀態(tài)。協(xié)同工作過程中所產(chǎn)生的地圖標繪、位置上報、協(xié)作交流等數(shù)據(jù)通過內(nèi)容消息傳遞。內(nèi)容消息中與空間信息有關的部分,如地圖標繪、實時位置等用WKB標準二進制數(shù)據(jù)作為消息類中的屬性表示,其他的文本內(nèi)容消息按常規(guī)的字符串存儲。
2.2 基于Protobuf的消息編碼
合理、高效的消息結(jié)構(gòu)是實現(xiàn)GIS協(xié)同操作的關鍵因素[6]。Protobuf是一種輕便高效的結(jié)構(gòu)化數(shù)據(jù)存儲格式,它在序列化速度和內(nèi)存占用等方面都比xml或json更優(yōu)[7-8],在移動開發(fā)中更適合作為數(shù)據(jù)傳輸?shù)母袷健?/p>
要將消息類以Protobuf的格式序列化及反序列化傳輸,需要在類及其屬性中增加類標簽和字段標簽。類標簽是在類名稱上增加[ProtoContract]的聲明,用于標識該類是用Protobuf序列化。字段標簽是在字段上增加[ProtoMember(n)]的聲明,用于標識該字段是允許Protobuf序列化的,并且n用具體的數(shù)值來表示該字段在序列化時的位置,在反序列化時也按這個標識的字段順序依次解析各屬性字段,從而實現(xiàn)數(shù)據(jù)流和對象之間的轉(zhuǎn)換。
原型系統(tǒng)實現(xiàn)協(xié)同工作的創(chuàng)建下發(fā),協(xié)作者加入?yún)f(xié)同工作完成同一任務。用戶分為協(xié)同管理員和協(xié)作者,協(xié)同管理員負責協(xié)同工作的創(chuàng)建,創(chuàng)建的同時將消息發(fā)給協(xié)同引擎,協(xié)同引擎在服務器端創(chuàng)建協(xié)同工作的共享空間,同時將消息轉(zhuǎn)發(fā)給各協(xié)同終端,通知協(xié)作者加入?yún)f(xié)同工作。當協(xié)作者加入?yún)f(xié)同工作時,在用戶列表中更新當前的在線用戶。協(xié)作者和協(xié)同管理員在該協(xié)同工作空間中可以查看成員的空間位置、移動路線,各成員間可以收發(fā)消息進行協(xié)作交流,可以在地圖上標注目標點等,所有協(xié)同操作都可實時同步共享。系統(tǒng)實現(xiàn)效果如圖4、 5所示。
圖4 手機端協(xié)同標注
圖5 平板端同步標注結(jié)果
當前大量應用場景需要移動CoGIS系統(tǒng)為支撐,如應急事件處理、戰(zhàn)場環(huán)境指揮、安全生產(chǎn)監(jiān)管等,本文基于消息通信構(gòu)建了移動協(xié)同GIS原型系統(tǒng),實現(xiàn)了人人交互,滿足了群體協(xié)作的應用需求。因此,只有通過引入CSCW技術,建立基于GIS的協(xié)同工作平臺,才能進一步豐富GIS的功能,擴展GIS的應用領域。
[1] 胡雪蓮,程承旗,孫永軍,等.協(xié)同GIS:CoGIS概念初探[J].中國圖像圖形學報,2003,8(6):715-720
[2] 郭朝珍,王欽敏,莊苗,等.空間數(shù)據(jù)協(xié)同編輯平臺協(xié)同機制的研究[J].計算機集成制造系統(tǒng),2006,12(5):778-781
[3] 童飛.異構(gòu)協(xié)同GIS系統(tǒng)的框架模型和數(shù)據(jù)索引[D].南京:南京師范大學,2008
[4] 胡雪蓮,程承旗,馬藹乃,等.CoGIS系統(tǒng)中通信子系統(tǒng)的設計與實現(xiàn)[J].計算機工程與應用,2003,39(28):10-12
[5] 史美林.計算機支持的協(xié)同工作[M].北京:電子工業(yè)出版社, 2000
[6] 承達瑜,陳軍,韓剛,等.基于消息隊列的實時GIS協(xié)同操作研究[J].中國礦業(yè)大學學報,2012,41(1):127-132
[7] Gligoric N, Dejanovic I, Krco S. Performance Evaluation of Compact Binary XML Representation for Constrained Devices[C].2011 International Conference on Distributed Computing in Sensor Systems and Workshops (DCOSS), Barcelona,2011
[8] Wendt A, Faschang M, Leber T, et al. Software Architecture for a Smart Grids Test Facility[C]. 39th Annual Conference of the IEEE Industrial Electronics Society,Vienna,2013
P208
B
1672-4623(2016)07-0082-03
10.3969/j.issn.1672-4623.2016.07.026
陳德權,碩士,工程師,主要研究方向為地理信息系統(tǒng)和地理信息網(wǎng)絡共享。
2016-03-03。
項目來源:2016年福建省測繪地理信息局科技創(chuàng)新資助項目(2015J06)。