陳德權
(1.福建省基礎地理信息中心,福建 福州 350002)
基于消息通信的移動協同GIS
陳德權1
(1.福建省基礎地理信息中心,福建 福州 350002)

為降低移動終端實時GIS協同工作的數據傳輸量,提出了以消息通信的方式構建移動協同GIS系統的方法;闡述了系統的實現原理,設計了系統結構;并以Protobuf為消息載體實現了原型系統。
GIS;協同;消息通信;Protobuf
隨著3G和4G移動網絡的普及以及手機終端設備計算能力的不斷提升,利用移動終端進行高性能計算、移動辦公及群體協作將會更加普及。計算機支持協同工作(CSCW)是指在計算機支持的環境中,一個群體協同工作完成一項共同的任務。CSCW與GIS的結合產生了協同GIS(CoGIS),它能讓異地分布的用戶在同一時間共同參與同一項目。CoGIS的主要特征可概括為分布性、共享性和實時性。它是G1S發展的一個重要趨勢[1-3]。
由于GIS自身數據量大且結構復雜以及移動網絡環境下流量使用的限制,要實現移動CoGIS就必須考慮在實現CoGIS特征基礎上如何最大程度地降低網絡傳輸的數據量。本文以消息通信的方式構建移動CoGIS,對消息類型進行合理劃分,以Protobuf為數據傳輸格式,實現了原型系統。
1.1 系統實現原理
移動CoGIS中的消息通信是在移動網絡下完成的,同一時刻會有大量協同操作同步傳遞,如何最大程度地減少數據傳輸量是首要考慮的問題。若都以傳輸操作結果的方式來實現GIS協同工作將會帶來大量的數據交互,占用移動網絡帶寬,降低通信效率,且在其他的協同移動終端無法體現操作過程。因此需要對常用的GIS操作進行抽象,并根據操作類型按一定規則封裝成命令消息或內容消息,通過通信信道傳輸到其他終端完成協同工作過程。實現過程如下:
①移動終端與服務器鏈接,建立通信通道;②協同發起者在移動終端上執行某一GIS操作(如放大地圖),生成預先定義好的GIS命令消息,將該操作的具體參數值(當前中心點、放大級別)傳遞到命令消息中;③消息組件將命令消息通過通道傳輸到服務器;④服務器接收到命令消息后,將該消息以同樣方式發送到其他協作者的移動終端上;⑤其他移動終端接收到該消息后進行解析,并將操作還原到GIS界面上,完成協同過程。
1.2 系統結構
從系統實現原理可以看出,一個服務器用于管理協同操作,移動終端的協同操作都通過服務器實時處理后轉發給各協同終端。系統結構如圖1所示。

圖1 CoGIS系統結構
用于管理協同工作的服務器應用程序稱為協同引擎,實現協同控制、協同感知等協同管理所必備的功能。GIS命令/內容消息和非GIS命令/內容消息包括從移動終端發送到協同引擎和從協同引擎發送到移動終端,均通過協同引擎接收、處理和轉發。移動終端中用于實現GIS操作的基礎地理底圖通過在線調用地圖服務方式獲取,在此地理底圖上進行協同標繪、位置共享等GIS操作。操作的結果在本地終端設備上展示,同時將該GIS操作生成命令或內容消息,通過協同引擎自動記錄并同步到各協同終端展現,從而達到你見即我見的協同效果。
在CoGIS中,通信是成員間相互感知和信息溝通的基本途徑[4-5]。移動終端與協同引擎之間的通信是靠系統定義的一系列命令消息和內容消息完成的。命令消息一般包含加入退出協同工作、用戶狀態、權限控制等與協同控制感知有關的消息;內容消息包含實現具體GIS協同標繪內容、協作交流內容等與協同具體工作有關的消息。只有合理地劃分系統的消息類型,才能保持協同系統工作的高響應性以及協同過程的可再現。
1.3 消息通道建立
移動終端和協同引擎是通過Socket建立消息通信的。消息通道的建立流程如圖2、3所示。協同引擎啟動時會創建Socket鏈接的監聽端口,移動終端運行時通過Socket鏈接協同引擎的監聽端口。當協同引擎獲取到終端鏈接時,則向終端發送應答信息并進入接收心跳包狀態;移動終端收到協同引擎鏈接成功的應答信息后,定時向協同引擎發送心跳包。協同引擎收到心跳包后則說明當前的移動終端在線,進入與該移動終端的消息通信狀態;若協同引擎在一段時間內無法收到終端發送的心跳包,則說明當前的終端已失去鏈接,協同引擎會主動斷開該終端的鏈接。

