劉讓國 彭會湘 陳莉
(中國電子科技集團公司第五十四研究所河北石家莊050081)
WebGis是實現(xiàn)Internet 環(huán)境下地理空間信息服務(wù)的有效途徑,其核心是將GIS 的功能嵌入到Internet 應(yīng)用體系中[1]。但迫于Web模式本身的能力及HTTP 無狀態(tài)連接協(xié)議的限制,在面臨處理復(fù)雜業(yè)務(wù)邏輯或大數(shù)據(jù)量操作等情況下,很容易引起頁面響應(yīng)變慢,甚至?xí)?dǎo)致瀏覽器崩潰等問題。而基于WebGis的態(tài)勢表達往往涉及復(fù)雜的業(yè)務(wù)邏輯處理和海量標(biāo)繪,需要從前端腳本的代碼優(yōu)化、富客戶端技術(shù)、服務(wù)器端技術(shù)及其他相應(yīng)算法等方面加以研究應(yīng)用,以最大限度的降低頁面請求數(shù),減少頁面元素的數(shù)量,加快頁面響應(yīng)和渲染的速度,增強用戶使用體驗。
傳統(tǒng)的Web技術(shù),已很難滿足WebGis的復(fù)雜應(yīng)用。因此,通常采用富互聯(lián)網(wǎng)應(yīng)用系統(tǒng)(R ich Internet Application,RIA)技術(shù),RIA技術(shù)結(jié)合了桌面應(yīng)用程序的反應(yīng)快、交互性強的優(yōu)點以及Web應(yīng)用程序容易傳播的特性,使得應(yīng)用程序可以提供更豐富、更具有交互性和響應(yīng)性的用戶體驗。以下分別探討基于AJAX、Flex、Silverlight 等RIA技術(shù)的解決方案。
AJAX 采用異步交互模式,如圖1 所示。在客戶端與服務(wù)器端之間引入AJAX 引擎,客戶端接口與AJAX 引擎交互,AJAX 引擎再通過HTTP 傳輸協(xié)議與Web服務(wù)器交互,消除了同步交互模式中的“處理- 等待- 處理- 等待”缺點。使用AJAX 引擎進行數(shù)據(jù)交換時,僅更新用戶需要的數(shù)據(jù),不對整個頁面進行刷新,異步進行而不阻塞用戶,能夠減少冗余數(shù)據(jù)的下載,節(jié)省網(wǎng)絡(luò)帶寬,提高請求的響應(yīng)速度。
圖1 傳統(tǒng)Web應(yīng)用模型和AJAX 應(yīng)用模型圖
主流的WebGis平臺,如ArcGIS Server、Supermap 等,都提供AJAX API。開源免費的OpenLayers 也是一個基于AJAX的WebGis客戶端組件。基于AJAX 的WebGis實現(xiàn),無需在瀏覽器端安裝插件,使用簡單方便,但其矢量標(biāo)繪能力有限,只能采用瀏覽器原生支持的SVG 或VML標(biāo)記語言。因而,態(tài)勢表達能力不足,較適合于態(tài)勢處理簡單且標(biāo)繪量不大的應(yīng)用場合,如一些旅游服務(wù)的WebGis系統(tǒng)、基于地圖的查詢系統(tǒng)等。
Flex是由Adobe 公司推出的一種基于Flash 技術(shù)的富客戶端應(yīng)用解決方案,保持著較大的RIA市場占有率[2]。Flex的運行環(huán)境為Flash Player,實現(xiàn)了跨瀏覽器、跨平臺。Flex使用Action Script 腳本語言編程,采用MXM L 標(biāo)記語言描述界面,基于FlexSDK框架開發(fā),最終編譯形成一個可以在Flash Player 上運行的字節(jié)碼文件,其執(zhí)行效率要高于瀏覽器解釋執(zhí)行的JavaScript 程序。FlexSDK框架提供了封裝完善的界面接口,具備整合Flash 動畫的能力,使得Flex在表現(xiàn)層比較出色。后臺的LCDS 數(shù)據(jù)服務(wù)器用來處理數(shù)據(jù)的傳輸和集成,能夠和Java 等后臺程序進行通信。
主流的商業(yè)WebGis平臺,一般也都提供Flex開發(fā)接口,而基于Flex的開源軟件OpenScales,框架結(jié)構(gòu)類似于OpenLayers,正在迅速發(fā)展,預(yù)計不久將是基于Flex的開源WebGis客戶端的首選。在基于Flex的WebGis系統(tǒng)中,復(fù)雜的處理和繪制渲染將集中到瀏覽器端,雖然減輕了服務(wù)器端的壓力,但對客戶端機器要求較高。對于復(fù)雜的業(yè)務(wù)邏輯處理和海量的數(shù)據(jù)標(biāo)繪渲染,會嚴(yán)重消耗客戶端資源,使系統(tǒng)整體響應(yīng)緩慢,難以達到預(yù)期的用戶體驗。但Flex具有很強的用戶交互性和動畫表現(xiàn)能力,視覺效果好,可用于開發(fā)諸如臺風(fēng)路徑監(jiān)視活動的WebGis系統(tǒng)等。
Silverlight 是微軟推出的一個跨瀏覽器的插件,提供面向Web的基于.NET 的媒體體驗和豐富的交互式應(yīng)用程序[3]。Silverlight 基于.NET Framework 技術(shù),使用XAML語言進行二維矢量圖形的展現(xiàn),可訪問.NET Framework 編程模型和相關(guān)工具,支持目前主流的瀏覽器,包括IE、Firefox、Safari、Opera等。Silverlight 自發(fā)布以來,版本不斷更新,功能持續(xù)增強,市場占有率不斷擴大。市場上主流的商業(yè)WebGis平臺,一般也提供了Silverlight 開發(fā)接口。和Flex類似,基于Silverlight 的WebGis系統(tǒng),瀏覽器端需要安裝插件,其他特點也和Flex類似,無疑使開發(fā)者多了一個選擇。至于其他RIA插件,由于沒有成熟的基于WebGis的應(yīng)用,不再過多探討。
基于客戶端的解決方案,把態(tài)勢表達的處理和渲染集中在瀏覽器端進行,具有較好的人機交互性,但復(fù)雜的業(yè)務(wù)邏輯處理和海量標(biāo)繪則顯得力不從心。如果將復(fù)雜的計算處理放在服務(wù)器端執(zhí)行,則能在一定程度上提高效率。
基于服務(wù)器端的系統(tǒng)架構(gòu),如圖2 所示,分為用戶表現(xiàn)層、業(yè)務(wù)邏輯層和數(shù)據(jù)存儲層。復(fù)雜的業(yè)務(wù)邏輯處理和圖形渲染集中在WebGis服務(wù)器上,WebGis服務(wù)器根據(jù)客戶端請求的類型參數(shù),從空間數(shù)據(jù)庫和屬性數(shù)據(jù)庫中檢索調(diào)用相應(yīng)數(shù)據(jù)并執(zhí)行計算處理,生成具有態(tài)勢表達信息的圖片,并作為一個地理圖層返回給瀏覽器,減少了客戶端和服務(wù)器端之間的通信量和交互頻度,降低了客戶端編程的復(fù)雜性。
圖2 服務(wù)器端解決方案架構(gòu)
由于空間數(shù)據(jù)具有空間位置屬性、非結(jié)構(gòu)化、空間關(guān)系、分類編碼等特征,一般的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)難以滿足要求。為了提高對空間數(shù)據(jù)的管理能力,目前主要有“關(guān)系型數(shù)據(jù)庫+空間數(shù)據(jù)引擎”和擴展對象關(guān)系型數(shù)據(jù)庫管理系統(tǒng)等多種解決方案。
“關(guān)系型數(shù)據(jù)庫+空間數(shù)據(jù)引擎”是由GIS 廠商研發(fā)的一種中間件解決方案。用戶將自己的空間數(shù)據(jù)交給獨立于數(shù)據(jù)庫之外的空間數(shù)據(jù)引擎,由空間數(shù)據(jù)引擎來組織空間數(shù)據(jù)在關(guān)系型數(shù)據(jù)庫中的存儲;當(dāng)用戶需要訪問數(shù)據(jù)的時候,再通知空間數(shù)據(jù)引擎,由引擎從關(guān)系型數(shù)據(jù)庫中取出數(shù)據(jù),并轉(zhuǎn)化為客戶可以使用的方式。因此,關(guān)系型數(shù)據(jù)庫僅僅是存放空間數(shù)據(jù)的容器,而空間數(shù)據(jù)引擎則是空間數(shù)據(jù)進出該容器的轉(zhuǎn)換通道。這類系統(tǒng)的典型代表有ESR I 的ArcSDE 和M ap Info的Spatial W are,其優(yōu)點是:訪問速度快,支持通用的關(guān)系數(shù)據(jù)庫,空間數(shù)據(jù)按二進制存取,與特定GIS 平臺結(jié)合緊密,應(yīng)用靈活。其缺點主要表現(xiàn)為:空間操作和處理無法在數(shù)據(jù)庫內(nèi)核中實現(xiàn),數(shù)據(jù)模型較為復(fù)雜,擴展SQL 比較困難,不易實現(xiàn)數(shù)據(jù)共享與互操作。
擴展對象關(guān)系型數(shù)據(jù)庫管理系統(tǒng)是由數(shù)據(jù)庫廠商研發(fā)的管理空間數(shù)據(jù)的一種解決方案。借鑒面向?qū)ο蠹夹g(shù),支持抽象數(shù)據(jù)類型及其相關(guān)操作的定義,將空間數(shù)據(jù)類型與函數(shù)從中間件(空間數(shù)據(jù)引擎)轉(zhuǎn)移到了數(shù)據(jù)庫管理系統(tǒng)中。不必采用空間數(shù)據(jù)引擎的專用接口進行編程,而是使用增加了空間數(shù)據(jù)類型和函數(shù)的標(biāo)準(zhǔn)擴展型SQL 語言來操作空間數(shù)據(jù)。這種支持空間擴展的產(chǎn)品有O racle 公司的O racle Spatial,微軟的SQL Server Spatial,開源的M ySQL Spatial Extend、PostGIS 等[4]。其優(yōu)點是:空間數(shù)據(jù)的管理與通用數(shù)據(jù)庫系統(tǒng)融為一體,可在數(shù)據(jù)庫內(nèi)核中實現(xiàn)空間操作和處理,擴展SQL 比較方便,較易實現(xiàn)數(shù)據(jù)共享與互操作。其缺點主要表現(xiàn)為:實現(xiàn)難度大,壓縮數(shù)據(jù)比較困難,目前的功能和性能與第一類系統(tǒng)尚存在差距。
GIS 環(huán)境下的態(tài)勢信息自動綜合,主要包括2個方面:一是按照一定規(guī)律和法則對現(xiàn)有的態(tài)勢空間數(shù)據(jù)進行綜合變換,推導(dǎo)出新的具有不同詳細程度的數(shù)據(jù),即變換空間模型的復(fù)雜性;另一個是當(dāng)用某一比例尺進行可視化顯示時,數(shù)據(jù)容量過大不能進行清晰的圖形表達所進行的綜合處理,即態(tài)勢數(shù)據(jù)的圖形表達。下面分別從聚類分組和屏幕網(wǎng)格算法這2個典型方法進行論述。
態(tài)勢信息聚類分組(或目標(biāo)編群)可根據(jù)一定法則對態(tài)勢數(shù)據(jù)進行分析與分類,生成各個聚合類。聚合類就是一些相似的實體集合,分組后的態(tài)勢目標(biāo),數(shù)量將減少,也能更清晰的反映實體之間的協(xié)作關(guān)系和層次結(jié)構(gòu)。
目前對態(tài)勢信息進行目標(biāo)編群算法的研究,分為事先確定群數(shù)目和分群數(shù)目不定2 大類。事先確定群數(shù)目的算法主要包括:K- 均值算法、ISODATA(自組織迭代數(shù)據(jù)分析)算法和FCM(模糊C 均值編群)算法等[5、6],主要適用于各類樣本密集且數(shù)目相差不多,不同類樣本間又明顯分開的情況,但這類算法的最大缺點是用戶要事先給出精確的分群數(shù)目,這在一定程度上影響了算法應(yīng)用的合理性。分群數(shù)目不確定的算法包括,最近鄰算法、層次聚類法等[7]。這類算法又稱為試探法,它主要是憑直觀和經(jīng)驗,結(jié)合空間層面的屬性,如航向等,針對實際問題定義一種相似性測度的閾值,根據(jù)相應(yīng)規(guī)則指定某些目標(biāo)屬于某一編群。這類算法具有直觀、計算量小、易于實現(xiàn)的特點,被廣泛應(yīng)用在工程中。但此類算法的編群結(jié)果在很大程度上受第一個編群中心的選擇和待分類樣本排列順序的影響。
在WebGis地圖上顯示眾多的態(tài)勢目標(biāo)信息時會造成顯示互相壓蓋,降低用戶體驗感。采用屏幕網(wǎng)格算法可有效減少互相壓蓋的目標(biāo)數(shù)量,使顯示更加快速、清晰和整潔??筛鶕?jù)態(tài)勢目標(biāo)標(biāo)注顯示的尺寸將屏幕劃分為若干網(wǎng)格,構(gòu)成一個二維數(shù)組,假設(shè)目標(biāo)顯示的尺寸為targetW idth×targetHeight,屏幕窗口分辨率為ScreenW idth×ScreenHeight,則
橫向網(wǎng)格數(shù):ColsNum=ScreenW idth/targetW idth;
縱向網(wǎng)格數(shù):Row sNum=ScreenHeight/targetHeight;
構(gòu)造二維數(shù)組:ElementArray[Row sNum][ColsNum]
當(dāng)?shù)貓D刷新需要重新繪制目標(biāo)時,首先將數(shù)組元素初始化為0,在顯示每個目標(biāo)時,根據(jù)其顯示位置、字體大小確定其要占用的屏幕位置,如果該區(qū)域位置未被占用,則顯示該目標(biāo),同時將對應(yīng)的數(shù)組元素置1;如果該區(qū)域未被占用,則忽略該目標(biāo)的顯示處理,然后繼續(xù)處理下一個目標(biāo),直至所有目標(biāo)遍歷完畢。
探討了AJAX、Flex、Silverlight 富客戶端技術(shù)、WebGis服務(wù)器、空間數(shù)據(jù)庫及聚類分組、屏幕網(wǎng)格算法等相關(guān)技術(shù),能夠為基于WebGis的態(tài)勢表達應(yīng)用提供解決思路和方法。在實際工程應(yīng)用中可綜合使用這些技術(shù)和方法,盡量將復(fù)雜的業(yè)務(wù)邏輯處理集中在服務(wù)器端,將用戶交互展現(xiàn)集中在富客戶端,以降低頁面請求數(shù)和數(shù)據(jù)傳輸量,加快頁面加載和渲染速度,讓用戶得到更好的使用體驗。
[1]趙娜.Ajax 技術(shù)在WebGis中應(yīng)用的發(fā)展趨勢[J].湖北經(jīng)濟學(xué)院學(xué)報,2011,8(8):207- 208.
[2]程光磊.Flex技術(shù)研究[J].軟件導(dǎo)刊,2011,10(3):56- 57.
[3]王靚,范德輝.基于Silverlight 的在線制圖和通訊系統(tǒng)[J],吉林師范大學(xué)學(xué)報,2011,8(3):131- 133.
[4]鐘遠軍,李照,林澍哲等.基于PostGIS 的地名數(shù)據(jù)庫設(shè)計與應(yīng)用研究[J].測繪與空間地理信息,2011,34(3):100- 104.
[5]楊昕,彭玉青.結(jié)合螞蟻算法的K- Means 聚類分析[J].河北工業(yè)大學(xué)學(xué)報.2007,36(3):48- 52.
[6]S.C.Stubberud and K.A.Kramer.Data Association for Multiple Sensor Types Using Fuzzy Logic[C].Instrumentation and Measurement Technology Confere nce,2005,2154- 2159.
[7]劉文軍,游興中.一種改進的凝聚層次聚類法[J].吉首大學(xué)學(xué)報,2011,32(4):11- 13.