董萬鈞 ,董 波 ,張俊儒
(1. 水利部南京水利水文自動化研究所,江蘇 南京 210012;2. 水利部水文水資源監(jiān)控工程技術(shù)研究中心,江蘇 南京 210012;3. 江蘇南水科技有限公司,江蘇 南京 210012)
GIS 技術(shù)已經(jīng)廣泛應用于水利行業(yè)的方方面面,主要應用領(lǐng)域包括防災減災(防汛抗旱決策、災情評估、洪澇災害風險分析與區(qū)劃、城市防洪)、水資源管理、水環(huán)境和水土保持,以及水利水電工程設(shè)施的建設(shè)管理等[1-2]。隨著水利信息化系統(tǒng)建設(shè)及水利一張圖工作的推進,GIS 成為水利信息化系統(tǒng)構(gòu)建框架中不可或缺的一部分,既是系統(tǒng)中輔助決策的工具,也是成果展示的平臺??梢灶A見 GIS技術(shù)將隨著時代的發(fā)展越來越深入到水利行業(yè)的骨髓之中。
在水利行業(yè)的實際應用中,商業(yè)化 GIS 產(chǎn)品往往占據(jù)主流地位。國外的如 ArcGIS 系列產(chǎn)品,國內(nèi)的如 SuperMap 系列產(chǎn)品等占據(jù)了大部分市場。這些產(chǎn)品針對水利行業(yè)的各個應用場景都有較為完善的解決方案,但由于其商業(yè)化產(chǎn)品的特性,存在以下2 個方面的弊端:1)我國是一個地區(qū)經(jīng)濟發(fā)展極不平衡的國家,雖然近年來國家加大了對水利部門的投入,但對于部分中西部地區(qū)和中小水利管理機構(gòu)而言,經(jīng)費相對有限,采用商業(yè)化 GIS 軟件將是一筆不小的投入;2)商業(yè)化 GIS 軟件為了應對復雜的應用場景,產(chǎn)品往往大而全。對中小型水利信息化工程而言,為了少量的 GIS 功能需求安裝部署一套完整的商業(yè)化 GIS 平臺顯得過于沉重。
開源 GIS 具有天生免費的特性,一款開源軟件往往只承擔某一方面的功能,更加輕巧,很好地規(guī)避了采用商業(yè) GIS 平臺帶來的問題,同時,開源GIS 軟件大多具有跨平臺特性,對運行環(huán)境的適應能力更好。開源 GIS 軟件目前已在各行各業(yè)中得到相對廣泛的應用,比較典型的有:梁國峰等[3]基于 Cesium 開源三維框架、GeoServer 開源 GIS 服務(wù)、PostgreSQL 開源空間數(shù)據(jù)庫,設(shè)計了一套三維WebGIS 開發(fā)方案,實現(xiàn)了水庫綜合管理系統(tǒng)的搭建;趙彥博等[4]在剖析 DHSVM 模型中河網(wǎng)數(shù)據(jù)表達與組織的基礎(chǔ)上,采用 C++ 和開源 GIS 庫實現(xiàn)了DHSVM 河網(wǎng)數(shù)據(jù)的自動制備;張玉龍等[5]以開源GIS 軟件 GRASS 為平臺,首次通過輻射過程模型r.sun 和編程語言 Shell,實現(xiàn)長江流域 500 m 分辨率的晴日輻射反演(包括直接、散射和反射輻射),為了解長江流域輻射時空分布規(guī)律和相關(guān)宏觀氣候、生態(tài)建模奠定基礎(chǔ);梅清銀[6]以 WebGIS 方式實現(xiàn)自動氣象觀測站資料的展示及其簡單應用。開源集成建模環(huán)境 FREEWAT 采用插件式方式開發(fā)并嵌入到 QGIS 當中,用于模擬、管理、計劃地表水和地下水的水量和水質(zhì)等[7-8];Duarte 等[9]在 Quantum GIS 環(huán)境下開發(fā)了使用 RUSLE 方法估計流域尺度上侵蝕率的程序,并且也提供改程序的 Web 版本,用于土壤流失方面的研究和應用;Singh[10]通過CityGML,X3D,X3DOM,WebGL,GeoServer3D等開源 GIS 工具的組合,構(gòu)建了 3D 場景,以此為基礎(chǔ)模擬了洪水淹沒過程。雖然開源 GIS 在水利行業(yè)已經(jīng)得到廣泛的應用,但是這些應用大多針對特定的需求進行開源軟件的選取與組合:一方面 GIS軟件的選取取決于研發(fā)人員的喜好而具有隨意性;另一方面,沒有形成針對行業(yè)需求的系統(tǒng)性的解決方案,針對開源 GIS 軟件使用過程中可能涉及的許可證問題也缺乏探討。
從 GIS 的定義看,GIS 是用于輸入、存儲、查詢、分析和顯示地理數(shù)據(jù)的計算機系統(tǒng)[11];從 GIS應用于水利行業(yè)的工程實踐看,主要涉及地理數(shù)據(jù)的加工、存儲、發(fā)布、分析、展示 5 個環(huán)節(jié)。本研究從這 5 個環(huán)節(jié)收集和梳理現(xiàn)有的開源 GIS 軟件,考察其優(yōu)缺點,采用組合的思想,建立中小型水利信息化開源 GIS 平臺的解決方案,并開展工程實踐。
在梳理開源 GIS 軟件分類前,首先要注意軟件授權(quán)許可的問題。軟件授權(quán)許可詳盡表述了獲得代碼后擁有的權(quán)利,可以對別人的作品進行何種操作,何種操作又是被禁止的[12]。世界上開源軟件協(xié)議的種類非常多,并且同一款協(xié)議有很多變種,比較常見的協(xié)議有 MIT,GPL,LGPL,BSD,Apache 2.0 等。當前國內(nèi)使用開源軟件時普遍存在忽略開源軟件許可的情況,極易引發(fā)相關(guān)法律問題,因此在使用開源 GIS 軟件時,需要注意開源要求、修改聲明、專利授權(quán)、許可證兼容、商標使用、網(wǎng)絡(luò)分法等幾方面的條款要求。
本研究從水利信息化系統(tǒng)的構(gòu)建過程和需求出發(fā),從開發(fā)語言、軟件功能等角度,按照 5 個環(huán)節(jié)對開源 GIS 軟件進行分類,具體分類如表 1 所示。這種分類方式雖不能涵蓋所有的開源 GIS 軟件,但能指導水利工程應用中對各種開源 GIS 軟件的選取和組合。值得一提的是:雖然開源 GIS 基礎(chǔ)性類庫,如 Proj.4,GDAL,OGR 等嚴格來說很難歸類到某一個環(huán)節(jié),但是在開源 GIS 軟件中被廣泛采用,其中許多軟件也被商業(yè) GIS 軟件采用。
表 1 開源 GIS 軟件分類
空間數(shù)據(jù)前期的數(shù)據(jù)加工處理及分析工作一般采用桌面級 GIS 軟件完成,常見的桌面級 GIS 軟件特點和許可類型如表 2 所示。這些軟件可大致劃分為 2 類:一類以構(gòu)建完整的桌面級 GIS 平臺為主要目標,包括 uDIg,Quantum GIS,Open Jump,gvSIG,MapWindow 等;另一類更加側(cè)重于完成復雜的空間分析功能,包括 GRASS,GeoDa,WhiteBox GAT。水利空間數(shù)據(jù)主要以河道、湖泊等水域邊界,測站、閘門、泵站等水利設(shè)施的定位等數(shù)據(jù)為主。加工此類數(shù)據(jù)的功能需求相對簡單,比較而言,uDig 和 Quantum GIS 在易用性方面和商業(yè) GIS軟件接近,容易上手,具備對常見類型空間數(shù)據(jù)文件的編輯修改及空間分析等功能,完全能夠滿足輕量級水利 WebGIS 構(gòu)建前期對空間數(shù)據(jù)的加工處理需求。
uDig 的許可為 EPL,Quantum GIS 的許可為GNU Free Documentation License,如果在這 2 種軟件上進行二次開發(fā),或者使用部分模塊集成到應用系統(tǒng)中,系統(tǒng)將難以進行商業(yè)化使用。但是在僅使用軟件進行數(shù)據(jù)處理,系統(tǒng)本身并不集成這 2 種軟件的情況下,系統(tǒng)的商業(yè)化使用不會受到影響。
關(guān)系型數(shù)據(jù)庫 + 空間數(shù)據(jù)引擎通常是一種中間件解決方案。用戶將自己的空間數(shù)據(jù)交給獨立于數(shù)據(jù)庫之外的空間數(shù)據(jù)引擎,由其組織空間數(shù)據(jù)在關(guān)系型數(shù)據(jù)庫中存儲;當用戶需要訪問數(shù)據(jù)時,再通知空間數(shù)據(jù)引擎,從關(guān)系型數(shù)據(jù)庫中取出數(shù)據(jù),并轉(zhuǎn)化為客戶可以使用的方式。大多數(shù)空間數(shù)據(jù)庫都采用這一方案。
在開源空間數(shù)據(jù)庫方面可供選擇的軟件不多,主要軟件特點及許可類型如表 3 所示,PostgreSQL/PostGIS 目前應用最為廣泛。PostgreSQL 是一種對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(ORDBMS),也是目前功能最強大、特性最豐富和最復雜的自由軟件數(shù)據(jù)庫系統(tǒng),是最重要的開源數(shù)據(jù)庫產(chǎn)品開發(fā)項目之一。PostGIS 是對 PostgreSQL 的一個擴展,遵循OpenGIS 的規(guī)范,PostGIS 提供的空間信息服務(wù)功能包括空間對象的存儲、索引、操作函數(shù)和操作符。MySQL 遵從 OpenGIS 的規(guī)范,實施具有 Geometry類型的 SQL 環(huán)境的一個子集,也得到一定的應用。
表 2 數(shù)據(jù)加工類開源 GIS 軟件特點和許可類型
表 3 空間數(shù)據(jù)庫軟件特點及許可類型
PostgreSQL/PostGIS 是目前開源空間數(shù)據(jù)庫的首選,該協(xié)議并不限制軟件在商業(yè)化場景中使用,但需要注意的是該軟件本身不能收費,并且使用這類軟件時只能將該軟件作為獨立組件使用,不得修改軟件源代碼,否則整個系統(tǒng)源代碼都可能面臨必須開源的要求。
因為數(shù)據(jù)量小,輕量級水利 WebGIS 雖然對地圖服務(wù)器不要求有極高的性能,但是有以下一些要求:
1)部署簡單,配置容易上手,易維護;
2)能夠定制地圖元素和空間數(shù)據(jù)的樣式,提供豐富的制圖手段;
3)支持主流空間數(shù)據(jù)格式,支持標準的 WMS,WFS,WPS 等規(guī)范。
地圖發(fā)布開源 GIS 軟件特點和許可類型如表 4所示,MapGuide 和 MapFish 近年來在水利行業(yè)使用得很少,出現(xiàn)問題不利于獲得技術(shù)支持。綜合而言,MapServer,GeoServer 不但滿足上述所有要求,而且廣泛使用,有更多的研發(fā)人員參與使用和改進,比較適合用于輕量級水利 WebGIS 的地圖服務(wù)器。
表 4 地圖發(fā)布開源 GIS 軟件特點和許可類型
MapServer 遵循的是 MIT 許可,使用中注明版權(quán)和協(xié)議,商業(yè)和非商業(yè)環(huán)境皆可使用;Geo-Server 使用的是 GPL2.0 協(xié)議,使用時注意事項同PostgreSQL/PostGIS。
空間分析包括用于理解地理特征的模式和關(guān)系的各種技術(shù)和計算過程的集合體??臻g分析包含的種類或算法非常龐大,這里列出的空間分析的庫只是很小的一部分,軟件特點和許可類型如表 5 所示,其中:GRASS,GeoDa,GeoTools 和 PySAL 屬于成體系的空間分析軟件;PyWPS 和 ZOO-Project側(cè)重于提供網(wǎng)絡(luò)空間分析服務(wù),可以與多種空間分析軟件進行集成;Turf,JSTS 和 kriging.js 則運行于前端的 JavaScript 空間分析庫。
表 5 空間分析類開源 GIS 軟件
在進行 WebGIS 系統(tǒng)集成的過程中,開源空間分析軟件的選擇需要根據(jù)需求具體確定,一般來說水利行業(yè)中輕量級 GIS 應用只需要簡單的空間分析功能,可以選擇集成實現(xiàn)了該部分功能的軟件模塊。表 5 所述軟件在商業(yè)化使用中除了 GRASS 和GeoDa 的 GPL 協(xié)議要特別注意外,其他風險較低。
常見開源 GIS 前端軟件的特點及許可類型如表 6 所示。商業(yè)提供的地圖 API(應用程序編程接口)包括 Google Maps Javascript API、百度地圖JavaScript API、高德地圖 JS API、天地圖 JS API 和Mapbox GL JS 等,這些由商業(yè)公司提供的 API 省去了開發(fā) WebGIS 系統(tǒng)的諸多環(huán)節(jié),能夠快速構(gòu)建出簡單的地圖應用,缺點是免費版本有一定功能或者性能限制,且在沒有互聯(lián)網(wǎng)的內(nèi)網(wǎng)環(huán)境下無法使用。Leaflet 和 OpenLayers 都是應用極為廣泛的開源 WebGIS 前端,兩者各有千秋,面對輕量級應用皆能滿足需求;CesiumJs 則在三維應用中比較有優(yōu)勢。Leaflet,OpenLayers 和 CesiumJs 所采用的開源協(xié)議皆允許在商業(yè)環(huán)境下使用。
表 6 開源 GIS 前端軟件
在梳理和比較各類開源 GIS 軟件的基礎(chǔ)上,本研究將結(jié)合典型的 WebGIS 框架和應用場景需求,提供不同應用場景的開源 GIS 解決方案。
圖 1 是一個完整的 WebGIS 的構(gòu)建框架,空間數(shù)據(jù)經(jīng)過加工處理后,存儲于空間數(shù)據(jù)庫或文件中,通過 GIS 和 Web 服務(wù)器發(fā)布為標準的地圖服務(wù),通過網(wǎng)絡(luò)傳輸在前端呈現(xiàn)??臻g分析的功能模塊既可以在服務(wù)端實現(xiàn),也可以在前端實現(xiàn)。
圖 1 WebGIS 構(gòu)建框架
輕量級水利 WebGIS 應用的輕量主要體現(xiàn)在:機構(gòu)管理的范圍小,數(shù)據(jù)量小,或者管理的工程數(shù)量相對較少,具體功能需求隨工程項目的不同而有所差異。因此在應用開源 GIS 軟件時需要依據(jù)需求的復雜度提供多種模塊組合方案,以滿足不同層次的需求。結(jié)合 WebGIS 框架,將需求劃分為 4 個應用場景,并針對每個場景給出相關(guān)的 GIS 解決方案,具體如表 7 所示。
表 7 不同應用場景下的開源軟件組合方案
應用場景中需要對客戶獨有的空間數(shù)據(jù)進行加工并疊加在地圖上顯示。在地圖發(fā)布前,對空間數(shù)據(jù)進行處理和加工是基本的環(huán)節(jié)。常見的需求包括站點數(shù)據(jù)的添加、修改和刪除,河流、湖泊等區(qū)域的勾勒突出,區(qū)域范圍的劃分及對各類地圖要素的配色出圖。uDig 和 Quantum GIS 都是較為優(yōu)秀的開源桌面 GIS 軟件,完全能夠滿足對基本的點線面等空間及屬性要素的編輯修改,地圖配色,出圖等功能要求,Quantum GIS 對地圖的樣式設(shè)置還可以導出為 SLD 文件,供 GeoServer 發(fā)布地圖使用。
應用場景中百度、高德、天地圖等互聯(lián)網(wǎng)地圖能夠滿足提供地理底圖要求,并且系統(tǒng)運行環(huán)境允許連接互聯(lián)網(wǎng)?;镜男枨鬄樵诘貓D上疊加展示數(shù)據(jù)等各類信息,當需要在二維地圖上進行信息疊加時可以選用 OpenLayers 或者 Leaflet,OpenLayers 是一個十分完善的 GIS 前端功能模塊,Leaflet 更小更輕,對移動端開發(fā)更加友好。如果需要在三維地圖上進行展示,目前可供選擇的 Web 三維軟件庫不多,CesiumJs 是其中較為成熟的軟件。
應用場景中需要將客戶獨有的空間數(shù)據(jù)通過地圖服務(wù)器發(fā)布并且在前端展示。前端展示可以參照場景二,定制地圖發(fā)布可通過 PostGIS + GeoServer +GeoWebCache 組合的方式進行發(fā)布:PostGIS 是非常成熟可靠的開源空間數(shù)據(jù)庫;GeoServer 用于發(fā)布地圖服務(wù),提供標準的 WMS,WFS 及 WPS 服務(wù);GeoWebCache 用于生成瓦片地圖,提升地圖的訪問效率。
應用場景中需要將客戶獨有的空間數(shù)據(jù)通過地圖服務(wù)器發(fā)布,在前端進行二三維混合展示,并且進行一些基本的空間分析操作。定制地圖和數(shù)據(jù)展示的需求可以參照應用場景三??臻g分析所涵蓋的應用領(lǐng)域和算法種類非常多,沒有特定的軟件庫能夠涵蓋所有算法,一般根據(jù)具體算法需求選取相應的開源庫軟件,例如:Turf.js 主要用于實現(xiàn)網(wǎng)頁端空間幾何對象關(guān)系的計算,包括點、線、面之間的包含及相交等一系列運算;kriging.js 實現(xiàn)了網(wǎng)頁前端的克里金插值功能等。
水利 PPGIS 系統(tǒng)(公眾參與地理信息系統(tǒng))是一個向公眾傳達水利信息、知識,解釋水利政策,鼓勵公眾參與水利決策的平臺,需要提供基于 GIS的移動端數(shù)據(jù)展示功能。PPGIS 系統(tǒng)對于 GIS 的主要功能需求包括基于 GIS 底圖的風場、流場、臺風路徑、站點實時數(shù)據(jù)的展示等,GIS 底圖采用公開的互聯(lián)網(wǎng)地圖,如百度地圖、天地圖等。PPGIS 系統(tǒng)的需求重點在于基于 GIS 的水利數(shù)據(jù)展示,符合應用場景二描述的需求,因此在 GIS 軟件集成的方案中采用 leaflet 作為 GIS 前端。PPGIS 系統(tǒng)開發(fā)過程注重動態(tài)效果,流場、風場采用粒子流的表達方式,臺風路徑采用動態(tài)表達的方式,取得了良好的效果。
某水庫水雨情系統(tǒng)有以下 3 個方面的要求:首先,系統(tǒng)部分客戶端運行在內(nèi)網(wǎng)中,無法訪問互聯(lián)網(wǎng)地圖;其次,地圖上需疊加庫區(qū)范圍、站點等定制化圖層;最后,地圖部分融合到大數(shù)據(jù)看板中,頁面展示更加豐富。該系統(tǒng)的需求包括地圖定制發(fā)布、前端展示 2 個方面,與 4 個應用場景對比后確定場景三的解決方案能夠滿足上述要求,采用PostGIS + GeoServer + GeoWebCache 發(fā)布地圖,前端選取 OpenLayers,融合各類圖、表、曲線圖構(gòu)建系統(tǒng)大數(shù)據(jù)看板,全面監(jiān)測水庫水雨情信息。
某電網(wǎng)氣象系統(tǒng)要求提供基于 GIS 的氣象預報信息(氣溫、風速風向、濕度等)的展示,提供在線等值線計算功能,運行于安全二區(qū),與互聯(lián)網(wǎng)完全隔絕,同時服務(wù)器操作系統(tǒng)采用的是國產(chǎn) linux操作系統(tǒng)。該系統(tǒng)的需求包括地圖定制發(fā)布、前端展示及在線等值線計算,與 4 個場景對比后確定應用場景四的方案能夠很好地滿足上述功能需求,從而確定采用 PostGIS + GeoServer + GeoWebCache +OpenLayers + kriging.js 的 GIS 軟件集成方案。
開源 GIS 軟件在水利行業(yè)中的應用已經(jīng)非常普遍,但往往針對某個具體問題選取某個軟件予以解決時,缺乏系統(tǒng)性的整理和分析。本研究根據(jù)應用需求總結(jié)了 4 個應用場景并提供了針對性的解決方案。這些不同場景的方案,一方面為水利 WebGIS提供了指導作用,可根據(jù)項目應用需求對照相應場景快速構(gòu)建 WebGIS 系統(tǒng),提升效率;另一方面,全開源的方案節(jié)約了項目建設(shè)資金,對于部分中西部地區(qū)和中小水利管理機構(gòu)的水利信息化項目有很好的經(jīng)濟效益。值得注意的是:在空間分析方面,本研究只是簡單地選擇相應的算法庫予以集成,但面對復雜應用時可能需要多個算法庫和自研算法或者模型進行結(jié)合,這方面仍需加強研究和實踐。