宋 健,秦 奮,韓志剛
(1.黃河中下游數字地理技術實驗室,河南 開封 475004;2.河南大學 環境與規劃學院,河南 開封 475004)
基于插件式土壤侵蝕經驗模型系統的探討與實現
宋 健1,2,秦 奮1,2,韓志剛1,2
(1.黃河中下游數字地理技術實驗室,河南 開封 475004;2.河南大學 環境與規劃學院,河南 開封 475004)

插件式土壤侵蝕經驗模型系統結合了GIS技術和插件技術,再現土壤侵蝕經驗性表達過程。在.NET開發環境中, 利用 ArcGIS Engine開發包,借助插件技術的松散耦合機制,賦予了系統動態擴展特性,從而實現了宿主程序、插件模塊和通信契約的設計,完成了基礎地圖操作插件、基本文件管理插件、基礎地形分析插件以及年產沙經驗模型插件的開發設計,方便了其他模型和框架平臺的集成,進而驗證了構建插件式系統的可行性。
框架平臺;插件;接口;土壤侵蝕經驗模型
土壤侵蝕經驗模型能夠從侵蝕產沙的基本成因出發,根據實際觀測到的數據,采用數理統計方法,建立不同流域侵蝕產沙量與主要影響因素之間的經驗關系,指導人們合理利用土地,對于維持人類生存環境具有重要作用[1-3]。在土壤侵蝕經驗模型開發過程中,傳統的方法只是根據系統的總體設計,按部就班地完成軟件的各個功能,最終開發出一個完整的軟件系統。而這樣的軟件框架并沒有很好的模塊化、可重用性、可擴展性、簡單性和可維護性[4]。采用基于插件式GIS土壤侵蝕經驗模型的開發方法,對于編寫結構復雜、需求多變的土壤侵蝕經驗模型而言不失為最佳選擇之一。
本文將插件技術引入到土壤侵蝕經驗模型開發當中,并在模型的選取與方法的運用上,開發了平臺宿主程序,插件連接器和不同的插件模塊。探索基于ArcGIS Engine的GIS軟件搭建土壤侵蝕經驗模型插件平臺的關鍵技術與方法,實現了插件式土壤侵蝕經驗模型的開發。
基于ArcGIS Engine的插件式框架平臺主要由宿主程序、插件契約、插件容器及插件引擎組成。宿主程序是不同插件的依附對象,可以獨立存在,在不改變主程序框架的情況下,可以通過增減插件和改變插件的方式來管理系統功能。插件契約作為插件式GIS框架中宿主程序和插件層的通信橋梁,主要以接口的形式表示。插件容器的設計是插件式應用框架的重要組成部分。通過對框架平臺的搭建,實現了對GIS控件管理以及解析基礎地圖操作插件、工程文件管理插件、基礎地形分析插件和年產沙經驗模型插件的功能。其中框架平臺的主體結構如圖1所示。

