江嘯,史浩山,陳丁劍
GIS(Geographic Information System,地理信息系統(tǒng))是利用電子計算機(jī)以及外部設(shè)備采集、存儲、描述和分析地理信息的系統(tǒng)[1]。隨著互聯(lián)網(wǎng)的發(fā)展,Web GIS[2]為用戶提供了更加便利的地理信息服務(wù)。相比桌面GIS軟件,Web GIS存在以下諸多優(yōu)點(diǎn):(1)有利于信息共享。用戶可以在任何時間和地點(diǎn)對服務(wù)器進(jìn)行訪問,擴(kuò)大了數(shù)據(jù)的使用范圍和利用效率;(2)與平臺無關(guān)性。無論客戶端/服務(wù)器是何種機(jī)器,用戶都可以對Web GIS服務(wù)器進(jìn)行訪問,實(shí)現(xiàn)遠(yuǎn)程異構(gòu)數(shù)據(jù)的共享;(3)系統(tǒng)成本降低。Web GIS利用通用的瀏覽器進(jìn)行信息發(fā)布,這樣就降低了用戶的經(jīng)濟(jì)負(fù)擔(dān),同時也使得客戶端不需要維護(hù),減少了系統(tǒng)的維護(hù)費(fèi)用。
傳統(tǒng)的Web GIS系統(tǒng)一般具有以下幾個結(jié)構(gòu)層次:用于提供GIS數(shù)據(jù)的數(shù)據(jù)服務(wù)器、提供GIS數(shù)據(jù)獲取與處理的GIS服務(wù)層、用于實(shí)現(xiàn)業(yè)務(wù)功能并與客戶端及GIS服務(wù)器交互的Web服務(wù)層以及系統(tǒng)的客戶端。
客戶端:客戶端通常是指在廣域網(wǎng)或者局域網(wǎng)內(nèi)的客戶端程序,比如IE,F(xiàn)irefox,Netscape,Mozilla等,用戶在界面(網(wǎng)頁)上發(fā)出服務(wù)請求,此時客戶端程序通過HTTP或者TCP/IP協(xié)議與服務(wù)器建立通信,將請求傳遞給適當(dāng)?shù)姆?wù)器,最終將服務(wù)器返回的結(jié)果顯示在界面(網(wǎng)頁)上。
GIS服務(wù)層:GIS服務(wù)層是實(shí)現(xiàn)GIS功能的主要場所,承載著所有GIS數(shù)據(jù)的處理任務(wù),它可以從Web服務(wù)層接收GIS請求,并對其進(jìn)行處理,最終將處理的結(jié)果返回給客戶端。
Web服務(wù)層:Web服務(wù)層介于客戶端和GIS服務(wù)層之間,將應(yīng)用程序通過Web服務(wù)器(IIS)發(fā)布到網(wǎng)絡(luò)中,這樣客戶端就可以通過訪問地址直接與系統(tǒng)(網(wǎng)站)進(jìn)行交互,傳遞客戶端請求并獲取服務(wù)端提供的結(jié)果。
數(shù)據(jù)服務(wù)層:數(shù)據(jù)服務(wù)層主要儲存系統(tǒng)所需的數(shù)據(jù),包括空間信息數(shù)據(jù),屬性信息數(shù)據(jù)以及業(yè)務(wù)信息數(shù)據(jù)。
可以看到,傳統(tǒng)Web GIS系統(tǒng)是基于瘦客戶端的實(shí)現(xiàn)的,用戶所有的請求必須通過服務(wù)器端響應(yīng),處理完成后將結(jié)果返回到客戶端。然而在電力系統(tǒng)中,當(dāng)客戶端和服務(wù)端數(shù)據(jù)交換較大,數(shù)據(jù)更新較多,尤其是刷新實(shí)時數(shù)據(jù)時,客戶端瀏覽器會向服務(wù)器提交整個網(wǎng)頁并白屏等待服務(wù)器的響應(yīng),然后重新解析整個頁面并實(shí)現(xiàn)數(shù)據(jù)更新??蛻舳隧憫?yīng)比較緩慢,從而影響用戶體驗(yàn)。針對這一致命缺點(diǎn),本文提出一種胖客戶端的Web GIS實(shí)現(xiàn)方案,開發(fā)出ActiveX控件,通過Web Service將地圖文件下載到客戶端本地,使用ActiveX控件提供的接口打開地圖,把數(shù)據(jù)交互,更新等功能封裝在ActiveX控件中??蛻舳嗽跒g覽,縮放地圖時實(shí)際上是操作本地文件而不需要與服務(wù)端進(jìn)行交互。查看電力設(shè)備歷史數(shù)據(jù),實(shí)時數(shù)據(jù)時,ActiveX控件通過服務(wù)端提供的Web Service獲取數(shù)據(jù)然后顯示出來。通過這樣的實(shí)現(xiàn)方案,用戶不管在普通的瀏覽地圖還是查看電力設(shè)備的臺帳信息以及監(jiān)控實(shí)時數(shù)據(jù)時都有更為流暢的體驗(yàn)。
本系統(tǒng)實(shí)現(xiàn)的基本思路是將地圖的顯示,瀏覽,以及電力設(shè)備的歷史數(shù)據(jù)和實(shí)時數(shù)據(jù)顯示等功能封裝在ActiveX控件中實(shí)現(xiàn),使用Web Service發(fā)布和獲取工程數(shù)據(jù),包括下載地圖文件,獲取歷史數(shù)據(jù)和實(shí)時數(shù)據(jù)等??蛻舳耸褂帽鞠到y(tǒng)時先安裝ActiveX控件,然后可以打開地圖,進(jìn)行各種操作。
ActiveX控件[3]以前也叫做OLE控件或OCX控件,它是一些軟件組件或?qū)ο?,可以將其插入到WEB應(yīng)用程序中。一個典型的ActiveX控件包括設(shè)計時和運(yùn)行時的用戶界面,唯一的IDispatch接口定義控件的方法和屬性,唯一的IConnectionPoint接口用于控件可引發(fā)的事件。并且ActiveX腳本支持最常用腳本語言如JavaScript。
本系統(tǒng)ActiveX控件是基于SuperMap提供的控件庫Objects進(jìn)行的二次開發(fā)。SuperMap Objects是以COM/ActiveX技術(shù)規(guī)范為基礎(chǔ)的全組件式GIS,總共包括十二個控件,其中包含兩個核心控件:工作空間控件和地圖控件。SuperWorkspace控件主要完成數(shù)據(jù)的組織、管理、處理,包括打開、關(guān)閉、新建、保存工作空間文件(*.smw),新建、打開數(shù)據(jù)源文件(*.sdb),修復(fù)、壓縮數(shù)據(jù)源文件,字體文件的載入,卸載等等。SuperMap控件用于顯示地圖、地圖圖層管理、地圖放大、縮小以及其他與地圖有關(guān)的操作。ActiveX控件使用VS2008開發(fā)工具,C#編程語言進(jìn)行開發(fā),封裝一系列接口供JavaScript腳本調(diào)用以實(shí)現(xiàn)相應(yīng)的功能。
(1)打開/關(guān)閉工程:通過使用SuperMap Objects提供的SuperWorkspace控件來實(shí)現(xiàn)。調(diào)用SuperWorkspace控件提供的SuperWorkspace.Open()方法打開工作空間文件(*.smw),在ActiveX控件界面上放置樹形控件Treeview以顯示當(dāng)前工作空間中地圖列表。雙擊某一個地圖名則在SuperMap控件打開對應(yīng)的地圖。調(diào)用SuperWorkspace控件提供的SuperWorkspace.Close()方法關(guān)閉工程,釋放相應(yīng)的資源。
(2)地圖的顯示、瀏覽和放大縮小等:在ActiveX控件界面上放置SuperMap控件以顯示地圖。地圖的瀏覽、放大縮小則調(diào)用SuperMap提供的相應(yīng)接口實(shí)現(xiàn)。
(3)設(shè)備臺帳信息[4]查詢:查看電力設(shè)備的臺帳信息,主要包括每個設(shè)備的基本規(guī)范,技術(shù)參數(shù),附屬設(shè)備、缺陷、變更等等。設(shè)備臺帳信息存儲在服務(wù)器歷史數(shù)據(jù)庫中,通過查詢歷史數(shù)據(jù)庫獲取對應(yīng)設(shè)備的臺帳信息,顯示在界面上。
(4)查看實(shí)時數(shù)據(jù):查看每個設(shè)備的電壓值,電流值等以便工程人員進(jìn)行監(jiān)測和控制。實(shí)時數(shù)據(jù)通過電力監(jiān)控系統(tǒng)的實(shí)時數(shù)據(jù)代理獲取。通過創(chuàng)建一個實(shí)時數(shù)據(jù)代理,調(diào)用代理的數(shù)據(jù)訪問口ResourceDescription get_values(ResourceID resource,PropertySequence properties)獲取實(shí)時數(shù)據(jù),顯示在地圖上面,并且以一定的頻率進(jìn)行刷新。
(5)設(shè)備定位功能:在地圖上定位到想要查找的某個設(shè)備,并高亮顯示。當(dāng)?shù)貓D較大,電力設(shè)備較多時,手動查找某個設(shè)備的位置可能是比較困難的,提供設(shè)備定位功能方便工程人員定位特定的電力設(shè)備。
從表面上看,Web Service[5]就是一個應(yīng)用程序,它向外界暴露出一個能夠通過Web進(jìn)行調(diào)用的API。從深層次上看,Web Service是一種新的Web應(yīng)用程序分支,它們是自包含、自描述、模塊化的應(yīng)用,可以在網(wǎng)絡(luò)(通常為Web)中被描述、發(fā)布、查找以及通過Web來調(diào)用。Web Service是基于網(wǎng)絡(luò)的、分布式的模塊化組件,它執(zhí)行特定的任務(wù),遵守具體的技術(shù)規(guī)范,這些規(guī)范使得Web Service能與其他兼容的組件進(jìn)行互操作。它可以使用標(biāo)準(zhǔn)的互聯(lián)網(wǎng)協(xié)議,像超文本傳輸協(xié)議HTTP和XML,將功能體現(xiàn)在互聯(lián)網(wǎng)和企業(yè)內(nèi)部網(wǎng)上。Web Service平臺是一套標(biāo)準(zhǔn),它定義了應(yīng)用程序如何在Web上實(shí)現(xiàn)互操作性。
本系統(tǒng)中Web Service的主要應(yīng)用:
(1)傳送地圖文件:客戶端使用瀏覽器瀏覽WebGIS頁面之前本地文件系統(tǒng)是沒有地圖文件的,本系統(tǒng)在服務(wù)器端使用Web Service發(fā)布Web服務(wù),將服務(wù)器端的地圖文件轉(zhuǎn)化為字節(jié)流,提供一個發(fā)送文件的接口。ActiveX控件中調(diào)用Web服務(wù),接收字節(jié)流,還原成為地圖文件。
(2)獲取工程數(shù)據(jù):工程數(shù)據(jù)主要是設(shè)備單元實(shí)時數(shù)據(jù)和歷史數(shù)據(jù)。ActiveX控件提供的功能中需要用到實(shí)時數(shù)據(jù)和歷史數(shù)據(jù)。通過在服務(wù)端發(fā)布提供查詢歷史數(shù)據(jù)和實(shí)時數(shù)據(jù)的接口,在ActiveX控件調(diào)用相應(yīng)的接口獲取數(shù)據(jù),完成相應(yīng)功能。
本文介紹了一種基于ActiveX和Web Service的電力系統(tǒng)WebGIS的設(shè)計與實(shí)現(xiàn)方案,相對于傳統(tǒng)的WebGIS開發(fā)方式,本文提出了一種胖客戶端的實(shí)現(xiàn)方案,大大減輕了服務(wù)端的負(fù)載,客戶端也能獲得良好的使用效果。
[1]李軒.地理信息系統(tǒng)的設(shè)計、實(shí)現(xiàn)與發(fā)展[M].中國新技術(shù)新產(chǎn)品,2009/21.
[2]項(xiàng)彩虹.基于ActiveX和WebService的WebGIS分布式實(shí)現(xiàn)架構(gòu).論文網(wǎng),2006-05-01.
[3]王小正.ActiveX控件在B/S結(jié)構(gòu)題庫系統(tǒng)開發(fā)中的應(yīng)用[J].電腦知識與技術(shù),2008/S2.
[4]李毅強(qiáng).電力自動化系統(tǒng)控制分析[J].中小企業(yè)管理與科技(下旬刊)2009/10.
[5]徐建琳.基于Web服務(wù)的客戶關(guān)系管理系統(tǒng)[J].計算機(jī)工程,2009/19.