王忠波
(嘉興市國土資源局,浙江 嘉興 314000)
協(xié)同地理信息系統(tǒng)(Cooperative Geographic Information System)又名CoGIS是構(gòu)建于地理信息系統(tǒng)上的協(xié)同工作平臺,為地域分散的群體用戶提供協(xié)調(diào)與協(xié)作完成特定任務(wù)的環(huán)境。本文討論了CoGIS的概念,然后基于 Microsoft.Net Remoting技術(shù),利用 Arc-GIS Engine開發(fā)組件以及Visual Studio 2005開發(fā)平臺,初步實現(xiàn)了CoGIS功能。
面向群體用戶,CoGIS提供一個工作平臺,群體用戶以此平臺進行空間信息編輯、加工、會商、分析、決策,共同完成一項復(fù)雜的工作,它可訪問共享的多種信息,這種新型的地理信息系統(tǒng)我們可以統(tǒng)稱其為協(xié)同地理信息系統(tǒng)(Cooperative GIS,簡稱CoGIS)。CoGIS技術(shù)的目的和實質(zhì)是:利用通信技術(shù)和計算機技術(shù)建立一個基于GIS的協(xié)同工作環(huán)境,在此環(huán)境中人們可以共同工作、互相合作,一起致力于一個項目或一個研究領(lǐng)域,或解決一個學(xué)術(shù)上的難題等[1]。于是CoGIS可以定義為:一組或多組異地的用戶,借助計算機及其網(wǎng)絡(luò)技術(shù),基于地理信息共同協(xié)調(diào)與合作來完成一項任務(wù)[2]。此外,有文獻講 GIS與 CSCW(Computer Supported Cooperative Work)的結(jié)合便產(chǎn)生CoGIS(Collaborative GIS)簡稱 CoGIS[3]。
CoGIS形式是合作,關(guān)鍵是協(xié)調(diào),要求多點實時通訊,是一種支持人們在共享環(huán)境下共同完成同一件涉及GIS的群體工作的計算機應(yīng)用系統(tǒng)[4],CoGIS從技術(shù)和理論上研究和解決人們是如何基于地理信息進行群體協(xié)作的;應(yīng)提供什么樣的技術(shù)手段以幫助人們進行基于地理信息的合作。
CoGIS要求各個客戶端之間能夠自由通信,交流工作信息,Microsoft.NET Remoting提供了一種允許對象通過應(yīng)用程序域與另一對象進行交互的框架,.NET Remoting的體系結(jié)構(gòu)主要元素有:遠程對象、信道、消息、格式標(biāo)識符、格式標(biāo)識符提供程序、代理對象、消息接收器、RemotingConfiguration類以及ChannelServices類。
透明代理對象上的方法當(dāng)客戶機調(diào)用遠程對象上的方法時實際上被調(diào)用。然后,透明代理對象調(diào)用真實代理對象。真實的代理對象負責(zé)把消息發(fā)送到信道中去。真實代理對象的默認執(zhí)行方式是查找特使接收器的集合,并把消息傳遞給第一個特使接收器。特使接收器可以截取和改變消息[5]。
最后一個特使接收器把消息發(fā)送到信道中。.NET Framework 2.0提供了二進制格式標(biāo)識符和SOAP格式標(biāo)識符。信道負責(zé)發(fā)送已格式化的數(shù)據(jù),或者負責(zé)連接到服務(wù)器的監(jiān)聽網(wǎng)絡(luò)接口上。僅需執(zhí)行代碼來定制信道的功能,就可以完成把數(shù)據(jù)傳輸?shù)搅硪欢说谋匾ぷ?。服?wù)器端的消息傳送如圖1所示:

