李源泰,李紅波,趙俊三
(昆明理工大學國土資源工程學院,云南昆明650093)
開源GIS在WebGIS中的應用初探
李源泰,李紅波,趙俊三
(昆明理工大學國土資源工程學院,云南昆明650093)
由于開源GIS的快速發展和功能逐步的完善,嘗試利用開源GIS軟件實現在網絡GIS中的應用,通過運用空間數據庫PostGIS、開源OGC服務器GeoServer和WebGIS客戶端OpenLayers實現全球H1N1流感疫情地圖的發布。目的在于為小型地理信息系統項目探索一些免費開源的解決方法和思路。
開源GIS;WebGIS;PostGIS;GeoServer;OpenLayers

軟件開源目前已經成為IT界的一種發展趨勢,越來越多的軟件加入到開源系統中。在GIS領域開源GIS也是一股逐漸成長并強大的力量,和昂貴的GIS商業軟件相比,開源GIS軟件不用背負數據兼容、易用性等問題的包袱,開發者能夠集中精力于功能的開發,因此開源GIS軟件普遍功能很強,技術也非常先進,其背后是來自技術狂熱者和學院研究生的大力支持。開源GIS軟件目前已經形成了一個比較齊全的產品線。例如,綜合GIS軟件GRASS;數據轉換庫OGR、GDAL;地圖投影算法庫 Proj4、Geotrans;也有比較簡單易用的桌面軟件 Quantum GIS,uDig;Java平臺上有 Map Tools、GeoServer、Map Server則是優秀的開源WebGIS軟件。各種空間分析,模型計算尤其是開源GIS領域的強項。
由于開源 GIS已經形成了一系列的成熟的產品,所以完全可以基于開源GIS開發成熟的應用系統。而且毫不遜色于那些昂貴的商業GIS軟件。本文目的在于通過探索開源GIS在WebGIS中的應用。實現一個簡單的全球H1N1流感疫情分布地圖。
雖然實現一個簡單的全球H1N1流感疫情地圖只是一個很簡單的 WebGIS應用,可以不用空間數據庫存儲,但是使用空間數據庫在WebGIS應用中是必不可少的。首先是速度問題,通過數據庫對數據優化訪問數據比從 shapefile等數據文件中訪問的性能更高。其次是多用戶支持,空間數據一般都是參考數據,這通常意味著需要在多個用戶中共享。存儲在數據庫中的數據能通過一個標準接口(JDBC、ODBC、PERL/DBL等)來遠程訪問。最后是空間查詢,這也是采用數據庫的最大優點。
PostgreSQL是一個功能強大、支持良好的開源空間數據庫。PostGIS利用了PostgreSQL的擴展性能,提供了一個強大的空間數據庫解決方案。PostGIS提供的空間信息服務功能有:空間對象、空間索引、空間操作函數和空間操作符。同時,PostGIS遵循OpenGIS的規范。
GeoServer是OpenGIS Web服務器規范的J2EE實現,利用GeoServer可以方便的發布地圖數據,允許用戶對特征數據進行更新、刪除、插入操作,通過GeoServer可以比較容易的在用戶之間迅速共享空間地理信息。
GeoServer主要特性包括:兼容WMS和WFS特性;支持PostGIS,Shapefile,ArcSDE,Oracle,VPF,MySQL,Map Info;支持上百種投影;能夠將網絡地圖輸出為JPEG,GIF,PNG,SVG,KML等格式;能夠運行在任何基于J2EE/Servlet容器之上;嵌入OpenLayers支持Ajax的地圖客戶端;除此之外還包括許多其他的特性。
OpenLayers是由MetaCarta公司開發的,用于Web-GIS客戶端的JavaScript包,通過BSD License發行。它實現訪問地理空間數據的方法都符合行業標準,比如OpenGIS的WMS和WFS規范,OpenLayers采用純面向對象的JavaScript方式開發,同時借用了Prototype框架和Rico庫的一些組件。
采用OpenLayers作為客戶端不存在瀏覽器依賴性。由OpenLayer采用JavaScript語言實現,而應用于Web瀏覽器中的文檔對象模型(DOM)由JavaScript實現,同時,Web瀏覽器(比如IE,Firefox等)都支持DOM。OpenLayersAPI采用動態類型腳本語言JavaScript編寫,實現了類似與Ajax功能的無刷新更新頁面,能夠帶給用戶豐富的桌面體驗。
OpenLayers所能夠支持的格式有:XML、GML、GeoJSON、GeoRSS、JSON、KML、WFS、WKT(Well-Known Text)。在Openlayers.Format名稱空間下的各個類里,實現了具體讀/寫這些Format的解析器。Open-Layers所能夠利用的地圖數據資源"豐富多彩",在這方面提供給用戶較多的選擇,比如WMS、WFS、GoogleMap、MSVirtualEarth、WorldWind等。當然,也可以用簡單的圖片作為源。
在WebGIS框架下實現基于開源GIS的H1N1流感疫情圖,其結實現構圖如圖1所示。

