曹玉清,萬 健,徐向華
(杭州電子科技大學(xué)軟件與智能技術(shù)研究所,浙江杭州310018)
基于維基技術(shù)的GIS系統(tǒng)的設(shè)計與實現(xiàn)
曹玉清,萬 健,徐向華
(杭州電子科技大學(xué)軟件與智能技術(shù)研究所,浙江杭州310018)
該文著重介紹了將Wiki技術(shù)引入GIS系統(tǒng)的設(shè)計思想,并描述了使用GoogleM aps API以及SharpMap開源平臺對系統(tǒng)的實現(xiàn)。用戶通過該系統(tǒng)可以方便瀏覽,共享電子地圖,并可以加入特色標(biāo)記和繪制路線。有了廣泛的用戶參與,可以大大豐富系統(tǒng)的資源,并且可以推進GIS系統(tǒng)大眾化和社會化的應(yīng)用普及工作。
維基技術(shù);谷歌地圖;地理信息系統(tǒng)
維基技術(shù)提供了一種方便的信息共享方式,人人都能參與編輯和修改信息。該技術(shù)目前已有廣泛的應(yīng)用,維基百科就是成功的典范。地理信息系統(tǒng)(Geographic Information System,GIS)一般都是由服務(wù)器方提供地理數(shù)據(jù),這樣的方式為用戶提供的信息是比較有限和片面的。如果把維基技術(shù)應(yīng)用到GIS中,由廣大用戶分享自己的信息,并能對他人提供的信息進行核對修改,那么系統(tǒng)提供的信息量將會數(shù)倍增長[1,2]。國外已研究部署了實時定位和更新數(shù)據(jù)的維基地圖系統(tǒng),國內(nèi)比較成功的有易地圖,但其地圖數(shù)據(jù)完全來自谷歌,支持的地圖格式比較少,地理信息種類單一。該文描述了將維基技術(shù)應(yīng)用于GIS服務(wù)系統(tǒng)的方法,介紹了提高地圖處理與顯示速度的方法,并提供了多種地理信息描述和更多地圖格式支持。
Google Map是谷歌公司提供的在線地圖服務(wù)[3]。2005年6月谷歌開放了谷歌地圖應(yīng)用程序接口。它提供了基于谷歌地圖的數(shù)據(jù)調(diào)用和擴展接口。用戶可以自主在地圖上添加標(biāo)記和信息窗口等,通過JavaScript腳本語言就可以將谷歌地圖嵌入到自己的網(wǎng)頁中[4,5]。
SharpMap是一個基于.NET 2.0使用C#開發(fā)的Map渲染類庫,可以渲染各類GIS數(shù)據(jù),它占用的資源比較少,響應(yīng)比較快,使用簡單,只需在.NET項目中引用相應(yīng)的DLL文件即可,沒有復(fù)雜的安裝步驟[6]。目前支持B/S及C/S兩種方式的DLL調(diào)用。
系統(tǒng)需要一個維基引擎,來負責(zé)接收用戶請求,獲取GIS數(shù)據(jù)庫和文件庫的資源,并將從谷歌地圖服務(wù)器獲得的地圖數(shù)據(jù)和SharpMap渲染的地圖信息返回給客戶端。下文通過對比了傳統(tǒng)的和基于維基技術(shù)的GIS系統(tǒng)的特點,進一步闡述系統(tǒng)層次架構(gòu)的設(shè)計與實現(xiàn)。
(1)基于維基技術(shù)的GIS系統(tǒng)的特點。傳統(tǒng)數(shù)字地圖服務(wù)業(yè)形成的一個產(chǎn)業(yè)鏈。這個產(chǎn)業(yè)鏈總共包含4個環(huán)節(jié),如圖1(a)所示。這個產(chǎn)業(yè)鏈在數(shù)字地圖有著諸多缺點:編輯和維護成本高、更新速度慢、運營成本高、地圖數(shù)據(jù)來源單一等。而基于維基技術(shù)的GIS系統(tǒng)擺脫了數(shù)據(jù)提供商和地圖供應(yīng)商在產(chǎn)業(yè)鏈上的束縛,采用以用戶為中心的方式進行,如圖1(b)所示。把用戶提升為系統(tǒng)主角,服務(wù)提供商只作為平臺提供者和平臺的維護者。因此,如何設(shè)計一個面向用戶、精度高、效率高、交互方式豐富的維基引擎成為了系統(tǒng)開發(fā)所要考慮的關(guān)鍵問題。
圖1 傳統(tǒng)數(shù)字地圖服務(wù)產(chǎn)業(yè)鏈與基于維基技術(shù)的GIS系統(tǒng)
(2)GIS元素提取和維基頁面的構(gòu)成。首先確定維基頁面單位的類型,例如:維基百科的詞條是一種維基頁面單位的類型。而GIS系統(tǒng)的維基引擎,需要把GIS元素作為維基頁面單位的類型,如地點、線路等GIS元素。GIS系統(tǒng)中的維基頁面有兩個組成部分,即:作為維基詞條的文本部分和GIS地圖部分。
(3)系統(tǒng)架構(gòu)設(shè)計。維基引擎的設(shè)計中要實現(xiàn)相應(yīng)的關(guān)鍵技術(shù),例如:保留每一次變更的版本;版本對比;固定的編輯規(guī)則等。其中許多技術(shù)都牽涉到復(fù)雜的事務(wù)處理,而處理對象又是海量的GIS數(shù)據(jù),這些因素必然對系統(tǒng)性能構(gòu)成挑戰(zhàn)。因此,在設(shè)計維基引擎時參考了.NET技術(shù)的3層架構(gòu)模式[7],將事務(wù)處理與GIS處理分離,從而提高客戶端與服務(wù)器的交互速度。例如:業(yè)務(wù)邏輯層采用的事務(wù)機制,不僅能保護數(shù)據(jù)和操作的完整性,還可以避免用戶數(shù)據(jù)的沖突;數(shù)據(jù)訪問層可加入多種數(shù)據(jù)庫支持;用戶界面層引入Ajax異步數(shù)據(jù)更新技術(shù),解決前臺頻繁的GIS數(shù)據(jù)交互問題。系統(tǒng)層次架構(gòu)如圖2所示。系統(tǒng)其他部分包括一個文件庫(存放地圖文件),一個數(shù)據(jù)庫(存放標(biāo)記數(shù)據(jù)),一個功能類庫(包括數(shù)據(jù)加密類,GIS編碼類等系統(tǒng)功能類),谷歌地圖應(yīng)用程序接口還有ShapMap的組件。用戶界面層調(diào)用谷歌地圖應(yīng)用程序接口獲得地圖數(shù)據(jù),并根據(jù)用戶的請求從數(shù)據(jù)庫獲得地理標(biāo)記信息,如地點,折線等的編碼;調(diào)用SharpMap組件,渲染地圖文件,同時加載地理標(biāo)記信息。
維基頁面的加載過程也分為了兩部分:維基詞條的文本信息加載和GIS數(shù)據(jù)加載。其中GIS數(shù)據(jù)的處理與顯示將最終決定客戶端的請求響應(yīng)速度。針對這一問題,下文給出了兩方面的改進,用于提高客戶端請求的響應(yīng)速度。
(1)GIS數(shù)據(jù)統(tǒng)一編碼。該部分是針對谷歌地圖應(yīng)用程序接口編程的改進。由于標(biāo)記分為地點、折線和區(qū)域三種類型。地點標(biāo)記需要記錄經(jīng)緯度,而折線和區(qū)域要記錄每個折點的經(jīng)緯度信息。如果對這些信息分類存儲,需要傳輸?shù)臄?shù)據(jù)量比較大。谷歌地圖提供了折線的編碼算法,該算法可以擴展到地點編碼和區(qū)域編碼,從而統(tǒng)一了這3種標(biāo)記需要記錄的GIS信息。這個改進不僅可以優(yōu)化數(shù)據(jù)存儲,減少代碼量,增強系統(tǒng)可維護性,也大大提高了GIS數(shù)據(jù)傳輸?shù)男省?/p>
圖2 系統(tǒng)層次架構(gòu)圖
(2)地圖文件與標(biāo)記數(shù)據(jù)的分離
該部分是針對SharpMap組件加載地圖和標(biāo)記方法的改進。用戶上傳的地圖文件大小不等,對某地圖可能做的標(biāo)記數(shù)量也未知。如果同時存儲和處理文件和標(biāo)記,當(dāng)標(biāo)記量過多的時候,系統(tǒng)響應(yīng)速率會大大降低。地圖文件作為標(biāo)記的載體之一,必須首先加載到客戶端,然后加載從數(shù)據(jù)庫中取出對應(yīng)的標(biāo)記信息。系統(tǒng)在前臺增加一個Ajax引擎,用異步傳輸機制高效解決批量標(biāo)記的處理和顯示問題。地圖交互的時序模型如圖3所示。首先客戶端向維基引擎發(fā)送地圖請求,維基引擎從文件庫查詢該地圖,并將地圖返回給地圖渲染組件,最后將渲染好的地圖加載到客戶端。此時,用戶便可在此地圖上添加標(biāo)記了。加載標(biāo)記時,客戶端調(diào)用A jax引擎產(chǎn)生一個Http請求,Ajax引擎將該請求異步傳輸?shù)骄S基引擎,并將控制權(quán)返回給客戶端,維基引擎分析請求類型,然后連接數(shù)據(jù)庫查詢標(biāo)記,并將結(jié)果作為數(shù)據(jù)集通過Ajax引擎返回給客戶端。通過將地圖與標(biāo)記在存儲和處理時的分離,客戶端可以更快的完成一次交互,而且在加載標(biāo)記時,不用再對頁面進行刷新,從而提高了系統(tǒng)的性能。
圖3 地圖交互時序圖
(1)高精度和高效率。精度分別從縮放級別和經(jīng)緯度精確的小數(shù)點位數(shù)來衡量:Google Map參考其應(yīng)用程序接口,縮放級別共分為17級,經(jīng)緯度可精確到小數(shù)點后17位;而SharpMap渲染的地圖文件,其縮放級別有360級,經(jīng)緯度可精確到小數(shù)點后15位。這種精度已經(jīng)完全可以滿足絕大多數(shù)GIS用戶的需求。由于系統(tǒng)基于谷歌地圖服務(wù),其地圖加載速度與谷歌地圖相當(dāng);另外由于SharpMap組件也引入了Ajax技術(shù),支持地圖局部刷新,使得客戶端與服務(wù)器交互時,也具有比較高的效率,系統(tǒng)性能的瓶頸落在了地圖文件的首次加載速度上,該速度取決于文件大小和網(wǎng)絡(luò)狀況,對用戶與系統(tǒng)的交互影響不大。
(2)豐富的交互方式和多媒體支持。系統(tǒng)提供了非常豐富的交互方式。用戶可以通過個人電腦訪問服務(wù)器,上傳圖片格式地圖和GPX等格式的地圖標(biāo)記文件,添加和繪制各類標(biāo)記信息,進行地圖文件預(yù)覽,也可將從服務(wù)器下載的導(dǎo)航文件載入導(dǎo)航設(shè)備進行導(dǎo)航。系統(tǒng)還增加了一個Tracker服務(wù)器,從而支持地圖文件的P2P下載。另外對標(biāo)記信息增加了多媒體選項,用戶在編輯標(biāo)記文本信息時,可以加入圖片,音頻和視頻,從而使系統(tǒng)成為了一個圖文聲色并茂的GIS交流平臺。
將維基技術(shù)應(yīng)用于GIS系統(tǒng)很好的彌補了傳統(tǒng)數(shù)字地圖服務(wù)更新慢,數(shù)據(jù)源單一等缺陷[2]。而且通過提取GIS元素,利用3層架構(gòu)來實現(xiàn)的維基引擎,改進地圖數(shù)據(jù)的處理與顯示,這不僅很好解決了維基中復(fù)雜的事務(wù)邏輯關(guān)系,而且有利于客戶端地圖數(shù)據(jù)更新效率的提高,系統(tǒng)后期也將優(yōu)化對多媒體數(shù)據(jù)的傳輸。隨著谷歌地圖服務(wù)提供的中國數(shù)據(jù)的不斷更新,以及更豐富的應(yīng)用程序接口調(diào)用的提供,系統(tǒng)的部署和使用也會更加方便和快捷,在系統(tǒng)投入運營后,有了廣大用戶的參與,就可以大大豐富GIS的數(shù)據(jù)源,真正將GIS大眾化。
[1]Reid Priedhorsky,Loren Terveen.The ComputationalGeowiki:What,Why,and How[C].San Diego:Computer Supported Cooperative Work,2008:267-276.
[2]Teranishi Yuuichi,Kamahara Junzo,Shimojo Shin ji.MapWiki:a ubiquitous collaboration environment on shared maps[C].Phoenix:Applications and the InternetWorkshops,2006:4.
[3]Rousseaux Francis,Lhoste Kevin.Rapid Software Prototyping Using Ajax and GoogleMap API[C].Mexico:Advances in Computer-Human Interactions,2009:317-323.
[4]黃學(xué)龍,左宗義.Web 2.0環(huán)境下的GIS電子地圖理論及應(yīng)用[J].現(xiàn)代計算機,2008,25(6):170-172.
[5]楊天亮,王亮.基于GoogleMap API的電信基站信息管理系統(tǒng)研究[J].地理空間信息,2008,6(4):19-21.
[6]朱俊豐,趙俊三.基于開源平臺的中小型WebGIS應(yīng)用研究[J].地理空間信息,2008,6(1):92-94.
[7]周光亮.淺釋.net三層架構(gòu)的設(shè)計與實現(xiàn)[J].科技信息,2008,24(6):197-199.
GISSystem Design and Im plementation Based on Wiki Technology CAO Yu-qing,WAN Jian,XU Xiang-hua
(Institute of Softwareand Intelligent Technology,Hangzhou Dianzi University,Hangzhou Zhejiang310018,China)
This paper focuses on the design of a GIS system by introducingWikitechnology,and describes the implementation of the system by using Google Maps APIand an open-source platform SharpMap.The system users can easily browse and share electronicmaps,aswell as add features and route marker to themap.With awide range ofuser participation,the resourcesof thesystem can begreatlyenriched,while the popularization ofGIS system and the application ofuniversal socialwork willbe promoted.
Wiki technology;Googlemap;GIS
TP311.1
A
1001-9146(2010)03-0047-04
2009-09-18
浙江省科技計劃資助項目(C23G2040020)
曹玉清(1983-),男,河南洛陽人,在讀研究生,計算機軟件與理論.