圖1 服務(wù)器端的消息傳送
信道接收來自客戶機的已格式化消息,并且使用格式標(biāo)識符解開消息中的SOAP或二進制數(shù)據(jù)。然后,信道調(diào)用服務(wù)器環(huán)境接收器。服務(wù)器環(huán)境接收器是一個接收器鏈,鏈中的最后一個接收器繼續(xù)調(diào)用對象環(huán)境接收器鏈[5]。最后一個對象環(huán)境接收器調(diào)用遠程對象上的方法。
CoGIS總體框架如圖2所示:

圖2 CoGIS總體框架圖
協(xié)同服務(wù)器主要對整個CoGIS進行管理,包含用戶管理、文件管理、標(biāo)繪管理、語音通信、文字交流、協(xié)同控制6個模塊,下面重點介紹用戶管理和協(xié)同管理兩個模塊。
用戶管理:可以設(shè)置用戶信息、指定用戶密碼、允許或禁止用戶參加協(xié)同等;對用戶身份按首級用戶、次級用戶、三級用戶進行分級,并且對次級用戶的優(yōu)先順序進行排序;對用戶的權(quán)限進行控制。
協(xié)同控制:負責(zé)啟動和結(jié)束協(xié)同工作,當(dāng)用戶方出現(xiàn)故障時,協(xié)助用戶方進行數(shù)據(jù)恢復(fù),并對后加入的用戶進行管理,使其快速融入?yún)f(xié)同工作。
協(xié)同客戶端主要負責(zé)對具體事件的分析處理,在結(jié)合綜合情況的基礎(chǔ)上給出本部門對事件的處理意見,并把意見及時傳達給指揮中心。協(xié)同客戶端包括標(biāo)繪管理、語音管理、文字交流、協(xié)同控制、地圖管理五個公共模塊,另外還有一個根據(jù)各個部門的職能設(shè)置的模塊,其中地圖標(biāo)注和地圖管理這兩個模塊。介紹如下:
地圖標(biāo)注:指多個決策指揮機構(gòu)或者人員在同一幅地圖上標(biāo)繪決策指揮信息,以借助地圖來完成應(yīng)急協(xié)同工作。多個遠程客戶端連接都同一個服務(wù)器端以后,可以進行協(xié)同標(biāo)繪,同步顯示所有標(biāo)繪內(nèi)容,實現(xiàn)所有客戶端的協(xié)同作業(yè)。
地圖管理:系統(tǒng)地圖數(shù)據(jù)分為兩部分:第一部分是本地地圖,地圖數(shù)據(jù)源和地圖文檔都放在客戶端機器上,作為系統(tǒng)底圖使用,內(nèi)容包括基礎(chǔ)行政區(qū)劃圖、影像和DEM等,用于確定地理位置和范圍等。第二部分為網(wǎng)絡(luò)地圖,以網(wǎng)絡(luò)地圖服務(wù)的形式存在,客戶端只有mxd地圖文檔、lyr圖層文件或WMS圖層連接字符串,客戶端不能獲取真實地圖數(shù)據(jù),只能得到圖層繪制出來的圖片。地圖管理重點針對第二部分,以解決數(shù)據(jù)的保密問題,保證數(shù)據(jù)的安全性。
協(xié)同服務(wù)器和協(xié)同客戶端都具有數(shù)據(jù)庫,來存儲管理協(xié)同工作的信息。對于涉及地理信息的數(shù)據(jù),引入ArcSDE(空間數(shù)據(jù)庫引擎)來輔助數(shù)據(jù)的管理。
(1)服務(wù)器端和客戶端實現(xiàn)
CoGIS的實現(xiàn)包括服務(wù)器端實現(xiàn)和客戶端實現(xiàn)兩部分。其中服務(wù)器端實現(xiàn)包括注冊通道和注冊遠程對象。通道是跨越應(yīng)用程序域進行通信的基礎(chǔ)。Remoting提供了包含TcpChannel和包含HttpChannel兩種類型的通道的 IChannel接口。TcpChannel和 HttpChannel除了性能和序列化數(shù)據(jù)的格式不同外實現(xiàn)的方式完全一致。
當(dāng)通道完成注冊時,如果想激活遠程對象,必須在通道中注冊該對象。注冊對象的方法根據(jù)激活模式的不同分為SingleCall模式和SingleTon模式,系統(tǒng)采用SingleTon模式注冊。如果要關(guān)閉Remoting的服務(wù),可以關(guān)閉對通道的監(jiān)聽,也可以注銷通道。
客戶端實現(xiàn)包括注冊通道,獲得遠程對象兩部分。客戶端首先要注冊通道,因為Remoting中服務(wù)器端和客戶端都必須使用通道來傳遞消息,以獲得遠程對象。與服務(wù)器端相同,不同的激活模式?jīng)Q定了客戶端的實現(xiàn)方式也將不同。這個區(qū)別僅僅是WellKnown激活模式和客戶端激活模式之間的區(qū)別,而對于SingleTon和SingleCall模式,客戶端的實現(xiàn)完全相同。
(2)Element信息的傳遞
Element是一個非常龐大復(fù)雜的對象集合,可以在地圖中標(biāo)識重要信息、范圍、傳達和地理信息相關(guān)的重要信息[6]。所以關(guān)于解決 Element傳遞問題非常必要。因為Element具有類型、名字、長度、顏色等屬性。不能直接進行傳遞,需要序列化后才可以通過信道傳遞。Element序列化的方法可以分為兩種,一種是序列化為Xml文檔,另一種方法是序列化字符流。如圖3所示。