圖1 開源WebGIS結構圖
4.1 導入空間數據庫
首先,下載 shp格式的世界矢量地圖,網上有很多免費的矢量地圖資源,通過在其屬性表里增加兩個字段:H1N1和Death字段分別代表確診人數和死亡人數。并添加最新的各國疫情數據。然后將 shapefile格式數據導入到PostGIS空間數據庫。最簡單的方法是使用Postgres_home/bin文件夾中的工具shp2psql。它會檢測shapfile文件然后創建一個CEEAT TABLE語句和相應的AddGeometryColumn方法,遍歷.dbf中的每一條記錄,然后創建一個SQL INSERT語句。
shp2psql-s 4326 world_admo.shp World_H1N1> World_H1N1.sql
然后用psql命令將數據導入到PostGIS數據庫中,在命令提示符下鍵入:psql-U postgres postgis 4.2 創建OGC Web服務 GeoServer有一個方便好用的可視化管理界面,可以很方便地添加PostGIS數據。首先新建一個新的名稱空間:點擊Config->Data->Namespace->new,建立新的名稱空間 MyNamespace;然后是新建數據源:點擊Config->Data->Stores->new,從下拉框選中PostGIS,設置ID點擊New,設置連接PostGIS數據庫所需的值;然后保存設置并提交。 然后添加一個新的FeatureType。這里最重要的是設置Style。為了很好的表現H1N1疫情分布情況,就應該根據疫情的嚴重情況分級顯示。這就要新建一個Styled Layer Descriptor(SLD)文件。SLD文件其實就是一種XML格式文件。如果熟悉XML就很容易編寫和修改SLD文件。 一種較為方便快捷生成 SLD文件的方法是通過uDig生成。uDig是一個非常友好易用的開源桌面GIS應用程序。利用uDig可以方便的對地圖進行可視化的樣式設置,方便編輯SLD樣式文件。點擊XML可以查看生成的SLD文件,設置合適的樣式后點擊Export就可將此SLD文件導出。導出的SLD文件可以在GeoServer中直接使用,但是這時的樣式與圖層數據表的名稱是相關聯的,通用性較差。為了獲得最好的通用性,參照GeoServer樣例的SLD文件手工進行代碼優化后再導入GeoServer。 4.3 Openlayers框架實現Web瀏覽 OpenLayers作為一個用于開發WebGIS客戶端的JavaScript包。其中最關鍵的類就是Map類,它就像一個容器,web頁的div通過以id或name的形式獲得map對象,然后layers和control在加載到map上,表現為地圖。 實例化一個地圖類OpenLayers.Map。 map=new OpenLayers.Map('map'); 以WMS的格式實例化圖層類OpenLayers.Layer。 在Map對象上加載Layer對象,并用map.zoomTo-Extent函數使地圖合適地顯示。 map.addLayer(world_h1n1); OpenLayers中的事件有兩種:一種是瀏覽器事件(比如 onclick,onmouseup等),另一種是自定義的事件。自定義的事件像addLayer,addControl等。 在IE瀏覽器下的效果如圖2所示。 圖2 全球H1N1流感疫情地圖 通過應用開源GIS實現全球H1N1流感疫情地圖的發布。可以看出開源GIS并不是GIS技術狂熱者手中的玩具,其功能目前已經相當完善,并能充分完成在某些行業的應用。GIS的要旨是開放,包括體系結構的開放,數據模型的開放以及我們開發者思想觀念的開放。而開源GIS正是在開放、集成、標準和互操作上有其獨特的優勢。 [1] Scott Davis著,蔣波濤譯.GIS for Web應用開發之道[M].北京:電子工業出版社,2008 [2] 周文生,毛鋒,胡鵬.開放式WebGIS的理論與實踐[M].北京:科學出版社,2007 [3]DaiN,M and elL,Ryman A著,姚軍,徐鋒譯.EclipseWTPWeb應用開發[M].北京:人民郵電出版社,2008 [4] James Lee,Brent Ware著.徐祥生 譯.開放源碼網站開發指南[M].北京:清華大學出版社,2003 [5]高昂.開源GIS客戶端項目實踐指南[J].程序員,2007(06):23-27 [6] 張大鵬,張錦.基于開源WebGIS軟件的110指揮中心警情分析系統[J].科技情報開發與經濟,2008(11):32-36 [7] OpenLayers技術文檔. 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 項目來源:國家自然科學基金資助項目(70973047);房價驅動社會福利聚集與擴散的演化機理及調控績效研究,李紅波,昆明理工大學。 P208 B 1672-4623(2010)02-0100-03 李源泰,碩士,研究方向為三維GIS與虛擬現實 (VR)技術。



5 結 語
(Faculty of Land Re source Eiginee ring,Kun ming Uni ver sity of Sci ence and Technol ogy, Kun ming 650093,China)