王忠波
(嘉興市國土資源局,浙江 嘉興 314000)
協(xié)同地理信息系統(tǒng)(Cooperative Geographic Information System)又名CoGIS是構(gòu)建于地理信息系統(tǒng)上的協(xié)同工作平臺(tái),為地域分散的群體用戶提供協(xié)調(diào)與協(xié)作完成特定任務(wù)的環(huán)境。本文討論了CoGIS的概念,然后基于 Microsoft.Net Remoting技術(shù),利用 Arc-GIS Engine開發(fā)組件以及Visual Studio 2005開發(fā)平臺(tái),初步實(shí)現(xiàn)了CoGIS功能。
面向群體用戶,CoGIS提供一個(gè)工作平臺(tái),群體用戶以此平臺(tái)進(jìn)行空間信息編輯、加工、會(huì)商、分析、決策,共同完成一項(xiàng)復(fù)雜的工作,它可訪問共享的多種信息,這種新型的地理信息系統(tǒng)我們可以統(tǒng)稱其為協(xié)同地理信息系統(tǒng)(Cooperative GIS,簡稱CoGIS)。CoGIS技術(shù)的目的和實(shí)質(zhì)是:利用通信技術(shù)和計(jì)算機(jī)技術(shù)建立一個(gè)基于GIS的協(xié)同工作環(huán)境,在此環(huán)境中人們可以共同工作、互相合作,一起致力于一個(gè)項(xiàng)目或一個(gè)研究領(lǐng)域,或解決一個(gè)學(xué)術(shù)上的難題等[1]。于是CoGIS可以定義為:一組或多組異地的用戶,借助計(jì)算機(jī)及其網(wǎng)絡(luò)技術(shù),基于地理信息共同協(xié)調(diào)與合作來完成一項(xiàng)任務(wù)[2]。此外,有文獻(xiàn)講 GIS與 CSCW(Computer Supported Cooperative Work)的結(jié)合便產(chǎn)生CoGIS(Collaborative GIS)簡稱 CoGIS[3]。
CoGIS形式是合作,關(guān)鍵是協(xié)調(diào),要求多點(diǎn)實(shí)時(shí)通訊,是一種支持人們?cè)诠蚕憝h(huán)境下共同完成同一件涉及GIS的群體工作的計(jì)算機(jī)應(yīng)用系統(tǒng)[4],CoGIS從技術(shù)和理論上研究和解決人們是如何基于地理信息進(jìn)行群體協(xié)作的;應(yīng)提供什么樣的技術(shù)手段以幫助人們進(jìn)行基于地理信息的合作。
CoGIS要求各個(gè)客戶端之間能夠自由通信,交流工作信息,Microsoft.NET Remoting提供了一種允許對(duì)象通過應(yīng)用程序域與另一對(duì)象進(jìn)行交互的框架,.NET Remoting的體系結(jié)構(gòu)主要元素有:遠(yuǎn)程對(duì)象、信道、消息、格式標(biāo)識(shí)符、格式標(biāo)識(shí)符提供程序、代理對(duì)象、消息接收器、RemotingConfiguration類以及ChannelServices類。
透明代理對(duì)象上的方法當(dāng)客戶機(jī)調(diào)用遠(yuǎn)程對(duì)象上的方法時(shí)實(shí)際上被調(diào)用。然后,透明代理對(duì)象調(diào)用真實(shí)代理對(duì)象。真實(shí)的代理對(duì)象負(fù)責(zé)把消息發(fā)送到信道中去。真實(shí)代理對(duì)象的默認(rèn)執(zhí)行方式是查找特使接收器的集合,并把消息傳遞給第一個(gè)特使接收器。特使接收器可以截取和改變消息[5]。
最后一個(gè)特使接收器把消息發(fā)送到信道中。.NET Framework 2.0提供了二進(jìn)制格式標(biāo)識(shí)符和SOAP格式標(biāo)識(shí)符。信道負(fù)責(zé)發(fā)送已格式化的數(shù)據(jù),或者負(fù)責(zé)連接到服務(wù)器的監(jiān)聽網(wǎng)絡(luò)接口上。僅需執(zhí)行代碼來定制信道的功能,就可以完成把數(shù)據(jù)傳輸?shù)搅硪欢说谋匾ぷ?。服?wù)器端的消息傳送如圖1所示:
圖1 服務(wù)器端的消息傳送
信道接收來自客戶機(jī)的已格式化消息,并且使用格式標(biāo)識(shí)符解開消息中的SOAP或二進(jìn)制數(shù)據(jù)。然后,信道調(diào)用服務(wù)器環(huán)境接收器。服務(wù)器環(huán)境接收器是一個(gè)接收器鏈,鏈中的最后一個(gè)接收器繼續(xù)調(diào)用對(duì)象環(huán)境接收器鏈[5]。最后一個(gè)對(duì)象環(huán)境接收器調(diào)用遠(yuǎn)程對(duì)象上的方法。
CoGIS總體框架如圖2所示:
圖2 CoGIS總體框架圖
協(xié)同服務(wù)器主要對(duì)整個(gè)CoGIS進(jìn)行管理,包含用戶管理、文件管理、標(biāo)繪管理、語音通信、文字交流、協(xié)同控制6個(gè)模塊,下面重點(diǎn)介紹用戶管理和協(xié)同管理兩個(gè)模塊。
用戶管理:可以設(shè)置用戶信息、指定用戶密碼、允許或禁止用戶參加協(xié)同等;對(duì)用戶身份按首級(jí)用戶、次級(jí)用戶、三級(jí)用戶進(jìn)行分級(jí),并且對(duì)次級(jí)用戶的優(yōu)先順序進(jìn)行排序;對(duì)用戶的權(quán)限進(jìn)行控制。
協(xié)同控制:負(fù)責(zé)啟動(dòng)和結(jié)束協(xié)同工作,當(dāng)用戶方出現(xiàn)故障時(shí),協(xié)助用戶方進(jìn)行數(shù)據(jù)恢復(fù),并對(duì)后加入的用戶進(jìn)行管理,使其快速融入?yún)f(xié)同工作。
協(xié)同客戶端主要負(fù)責(zé)對(duì)具體事件的分析處理,在結(jié)合綜合情況的基礎(chǔ)上給出本部門對(duì)事件的處理意見,并把意見及時(shí)傳達(dá)給指揮中心。協(xié)同客戶端包括標(biāo)繪管理、語音管理、文字交流、協(xié)同控制、地圖管理五個(gè)公共模塊,另外還有一個(gè)根據(jù)各個(gè)部門的職能設(shè)置的模塊,其中地圖標(biāo)注和地圖管理這兩個(gè)模塊。介紹如下:
地圖標(biāo)注:指多個(gè)決策指揮機(jī)構(gòu)或者人員在同一幅地圖上標(biāo)繪決策指揮信息,以借助地圖來完成應(yīng)急協(xié)同工作。多個(gè)遠(yuǎn)程客戶端連接都同一個(gè)服務(wù)器端以后,可以進(jìn)行協(xié)同標(biāo)繪,同步顯示所有標(biāo)繪內(nèi)容,實(shí)現(xiàn)所有客戶端的協(xié)同作業(yè)。
地圖管理:系統(tǒng)地圖數(shù)據(jù)分為兩部分:第一部分是本地地圖,地圖數(shù)據(jù)源和地圖文檔都放在客戶端機(jī)器上,作為系統(tǒng)底圖使用,內(nèi)容包括基礎(chǔ)行政區(qū)劃圖、影像和DEM等,用于確定地理位置和范圍等。第二部分為網(wǎng)絡(luò)地圖,以網(wǎng)絡(luò)地圖服務(wù)的形式存在,客戶端只有mxd地圖文檔、lyr圖層文件或WMS圖層連接字符串,客戶端不能獲取真實(shí)地圖數(shù)據(jù),只能得到圖層繪制出來的圖片。地圖管理重點(diǎn)針對(duì)第二部分,以解決數(shù)據(jù)的保密問題,保證數(shù)據(jù)的安全性。
協(xié)同服務(wù)器和協(xié)同客戶端都具有數(shù)據(jù)庫,來存儲(chǔ)管理協(xié)同工作的信息。對(duì)于涉及地理信息的數(shù)據(jù),引入ArcSDE(空間數(shù)據(jù)庫引擎)來輔助數(shù)據(jù)的管理。
(1)服務(wù)器端和客戶端實(shí)現(xiàn)
CoGIS的實(shí)現(xiàn)包括服務(wù)器端實(shí)現(xiàn)和客戶端實(shí)現(xiàn)兩部分。其中服務(wù)器端實(shí)現(xiàn)包括注冊(cè)通道和注冊(cè)遠(yuǎn)程對(duì)象。通道是跨越應(yīng)用程序域進(jìn)行通信的基礎(chǔ)。Remoting提供了包含TcpChannel和包含HttpChannel兩種類型的通道的 IChannel接口。TcpChannel和 HttpChannel除了性能和序列化數(shù)據(jù)的格式不同外實(shí)現(xiàn)的方式完全一致。
當(dāng)通道完成注冊(cè)時(shí),如果想激活遠(yuǎn)程對(duì)象,必須在通道中注冊(cè)該對(duì)象。注冊(cè)對(duì)象的方法根據(jù)激活模式的不同分為SingleCall模式和SingleTon模式,系統(tǒng)采用SingleTon模式注冊(cè)。如果要關(guān)閉Remoting的服務(wù),可以關(guān)閉對(duì)通道的監(jiān)聽,也可以注銷通道。
客戶端實(shí)現(xiàn)包括注冊(cè)通道,獲得遠(yuǎn)程對(duì)象兩部分。客戶端首先要注冊(cè)通道,因?yàn)镽emoting中服務(wù)器端和客戶端都必須使用通道來傳遞消息,以獲得遠(yuǎn)程對(duì)象。與服務(wù)器端相同,不同的激活模式?jīng)Q定了客戶端的實(shí)現(xiàn)方式也將不同。這個(gè)區(qū)別僅僅是WellKnown激活模式和客戶端激活模式之間的區(qū)別,而對(duì)于SingleTon和SingleCall模式,客戶端的實(shí)現(xiàn)完全相同。
(2)Element信息的傳遞
Element是一個(gè)非常龐大復(fù)雜的對(duì)象集合,可以在地圖中標(biāo)識(shí)重要信息、范圍、傳達(dá)和地理信息相關(guān)的重要信息[6]。所以關(guān)于解決 Element傳遞問題非常必要。因?yàn)镋lement具有類型、名字、長度、顏色等屬性。不能直接進(jìn)行傳遞,需要序列化后才可以通過信道傳遞。Element序列化的方法可以分為兩種,一種是序列化為Xml文檔,另一種方法是序列化字符流。如圖3所示。
圖3 Element序列化方法圖
Element信息的傳遞分為三個(gè)步驟,第一步,判斷是否本地計(jì)算機(jī)出發(fā)的Element信息的添加、刪除、更新事件;第二步,對(duì)Element操作信息進(jìn)行標(biāo)識(shí)以及序列化;第三步,將本機(jī)的添加、刪除與更新操作以及信息發(fā)送到服務(wù)器,服務(wù)器及時(shí)將操作信息發(fā)送給各個(gè)參與協(xié)同工作的客戶端;如下圖所示:第四步,及時(shí)執(zhí)行接收到的Element操作信息。依據(jù)以上原理和思路構(gòu)建的CoGIS原型系統(tǒng),其客戶端運(yùn)行結(jié)果如圖4所示:
圖4 原型系統(tǒng)運(yùn)行圖
當(dāng)在一個(gè)客戶端標(biāo)注綠色箭頭和紅色警戒區(qū)域時(shí),其他異地的客戶端會(huì)實(shí)時(shí)的顯示出這個(gè)標(biāo)注,異地客戶端可以添加標(biāo)注,或者刪除標(biāo)注,其操作,也會(huì)在其他客戶端實(shí)時(shí)表現(xiàn)出來。
基于.NET Remoting的CoGIS可以實(shí)時(shí)的傳遞元素Element信息,能達(dá)到不同地域的專家、協(xié)同工作的參與者實(shí)時(shí)的交換信息共同完成一項(xiàng)任務(wù)的目的,其應(yīng)用將有效的解決不同地域?qū)<业膮f(xié)同會(huì)商,不同部門如公安、消防、衛(wèi)生、電力等部門間的協(xié)作救援,將極大地改善指揮中心與應(yīng)急現(xiàn)場(chǎng)的信息溝通,為制定科學(xué)的應(yīng)急方案,進(jìn)行快速的救援,減少人民生命財(cái)產(chǎn)安全所用;其缺點(diǎn)是協(xié)同功能添加在每個(gè)獨(dú)立GIS終端上,當(dāng)用戶較多時(shí),實(shí)現(xiàn)起來比較困難。
[1]李人厚,鄭慶華,鮑家元.CSCW 的概念_結(jié)構(gòu)_理論與應(yīng)用[J].計(jì)算機(jī)工程與應(yīng)用,1997,2:28~32
[2]胡雪蓮,程承旗,孫永軍等.CoGIS_CoGIS概念初探[J].中國圖像圖形學(xué)報(bào),2003,8(6):715~720
[3]崔修濤,熊云被,顧君忠等.基于T.120的CoGIS研究[J].計(jì)算機(jī)工程,2006,32(6):100 ~102
[4]程承旗,胡雪蓮,馬藹乃.COGIS概念及體系結(jié)構(gòu)研究[J].地理信息世界,2003,1(1):23~29
[5]Christian Nagel,Bill Evjen,Jay Glynn.C#高級(jí)編程[M].北京:清華大學(xué)出版社,2008
[6]劉仁義,劉南.ArcGIS開發(fā)寶典-從入門到精通[M].北京:科學(xué)出版社,2006