圖1 框架平臺基本結構圖
2.1 土壤侵蝕經驗模型流程設計
土壤侵蝕經驗模型一般由模型、數據處理及模型計算成果演示3部分組成。模型開發選擇具有代表性的入黃支流孤山川為典型研究區,以流域DEM、流域土地利用數據、土壤類型數據、流域雨量站空間數據、流域工程因子數據、年降雨觀測數據、年NDVI數據等基礎數據為依托,基于經驗模型算法,結合各類模型因子的計算以及經驗模型可視化技術,形象直觀地展示了土壤侵蝕經驗模型的計算過程。
在模型計算之前,最為重要的是獲取有關模型計算的數據。其中,關鍵的流域DEM數據,可利用地形圖進行數字化處理,然后再內插生成DEM[5,6]。土地利用數據參考流域土地利用圖等相關資料,建立對應的分類體系與解譯標準,再基于遙感影像進行監督分類和交互式解譯,從而完成土地利用類型提取。土壤類型數據是流域侵蝕產沙的一個重要基礎數據,采用Williams的K值估算法提取。雨量站數據的獲取,是利用經緯度坐標生成相應的點要素類,并賦以站名屬性,從而獲取相應的數據。流域工程因子數據以流域治理規劃圖為基礎,參照野外采樣的標準流域治理措施圖片、采樣表等,再進行影像人工解譯、勾繪來獲取。流域降雨觀測資料是進行土壤侵蝕預報不可缺少的關鍵資料,多以表格的形式加以記錄。年NDVI數據主要是TM影像經過幾何校正,從TM影像中計算分析所得。
在模型的計算結果演示中,主要包括基礎地形分析插件和年產沙經驗模型插件計算。基礎地形分析插件完成了地形填洼中DEM預處理和坡度分析,并計算出相應結果。年產沙經驗模型對應3個不同的部分,每個部分實現了不同的接口,主要完成年產沙經驗模型的因子計算及模型計算,以及計算成果的可視化功能,有關功能設計如圖2所示。

圖2 年產沙經驗模型插件模塊設計
2.2 宿主程序設計
參照一般的插件式應用程序框架設計,本文的宿主程序設計包含主控程序、插件引擎和通信契約的設計。
主控程序包含一個EXE的可執行程序,也是整個框架程序的接入口,負責調用插件庫中不同類型的插件對象,并以用戶接口(UI)的形式顯示,配合宿主程序上的GIS控件、其他UI控件以及不同插件對象之間的相互交互。其中,主控程序解析UI對象,生成相應的工具、按鈕和菜單等。最后加載模擬工程文件,生成宿主程序界面,如圖3所示。
插件引擎負責對插件程序集進行解析,提取其中的插件類型信息并生成對應的插件對象,存儲到插件容器中,采用.NET的反射機制和接口技術來實現插件模塊的動態加載,再交給界面程序處理。

圖3 插件式土壤侵蝕經驗模型系統
通信契約是宿主程序和插件之間互相認可的一種標準,以接口形式存在。根據插件式土壤侵蝕經驗模型框架需求,要實現不同的插件表現形式,需要定義以下5種接口:IPlugin、ICommand、ITool、IToolBarDef、IMenuDef。這些接口是以ESRI.ArcGIS.SystemUI中定義的擴展插件接口為模仿對象,同時也為了設計的簡單化,本文合并了一些接口的定義,設計了對應的自定義插件對象接口。
2.3 功能插件設計
基于黃土高原水土流失經驗模型的研究,開發插件式土壤侵蝕經驗模型,能夠實現對區域土壤侵蝕的經驗性表達,分析出區域土壤侵蝕產沙特征,對整個土壤侵蝕經驗模型研究都有十分重要的意義。此外,本系統需要集成一些GIS常用功能,在數據的預處理過程中,為用戶提供交互式操作,而插件又是系統的承載者。因此,土壤侵蝕經驗模型系統包含基礎地圖操作插件、基本文件管理插件、基礎地形分析插件以及年產沙經驗模型插件。
2.3.1 基礎地圖操作插件
通過調用ArcGIS Engine內置組件,GIS基礎地圖操作插件,實現添加數據、地圖放大、地圖縮小、平移、全局視圖、刷新功能。該插件是一個通用插件,每一個土壤侵蝕經驗模型系統,都能夠加載此插件實現GIS基本功能。
2.3.2 基本文件管理插件
基本文件管理插件是整個土壤侵蝕經驗模型的基礎,通過配置各項參數,運行模型,實現工程文件新建、打開、另存和關閉功能。只有實現了該插件功能,才能為后續的基礎地形分析插件和年產沙經驗模型插件提供先決條件。同時,該插件也是一個通用插件,任何土壤侵蝕經驗模型插件都能加載此插件來管理模擬工程功能。
2.3.3 基礎地形分析插件
基礎地形分析插件包含地形填洼和坡度分析兩個功能。首先,在地形填洼中,需要搜索原始DEM矩陣用來確定洼地單元格,從洼地集水區域中找出潛在的出流點,通過對洼地的有效處理生成無洼地DEM,從而完成地形填洼運算。在坡度分析中,采用擬合曲面法,即3×3的窗口,每個窗口中心是一個高程點,利用對應的坡度計算公式來進行坡度分析算法的計算。
2.3.4 年產沙經驗模型插件
年產沙經驗模型插件完成模型因子分析、經驗模型侵蝕評價以及模型成果可視化功能。該插件根據年產沙經驗模型的原理,在進行模型開發時,設計 了 RFactor、KFactor、BFactor、EFactor、TFactor、LSFactor、GFactor類庫,定義了一系列年產沙經驗模型的計算方法,封裝了模型的計算過程。根據設定好的計算參數,可直接調用相關算法,分步驟計算各類因子、進行經驗模型計算,再完成相應的成果可視化。
該組件集中各組件類的詳細結構圖如4所示。