圖3 Element序列化方法圖
Element信息的傳遞分為三個步驟,第一步,判斷是否本地計算機出發(fā)的Element信息的添加、刪除、更新事件;第二步,對Element操作信息進行標(biāo)識以及序列化;第三步,將本機的添加、刪除與更新操作以及信息發(fā)送到服務(wù)器,服務(wù)器及時將操作信息發(fā)送給各個參與協(xié)同工作的客戶端;如下圖所示:第四步,及時執(zhí)行接收到的Element操作信息。依據(jù)以上原理和思路構(gòu)建的CoGIS原型系統(tǒng),其客戶端運行結(jié)果如圖4所示:

圖4 原型系統(tǒng)運行圖
當(dāng)在一個客戶端標(biāo)注綠色箭頭和紅色警戒區(qū)域時,其他異地的客戶端會實時的顯示出這個標(biāo)注,異地客戶端可以添加標(biāo)注,或者刪除標(biāo)注,其操作,也會在其他客戶端實時表現(xiàn)出來。
基于.NET Remoting的CoGIS可以實時的傳遞元素Element信息,能達到不同地域的專家、協(xié)同工作的參與者實時的交換信息共同完成一項任務(wù)的目的,其應(yīng)用將有效的解決不同地域?qū)<业膮f(xié)同會商,不同部門如公安、消防、衛(wèi)生、電力等部門間的協(xié)作救援,將極大地改善指揮中心與應(yīng)急現(xiàn)場的信息溝通,為制定科學(xué)的應(yīng)急方案,進行快速的救援,減少人民生命財產(chǎn)安全所用;其缺點是協(xié)同功能添加在每個獨立GIS終端上,當(dāng)用戶較多時,實現(xiàn)起來比較困難。
[1]李人厚,鄭慶華,鮑家元.CSCW 的概念_結(jié)構(gòu)_理論與應(yīng)用[J].計算機工程與應(yīng)用,1997,2:28~32
[2]胡雪蓮,程承旗,孫永軍等.CoGIS_CoGIS概念初探[J].中國圖像圖形學(xué)報,2003,8(6):715~720
[3]崔修濤,熊云被,顧君忠等.基于T.120的CoGIS研究[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#高級編程[M].北京:清華大學(xué)出版社,2008
[6]劉仁義,劉南.ArcGIS開發(fā)寶典-從入門到精通[M].北京:科學(xué)出版社,2006