李源泰,李紅波,趙俊三
(昆明理工大學(xué)國(guó)土資源工程學(xué)院,云南昆明650093)
開(kāi)源GIS在WebGIS中的應(yīng)用初探
李源泰,李紅波,趙俊三
(昆明理工大學(xué)國(guó)土資源工程學(xué)院,云南昆明650093)
由于開(kāi)源GIS的快速發(fā)展和功能逐步的完善,嘗試?yán)瞄_(kāi)源GIS軟件實(shí)現(xiàn)在網(wǎng)絡(luò)GIS中的應(yīng)用,通過(guò)運(yùn)用空間數(shù)據(jù)庫(kù)PostGIS、開(kāi)源OGC服務(wù)器GeoServer和WebGIS客戶端OpenLayers實(shí)現(xiàn)全球H1N1流感疫情地圖的發(fā)布。目的在于為小型地理信息系統(tǒng)項(xiàng)目探索一些免費(fèi)開(kāi)源的解決方法和思路。
開(kāi)源GIS;WebGIS;PostGIS;GeoServer;OpenLayers
軟件開(kāi)源目前已經(jīng)成為IT界的一種發(fā)展趨勢(shì),越來(lái)越多的軟件加入到開(kāi)源系統(tǒng)中。在GIS領(lǐng)域開(kāi)源GIS也是一股逐漸成長(zhǎng)并強(qiáng)大的力量,和昂貴的GIS商業(yè)軟件相比,開(kāi)源GIS軟件不用背負(fù)數(shù)據(jù)兼容、易用性等問(wèn)題的包袱,開(kāi)發(fā)者能夠集中精力于功能的開(kāi)發(fā),因此開(kāi)源GIS軟件普遍功能很強(qiáng),技術(shù)也非常先進(jìn),其背后是來(lái)自技術(shù)狂熱者和學(xué)院研究生的大力支持。開(kāi)源GIS軟件目前已經(jīng)形成了一個(gè)比較齊全的產(chǎn)品線。例如,綜合GIS軟件GRASS;數(shù)據(jù)轉(zhuǎn)換庫(kù)OGR、GDAL;地圖投影算法庫(kù) Proj4、Geotrans;也有比較簡(jiǎn)單易用的桌面軟件 Quantum GIS,uDig;Java平臺(tái)上有 Map Tools、GeoServer、Map Server則是優(yōu)秀的開(kāi)源WebGIS軟件。各種空間分析,模型計(jì)算尤其是開(kāi)源GIS領(lǐng)域的強(qiáng)項(xiàng)。
由于開(kāi)源 GIS已經(jīng)形成了一系列的成熟的產(chǎn)品,所以完全可以基于開(kāi)源GIS開(kāi)發(fā)成熟的應(yīng)用系統(tǒng)。而且毫不遜色于那些昂貴的商業(yè)GIS軟件。本文目的在于通過(guò)探索開(kāi)源GIS在WebGIS中的應(yīng)用。實(shí)現(xiàn)一個(gè)簡(jiǎn)單的全球H1N1流感疫情分布地圖。
雖然實(shí)現(xiàn)一個(gè)簡(jiǎn)單的全球H1N1流感疫情地圖只是一個(gè)很簡(jiǎn)單的 WebGIS應(yīng)用,可以不用空間數(shù)據(jù)庫(kù)存儲(chǔ),但是使用空間數(shù)據(jù)庫(kù)在WebGIS應(yīng)用中是必不可少的。首先是速度問(wèn)題,通過(guò)數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)優(yōu)化訪問(wèn)數(shù)據(jù)比從 shapefile等數(shù)據(jù)文件中訪問(wèn)的性能更高。其次是多用戶支持,空間數(shù)據(jù)一般都是參考數(shù)據(jù),這通常意味著需要在多個(gè)用戶中共享。存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)能通過(guò)一個(gè)標(biāo)準(zhǔn)接口(JDBC、ODBC、PERL/DBL等)來(lái)遠(yuǎn)程訪問(wèn)。最后是空間查詢,這也是采用數(shù)據(jù)庫(kù)的最大優(yōu)點(diǎn)。
PostgreSQL是一個(gè)功能強(qiáng)大、支持良好的開(kāi)源空間數(shù)據(jù)庫(kù)。PostGIS利用了PostgreSQL的擴(kuò)展性能,提供了一個(gè)強(qiáng)大的空間數(shù)據(jù)庫(kù)解決方案。PostGIS提供的空間信息服務(wù)功能有:空間對(duì)象、空間索引、空間操作函數(shù)和空間操作符。同時(shí),PostGIS遵循OpenGIS的規(guī)范。
GeoServer是OpenGIS Web服務(wù)器規(guī)范的J2EE實(shí)現(xiàn),利用GeoServer可以方便的發(fā)布地圖數(shù)據(jù),允許用戶對(duì)特征數(shù)據(jù)進(jìn)行更新、刪除、插入操作,通過(guò)GeoServer可以比較容易的在用戶之間迅速共享空間地理信息。
GeoServer主要特性包括:兼容WMS和WFS特性;支持PostGIS,Shapefile,ArcSDE,Oracle,VPF,MySQL,Map Info;支持上百種投影;能夠?qū)⒕W(wǎng)絡(luò)地圖輸出為JPEG,GIF,PNG,SVG,KML等格式;能夠運(yùn)行在任何基于J2EE/Servlet容器之上;嵌入OpenLayers支持Ajax的地圖客戶端;除此之外還包括許多其他的特性。
OpenLayers是由MetaCarta公司開(kāi)發(fā)的,用于Web-GIS客戶端的JavaScript包,通過(guò)BSD License發(fā)行。它實(shí)現(xiàn)訪問(wèn)地理空間數(shù)據(jù)的方法都符合行業(yè)標(biāo)準(zhǔn),比如OpenGIS的WMS和WFS規(guī)范,OpenLayers采用純面向?qū)ο蟮腏avaScript方式開(kāi)發(fā),同時(shí)借用了Prototype框架和Rico庫(kù)的一些組件。
采用OpenLayers作為客戶端不存在瀏覽器依賴性。由OpenLayer采用JavaScript語(yǔ)言實(shí)現(xiàn),而應(yīng)用于Web瀏覽器中的文檔對(duì)象模型(DOM)由JavaScript實(shí)現(xiàn),同時(shí),Web瀏覽器(比如IE,F(xiàn)irefox等)都支持DOM。OpenLayersAPI采用動(dòng)態(tài)類型腳本語(yǔ)言JavaScript編寫(xiě),實(shí)現(xiàn)了類似與Ajax功能的無(wú)刷新更新頁(yè)面,能夠帶給用戶豐富的桌面體驗(yàn)。
OpenLayers所能夠支持的格式有:XML、GML、GeoJSON、GeoRSS、JSON、KML、WFS、WKT(Well-Known Text)。在Openlayers.Format名稱空間下的各個(gè)類里,實(shí)現(xiàn)了具體讀/寫(xiě)這些Format的解析器。Open-Layers所能夠利用的地圖數(shù)據(jù)資源"豐富多彩",在這方面提供給用戶較多的選擇,比如WMS、WFS、GoogleMap、MSVirtualEarth、WorldWind等。當(dāng)然,也可以用簡(jiǎn)單的圖片作為源。
在WebGIS框架下實(shí)現(xiàn)基于開(kāi)源GIS的H1N1流感疫情圖,其結(jié)實(shí)現(xiàn)構(gòu)圖如圖1所示。
圖1 開(kāi)源WebGIS結(jié)構(gòu)圖
4.1 導(dǎo)入空間數(shù)據(jù)庫(kù)
首先,下載 shp格式的世界矢量地圖,網(wǎng)上有很多免費(fèi)的矢量地圖資源,通過(guò)在其屬性表里增加兩個(gè)字段:H1N1和Death字段分別代表確診人數(shù)和死亡人數(shù)。并添加最新的各國(guó)疫情數(shù)據(jù)。然后將 shapefile格式數(shù)據(jù)導(dǎo)入到PostGIS空間數(shù)據(jù)庫(kù)。最簡(jiǎn)單的方法是使用Postgres_home/bin文件夾中的工具shp2psql。它會(huì)檢測(cè)shapfile文件然后創(chuàng)建一個(gè)CEEAT TABLE語(yǔ)句和相應(yīng)的AddGeometryColumn方法,遍歷.dbf中的每一條記錄,然后創(chuàng)建一個(gè)SQL INSERT語(yǔ)句。
shp2psql-s 4326 world_admo.shp World_H1N1> World_H1N1.sql
然后用psql命令將數(shù)據(jù)導(dǎo)入到PostGIS數(shù)據(jù)庫(kù)中,在命令提示符下鍵入:psql-U postgres postgis 4.2 創(chuàng)建OGC Web服務(wù) GeoServer有一個(gè)方便好用的可視化管理界面,可以很方便地添加PostGIS數(shù)據(jù)。首先新建一個(gè)新的名稱空間:點(diǎn)擊Config->Data->Namespace->new,建立新的名稱空間 MyNamespace;然后是新建數(shù)據(jù)源:點(diǎn)擊Config->Data->Stores->new,從下拉框選中PostGIS,設(shè)置ID點(diǎn)擊New,設(shè)置連接PostGIS數(shù)據(jù)庫(kù)所需的值;然后保存設(shè)置并提交。 然后添加一個(gè)新的FeatureType。這里最重要的是設(shè)置Style。為了很好的表現(xiàn)H1N1疫情分布情況,就應(yīng)該根據(jù)疫情的嚴(yán)重情況分級(jí)顯示。這就要新建一個(gè)Styled Layer Descriptor(SLD)文件。SLD文件其實(shí)就是一種XML格式文件。如果熟悉XML就很容易編寫(xiě)和修改SLD文件。 一種較為方便快捷生成 SLD文件的方法是通過(guò)uDig生成。uDig是一個(gè)非常友好易用的開(kāi)源桌面GIS應(yīng)用程序。利用uDig可以方便的對(duì)地圖進(jìn)行可視化的樣式設(shè)置,方便編輯SLD樣式文件。點(diǎn)擊XML可以查看生成的SLD文件,設(shè)置合適的樣式后點(diǎn)擊Export就可將此SLD文件導(dǎo)出。導(dǎo)出的SLD文件可以在GeoServer中直接使用,但是這時(shí)的樣式與圖層數(shù)據(jù)表的名稱是相關(guān)聯(lián)的,通用性較差。為了獲得最好的通用性,參照GeoServer樣例的SLD文件手工進(jìn)行代碼優(yōu)化后再導(dǎo)入GeoServer。 4.3 Openlayers框架實(shí)現(xiàn)Web瀏覽 OpenLayers作為一個(gè)用于開(kāi)發(fā)WebGIS客戶端的JavaScript包。其中最關(guān)鍵的類就是Map類,它就像一個(gè)容器,web頁(yè)的div通過(guò)以id或name的形式獲得map對(duì)象,然后layers和control在加載到map上,表現(xiàn)為地圖。 實(shí)例化一個(gè)地圖類OpenLayers.Map。 map=new OpenLayers.Map('map'); 以WMS的格式實(shí)例化圖層類OpenLayers.Layer。 在Map對(duì)象上加載Layer對(duì)象,并用map.zoomTo-Extent函數(shù)使地圖合適地顯示。 map.addLayer(world_h1n1); OpenLayers中的事件有兩種:一種是瀏覽器事件(比如 onclick,onmouseup等),另一種是自定義的事件。自定義的事件像addLayer,addControl等。 在IE瀏覽器下的效果如圖2所示。 圖2 全球H1N1流感疫情地圖 通過(guò)應(yīng)用開(kāi)源GIS實(shí)現(xiàn)全球H1N1流感疫情地圖的發(fā)布??梢钥闯鲩_(kāi)源GIS并不是GIS技術(shù)狂熱者手中的玩具,其功能目前已經(jīng)相當(dāng)完善,并能充分完成在某些行業(yè)的應(yīng)用。GIS的要旨是開(kāi)放,包括體系結(jié)構(gòu)的開(kāi)放,數(shù)據(jù)模型的開(kāi)放以及我們開(kāi)發(fā)者思想觀念的開(kāi)放。而開(kāi)源GIS正是在開(kāi)放、集成、標(biāo)準(zhǔn)和互操作上有其獨(dú)特的優(yōu)勢(shì)。 [1] Scott Davis著,蔣波濤譯.GIS for Web應(yīng)用開(kāi)發(fā)之道[M].北京:電子工業(yè)出版社,2008 [2] 周文生,毛鋒,胡鵬.開(kāi)放式WebGIS的理論與實(shí)踐[M].北京:科學(xué)出版社,2007 [3]DaiN,M and elL,Ryman A著,姚軍,徐鋒譯.EclipseWTPWeb應(yīng)用開(kāi)發(fā)[M].北京:人民郵電出版社,2008 [4] James Lee,Brent Ware著.徐祥生 譯.開(kāi)放源碼網(wǎng)站開(kāi)發(fā)指南[M].北京:清華大學(xué)出版社,2003 [5]高昂.開(kāi)源GIS客戶端項(xiàng)目實(shí)踐指南[J].程序員,2007(06):23-27 [6] 張大鵬,張錦.基于開(kāi)源WebGIS軟件的110指揮中心警情分析系統(tǒng)[J].科技情報(bào)開(kāi)發(fā)與經(jīng)濟(jì),2008(11):32-36 [7] OpenLayers技術(shù)文檔. http://dev.openlayers.org/docs/files/ OpenLayers-js.htm l.[EB/OL]2009-06-01 Application of Open Source GIS to WebGIS LI Yuantai,LI Hongbo,ZHAO Junsan With the rapid developmentof theopen sourceGIS and thegradualimprovementof its functions,thispaper attempts to fulfill the application of WebGIS w ith the help of the open source GIS and realize the map's of the global epidem ic of influenza H1N1 through the use of spatial database PostGIS,OGC server GeoServer and theopen source client OpenLayers.This paper aims to explore some free open source solutions and ideas for the small geographic information systems projects. open source GIS;WebGIS;PostGIS;GeoServer;OpenLayers 2009-07-17 項(xiàng)目來(lái)源:國(guó)家自然科學(xué)基金資助項(xiàng)目(70973047);房?jī)r(jià)驅(qū)動(dòng)社會(huì)福利聚集與擴(kuò)散的演化機(jī)理及調(diào)控績(jī)效研究,李紅波,昆明理工大學(xué)。 P208 B 1672-4623(2010)02-0100-03 李源泰,碩士,研究方向?yàn)槿SGIS與虛擬現(xiàn)實(shí) (VR)技術(shù)。5 結(jié) 語(yǔ)
(Faculty of Land Re source Eiginee ring,Kun ming Uni ver sity of Sci ence and Technol ogy, Kun ming 650093,China)