聶 晉
廣東威創視訊科技股份有限公司,廣東廣州 510630
GIS在軍隊、公安和武警等領域的應用已經非常廣泛,軍事戰略分析、力量部署、態勢推演等,這些領域的應用,對GIS系統的要求不僅僅是信息的展示和發布,還有一些特殊的應用需求,這些需求是基于GIS平臺的深入應用,但GIS系統自身功能并不能滿足,所以就需要另外進行分析設計開發來滿足。
GIS基本概念。GIS(Geography Information System,地理信息系統)是融合計算機圖形和數據庫于一體,用來存儲和處理空間信息的高新技術,它把地理位置和相關屬性有機地結合起來,根據用戶的需要將空間信息及其屬性信息準確真實、圖文并茂地輸出給用戶,滿足城市建設、企業管理、居民生活對空間信息的要求,借助其獨有的空間分析功能和可視化表達功能,進行各種輔助決策。
在軍隊、武警和公安行業的業務中,很多時候需要在GIS系統平臺上進行跨部門,甚至跨單位聯合進行案例分析、力量部署標注和態勢推演標注,所以多個協同部門都要用到同一副地圖,并在地圖上進行分析,標注力量投放圖標,如果使用單機的方式,必定有一個先后次序,甚至相互干擾,顯然不能滿足快速協同作戰的需要。
GIS分布式互動圖標標注及地圖顯示控制技術解決了同一局域網內多個客戶端同時對同一副地圖進行操作,多個用戶可以同時操作標注圖標,相互協同工作,地圖上所作更改可在各個客戶端實時同步顯示。這項技術滿足了例如武警、公安、部隊等行業對于軍事戰略分析和力量部署推演等進行實時信息交流和互動操作的需要,與行業業務結合更緊密,可有力推進這些行業的信息化、數字化。
基于客戶端(Client)/服務端(Server)架構是目前常用成熟的軟件結構解決方案。她的特點是能充分發揮客戶端PC的處理能力,客戶端響應速度快,各客戶端的操作和數據可以通過服務端實時轉發到所有客戶端,保持信息和操作的同步性和實時性,見圖1。

圖1 系統結構
系統由以下模塊組成:
1)數據庫,用于存放GIS地圖數據和業務數據,可采用MS SQL Server等支持多用戶并發訪問的數據庫,使用GIS平臺軟件,將GIS地圖數據導入到數據庫中作為電子地圖數據源,數據庫可安裝在單獨的一臺數據庫服務器上以提升性能;
2)服務端軟件,用于運行服務端軟件,服務端軟件用于消息轉發,同步所有客戶端的數據和操作信息,服務端軟件可安裝在單獨的一臺機器上以提升性能;
3)客戶端,實現對GIS地圖的操作功能,采用GIS地圖控件訪問地圖數據庫,將地圖數據下載到客戶端并顯示,客戶端的數據和操作通過TCP/IP通訊協議傳送給服務端軟件,服務端軟件將其轉發到其余客戶端,客戶端需要同步的數據和操作有:
(1)電子地圖的任意移動和縮放操作;
(2)同步地圖比例尺;
(3)同步所有圖標標注信息,以及對圖標的操作信息;
4)無線通信模塊,用于使用遙控器控制地圖的操作,如控制地圖的上下左右移動,控制地圖的放大縮小,方便快捷。
1)地圖數據準備
使用GIS平臺工具,將電子地圖導入到數據庫中,并增加一個復合圖層,作為標圖、繪圖圖層,并且設置成可編輯狀態。系統運行時必須保證數據庫正常,并且與數據庫服務器的網絡通訊正常。請參考圖2。
2)服務端啟動
服務端可設置成系統啟動時自動啟動,服務端程序啟動后自動開始監聽客戶端的連接,每接受一個客戶端的連接服務端都會啟動一個處理線程,服務端可接受的客戶端數量理論上沒有限制。服務端通過心跳檢測功能檢測客戶端的連接,如果檢測到客戶端的連接中斷,服務端就會自動退出該處理線程并釋放相關資源。