圖4 組件類結構示意圖
在完成了宿主程序和其他功能插件的開發之后,再將年產沙經驗模型插件放到平臺存放插件的plugin目錄文件夾中。啟動插件式土壤侵蝕經驗模型系統后,加載基本文件管理插件,添加對應的模擬工程,進而在“年產沙經驗模型插件”中進行模型運算。圖5以“耕作因子”計算為例,展示年產沙經驗模型的計算過程。
插件式土壤侵蝕經驗模型基于.Net技術和ArcGIS Engine平臺搭建,將不同的功能模塊以插件的形式集成到框架中,實現了宿主框架在軟件應用工程方面的擴展。本文根據土壤侵蝕經驗模型在系統開發方面存在的問題,在深入研究GIS、土壤侵蝕經驗模型和插件技術基礎上,提出將土壤侵蝕經驗模型和插件技術相結合的開發設想,實現了主程序和插件間的無縫連接,大大提高了系統的靈活性和擴展性,驗證了構建插件式系統的可行性,從而為黃土高原土壤侵蝕預測預報提供技術支撐。

圖5 耕作因子計算結果圖
[1] 朱連奇,馮文峰,朱文博.土壤侵蝕研究中的“3S”技術應用進展[J].地理科學進展,2008,27(6):57-62
[2] 蔡強國,劉紀根.關于我國土壤侵蝕模型研究進展[J].地理科學進展,2003,22(3):242-250
[3] 李景玉,張楠,王榮彬. 黃河流域土壤侵蝕產沙模型研究進展[J].地理科學進展,2006,25(2):103-111
[4] 湯國安,劉學軍,閭國年.數字高程模型及地學分析的原理與方法[M].北京:科學出版社,2005
[5] 李志林,朱慶. 數字高程模型[M].武漢:武漢測繪科技大學出版社,2000
[6] Peel T C.The Relation of Certain Physical Characteristics to the Erodibility of Soils[J]. Soil Science Society Proceedings,1937,26(2):79-84.
[7] 蔣波濤.插件式 GIS 應用框架的設計與實現[M].北京:電子工業出版社,2008
[8] 聞平,王媛,王沖. 插件式GIS 應用框架的實現與應用[J].地理空間信息,2012,10(4):118-119
[9] 惠廣裕,鄧躍進,蔡京晶. GIS由COM框架向.NET框架遷移的研究[J].地理空間信息,2008,6(6):56- 58
[10] 陳紅華,李滿春,李飛雪. 插件式GIS應用框架的設計與實現[J].地理空間信息,2011,9(2):26-28
P208
B
1672-4623(2014)05-0098-03
10.3969/j.issn.1672-4623.2014.05.036
宋健,碩士,主要從事基礎測繪、地理信息系統軟件應用與開發、遙感應用研究。
2014-01-15。
項目來源:水利部公益性行業專項經費資助項目(201201081)。