圖2 服務器與客戶端消息通道建立流程

圖3 客戶端與服務器消息通道建立流程
2.1 消息協議制定
客戶端與協同引擎之間的通信是通過命令消息和內容消息實現的,每個通信消息中都包含終端信息和消息類型,每種消息都用實體類表示,將消息實體類通過序列化和反序列化完成消息的傳輸和解析。客戶端和協同引擎都有各自的消息處理模塊,根據消息類型和消息名進行解析并作相應處理。
將系統中的協同操作抽象成命令消息,如協同工作下發、加入或退出協同工作、地圖操作等。命令消息主要用于控制和更新協同工作的狀態。協同工作過程中所產生的地圖標繪、位置上報、協作交流等數據通過內容消息傳遞。內容消息中與空間信息有關的部分,如地圖標繪、實時位置等用WKB標準二進制數據作為消息類中的屬性表示,其他的文本內容消息按常規的字符串存儲。
2.2 基于Protobuf的消息編碼
合理、高效的消息結構是實現GIS協同操作的關鍵因素[6]。Protobuf是一種輕便高效的結構化數據存儲格式,它在序列化速度和內存占用等方面都比xml或json更優[7-8],在移動開發中更適合作為數據傳輸的格式。
要將消息類以Protobuf的格式序列化及反序列化傳輸,需要在類及其屬性中增加類標簽和字段標簽。類標簽是在類名稱上增加[ProtoContract]的聲明,用于標識該類是用Protobuf序列化。字段標簽是在字段上增加[ProtoMember(n)]的聲明,用于標識該字段是允許Protobuf序列化的,并且n用具體的數值來表示該字段在序列化時的位置,在反序列化時也按這個標識的字段順序依次解析各屬性字段,從而實現數據流和對象之間的轉換。
原型系統實現協同工作的創建下發,協作者加入協同工作完成同一任務。用戶分為協同管理員和協作者,協同管理員負責協同工作的創建,創建的同時將消息發給協同引擎,協同引擎在服務器端創建協同工作的共享空間,同時將消息轉發給各協同終端,通知協作者加入協同工作。當協作者加入協同工作時,在用戶列表中更新當前的在線用戶。協作者和協同管理員在該協同工作空間中可以查看成員的空間位置、移動路線,各成員間可以收發消息進行協作交流,可以在地圖上標注目標點等,所有協同操作都可實時同步共享。系統實現效果如圖4、 5所示。

圖4 手機端協同標注

圖5 平板端同步標注結果
當前大量應用場景需要移動CoGIS系統為支撐,如應急事件處理、戰場環境指揮、安全生產監管等,本文基于消息通信構建了移動協同GIS原型系統,實現了人人交互,滿足了群體協作的應用需求。因此,只有通過引入CSCW技術,建立基于GIS的協同工作平臺,才能進一步豐富GIS的功能,擴展GIS的應用領域。
[1] 胡雪蓮,程承旗,孫永軍,等.協同GIS:CoGIS概念初探[J].中國圖像圖形學報,2003,8(6):715-720
[2] 郭朝珍,王欽敏,莊苗,等.空間數據協同編輯平臺協同機制的研究[J].計算機集成制造系統,2006,12(5):778-781
[3] 童飛.異構協同GIS系統的框架模型和數據索引[D].南京:南京師范大學,2008
[4] 胡雪蓮,程承旗,馬藹乃,等.CoGIS系統中通信子系統的設計與實現[J].計算機工程與應用,2003,39(28):10-12
[5] 史美林.計算機支持的協同工作[M].北京:電子工業出版社, 2000
[6] 承達瑜,陳軍,韓剛,等.基于消息隊列的實時GIS協同操作研究[J].中國礦業大學學報,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
陳德權,碩士,工程師,主要研究方向為地理信息系統和地理信息網絡共享。
2016-03-03。
項目來源:2016年福建省測繪地理信息局科技創新資助項目(2015J06)。