圖2 軟件執行步驟
3)客戶端使用操作步驟
客戶端啟動。向數據庫服務器請求地圖數據,將地圖數據下載到客戶端軟件的GIS地圖控件中并顯示,其余客戶端采用同樣的操作將同一副地圖顯示出來。
客戶端同步標注圖標。用戶將圖標標注在地圖上指定位置,此時觸發GIS地圖控件將標注的圖標數據保存到數據庫,同時觸發同步通訊,將圖標標注指令碼、圖標的唯一ID號及位置參數打包并發送給服務端軟件,服務端軟件接收數據包,立即轉發給已連接的其他所有客戶端,客戶端取得服務端傳送數據包,將數據解析出來,依據指令碼觸發GIS地圖控件在自己的地圖上相同的位置標注出相同的圖標。
其余圖標操作過程。圖標的移動、縮放、旋轉、拷貝、刪除、增加文字標注等原理與圖標標注基本相同,只是指令碼及傳送的參數有所區別;
電子地圖自身的操作。地圖的縮放、移動、同步比例尺等也采用同樣的工作原理,達到所有客戶端操作和顯示實時同步。
客戶端遙控器操作。使用遙控器操作客戶端地圖,例如地圖的縮放,移動,如果客戶端設置成主控的話,那么遙控器就可以同時控制其他所有客戶端地圖的移動和縮放。
1)圖標在地圖上自由標注,包括圖標、幾何圖形等;
2)圖標的移動、等比例縮放、旋轉、閃爍、拷貝、粘貼、修改、刪除操作;
3)在圖標上添加描述文字,設置圖標的顏色屬性;
4)各客戶端地圖可主動與地圖比例尺提供端進行比例尺同步;
5)主控客戶端可控制其余客戶端地圖的移動縮放;
6)各客戶端實時保存GIS地圖上標注對象;
7)各客戶端地圖上所有標注對象顯示同步;
8)各客戶端使用鳥瞰圖以實現快速定位;
9)各客戶端的地圖基本操作使用遙控器實現,例如移動、縮放。
軟件的工作原理就是基于GIS平臺的采用C/S架構實現多個客戶端的操作同步。
3.4.1 客戶端設計
客戶端與數據庫的通訊交由GIS平臺處理,我們這里需要傳入連接數據庫參數,包括數據庫服務器地址、地圖工作空間名稱、數據庫登錄用戶名稱和密碼,參見后面的客戶端參數說明。GIS平臺控件負責將GIS地圖從數據庫中取出,并顯示出來。當用戶在地圖上做某項操作,同時檢測是否要同步所有客戶端選項參數,如果需要同步,客戶端會啟動一個通訊線程,將需要同步的內容組成數據包,發送到服務端。
客戶端通過與服務端建立的通訊連接,接收數據包(請參考下面的數據包結構),并將數據包中的指令和數據取出,在客戶端執行函數,實現該操作。
客戶端參數說明:
1)Server-服務端機器的IP地址或機器名稱;
2)Port-服務端機器的通訊端口;
3)Primary-是否設置本機為主控電腦,設置為主控的客戶端可控制其余客戶端的地圖移動、縮放;
4)User-數據庫登錄用戶名;
5)Password-數據庫登錄密碼;
6)Scale-是否為比例尺提供端,如果是比例尺提供端,當操作地圖縮放時會自動廣播自己地圖比例尺數據給其余客戶端,讓其余客戶端可通過同步比例尺功能與該客戶端地圖比例尺保持同步。
服務端軟件轉發同步信息數據結構如下:
struct GIS_MSG{ BYTE suptype ; //1放大,2縮小,3漫游,4刪除對象或增加對象,5設置中心點,6提供比例尺,7放大+提供比例尺,8縮小+提供比例尺,9漫游+提供比例尺,10刪除對象或增加對象+提供比例尺,11 設置中心點+提供比例尺,12追加跟蹤對象,13 刪除跟蹤對象,14 通知客戶端改變地圖
double param1;//漫游x軸偏移量
double param2;//漫游y軸偏移
double param3;//提供顯示比例尺}
3.4.2 服務端設計
服務端啟動的時候會同時啟動一個監聽線程,如果有客戶端連接,服務端會將這個連接交給一個新的客戶端處理線程繼續進行處理,監聽線程依然可以監聽其他客戶端的連接。服務端與客戶端的連接過程會主動檢測通訊連接是否正常,采用了一種發送心跳包的方式,定期發送心跳檢測,如果不能接受客戶端的心跳檢測回應,那么服務端就會關閉與該客戶端的通訊連接,并將該客戶端的處理線程關閉。
服務端執行的是通訊透明傳輸,對客戶端發送的請求數據包不做任何處理,立即搜尋客戶端連接列表,并將這個數據包轉發給連接列表中的每個客戶端。
3.4.3 遙控器控制設計
在各客戶端軟件啟動時都會監聽預定的串口,如果串口中有操作指令進來,就會呼叫并執行如手工操作電子地圖的執行函數。
這里采用的遙控器是現成的產品,采用無線方式,采用公用頻段,操作指令相對簡單,遙控器上的按鍵發送的碼與客戶端軟件的函數對應起來,實現不同的操作功能。
硬件環境推薦配置:CPU 2GHz以上,內存2GB以上,硬盤120GB以上。
軟件環境:WindowsXP、Windows2000Server(數據庫服務器OS),SQL Server 2000(或其他支持多用戶并發訪問的數據庫),GIS平臺。
GIS分布式互動圖標標注及地圖顯示控制技術,使各個客戶端的數據信息以及操作實時同步,這種技術很好解決了多個客戶端協同操作,數據信息實時共享,在軍隊、武警和公安等的相關業務中采取這項技術具有明顯的優勢,并且這種技術是GIS應用技術拓展的明顯趨勢之一。可以看到使用這項技術的客戶群將比較廣泛,在這些行業中目前正在推進業務的數字化和信息化,我們的技術順應了用戶的應用趨勢,如果能在這些行業中推廣開來無疑可以帶來持久的效益。
[1]侯俊杰.深入淺出MFC[M].2版.華中科技大學出版社,2001.
[2][美]科默.用TCP/IP進行網際互聯第一卷:原理、協議與結構[M].4版.電子工業出版社,2004.