宋 健,秦 奮,韓志剛
(1.黃河中下游數(shù)字地理技術(shù)實驗室,河南 開封 475004;2.河南大學 環(huán)境與規(guī)劃學院,河南 開封 475004)
基于插件式土壤侵蝕經(jīng)驗?zāi)P拖到y(tǒng)的探討與實現(xiàn)
宋 健1,2,秦 奮1,2,韓志剛1,2
(1.黃河中下游數(shù)字地理技術(shù)實驗室,河南 開封 475004;2.河南大學 環(huán)境與規(guī)劃學院,河南 開封 475004)
插件式土壤侵蝕經(jīng)驗?zāi)P拖到y(tǒng)結(jié)合了GIS技術(shù)和插件技術(shù),再現(xiàn)土壤侵蝕經(jīng)驗性表達過程。在.NET開發(fā)環(huán)境中, 利用 ArcGIS Engine開發(fā)包,借助插件技術(shù)的松散耦合機制,賦予了系統(tǒng)動態(tài)擴展特性,從而實現(xiàn)了宿主程序、插件模塊和通信契約的設(shè)計,完成了基礎(chǔ)地圖操作插件、基本文件管理插件、基礎(chǔ)地形分析插件以及年產(chǎn)沙經(jīng)驗?zāi)P筒寮拈_發(fā)設(shè)計,方便了其他模型和框架平臺的集成,進而驗證了構(gòu)建插件式系統(tǒng)的可行性。
框架平臺;插件;接口;土壤侵蝕經(jīng)驗?zāi)P?/p>
土壤侵蝕經(jīng)驗?zāi)P湍軌驈那治g產(chǎn)沙的基本成因出發(fā),根據(jù)實際觀測到的數(shù)據(jù),采用數(shù)理統(tǒng)計方法,建立不同流域侵蝕產(chǎn)沙量與主要影響因素之間的經(jīng)驗關(guān)系,指導人們合理利用土地,對于維持人類生存環(huán)境具有重要作用[1-3]。在土壤侵蝕經(jīng)驗?zāi)P烷_發(fā)過程中,傳統(tǒng)的方法只是根據(jù)系統(tǒng)的總體設(shè)計,按部就班地完成軟件的各個功能,最終開發(fā)出一個完整的軟件系統(tǒng)。而這樣的軟件框架并沒有很好的模塊化、可重用性、可擴展性、簡單性和可維護性[4]。采用基于插件式GIS土壤侵蝕經(jīng)驗?zāi)P偷拈_發(fā)方法,對于編寫結(jié)構(gòu)復雜、需求多變的土壤侵蝕經(jīng)驗?zāi)P投圆皇樽罴堰x擇之一。
本文將插件技術(shù)引入到土壤侵蝕經(jīng)驗?zāi)P烷_發(fā)當中,并在模型的選取與方法的運用上,開發(fā)了平臺宿主程序,插件連接器和不同的插件模塊。探索基于ArcGIS Engine的GIS軟件搭建土壤侵蝕經(jīng)驗?zāi)P筒寮脚_的關(guān)鍵技術(shù)與方法,實現(xiàn)了插件式土壤侵蝕經(jīng)驗?zāi)P偷拈_發(fā)。
基于ArcGIS Engine的插件式框架平臺主要由宿主程序、插件契約、插件容器及插件引擎組成。宿主程序是不同插件的依附對象,可以獨立存在,在不改變主程序框架的情況下,可以通過增減插件和改變插件的方式來管理系統(tǒng)功能。插件契約作為插件式GIS框架中宿主程序和插件層的通信橋梁,主要以接口的形式表示。插件容器的設(shè)計是插件式應(yīng)用框架的重要組成部分。通過對框架平臺的搭建,實現(xiàn)了對GIS控件管理以及解析基礎(chǔ)地圖操作插件、工程文件管理插件、基礎(chǔ)地形分析插件和年產(chǎn)沙經(jīng)驗?zāi)P筒寮墓δ?。其中框架平臺的主體結(jié)構(gòu)如圖1所示。
圖1 框架平臺基本結(jié)構(gòu)圖
2.1 土壤侵蝕經(jīng)驗?zāi)P土鞒淘O(shè)計
土壤侵蝕經(jīng)驗?zāi)P鸵话阌赡P?、?shù)據(jù)處理及模型計算成果演示3部分組成。模型開發(fā)選擇具有代表性的入黃支流孤山川為典型研究區(qū),以流域DEM、流域土地利用數(shù)據(jù)、土壤類型數(shù)據(jù)、流域雨量站空間數(shù)據(jù)、流域工程因子數(shù)據(jù)、年降雨觀測數(shù)據(jù)、年NDVI數(shù)據(jù)等基礎(chǔ)數(shù)據(jù)為依托,基于經(jīng)驗?zāi)P退惴?,結(jié)合各類模型因子的計算以及經(jīng)驗?zāi)P涂梢暬夹g(shù),形象直觀地展示了土壤侵蝕經(jīng)驗?zāi)P偷挠嬎氵^程。
在模型計算之前,最為重要的是獲取有關(guān)模型計算的數(shù)據(jù)。其中,關(guān)鍵的流域DEM數(shù)據(jù),可利用地形圖進行數(shù)字化處理,然后再內(nèi)插生成DEM[5,6]。土地利用數(shù)據(jù)參考流域土地利用圖等相關(guān)資料,建立對應(yīng)的分類體系與解譯標準,再基于遙感影像進行監(jiān)督分類和交互式解譯,從而完成土地利用類型提取。土壤類型數(shù)據(jù)是流域侵蝕產(chǎn)沙的一個重要基礎(chǔ)數(shù)據(jù),采用Williams的K值估算法提取。雨量站數(shù)據(jù)的獲取,是利用經(jīng)緯度坐標生成相應(yīng)的點要素類,并賦以站名屬性,從而獲取相應(yīng)的數(shù)據(jù)。流域工程因子數(shù)據(jù)以流域治理規(guī)劃圖為基礎(chǔ),參照野外采樣的標準流域治理措施圖片、采樣表等,再進行影像人工解譯、勾繪來獲取。流域降雨觀測資料是進行土壤侵蝕預(yù)報不可缺少的關(guān)鍵資料,多以表格的形式加以記錄。年NDVI數(shù)據(jù)主要是TM影像經(jīng)過幾何校正,從TM影像中計算分析所得。
在模型的計算結(jié)果演示中,主要包括基礎(chǔ)地形分析插件和年產(chǎn)沙經(jīng)驗?zāi)P筒寮嬎恪;A(chǔ)地形分析插件完成了地形填洼中DEM預(yù)處理和坡度分析,并計算出相應(yīng)結(jié)果。年產(chǎn)沙經(jīng)驗?zāi)P蛯?yīng)3個不同的部分,每個部分實現(xiàn)了不同的接口,主要完成年產(chǎn)沙經(jīng)驗?zāi)P偷囊蜃佑嬎慵澳P陀嬎?,以及計算成果的可視化功能,有關(guān)功能設(shè)計如圖2所示。
圖2 年產(chǎn)沙經(jīng)驗?zāi)P筒寮K設(shè)計
2.2 宿主程序設(shè)計
參照一般的插件式應(yīng)用程序框架設(shè)計,本文的宿主程序設(shè)計包含主控程序、插件引擎和通信契約的設(shè)計。
主控程序包含一個EXE的可執(zhí)行程序,也是整個框架程序的接入口,負責調(diào)用插件庫中不同類型的插件對象,并以用戶接口(UI)的形式顯示,配合宿主程序上的GIS控件、其他UI控件以及不同插件對象之間的相互交互。其中,主控程序解析UI對象,生成相應(yīng)的工具、按鈕和菜單等。最后加載模擬工程文件,生成宿主程序界面,如圖3所示。
插件引擎負責對插件程序集進行解析,提取其中的插件類型信息并生成對應(yīng)的插件對象,存儲到插件容器中,采用.NET的反射機制和接口技術(shù)來實現(xiàn)插件模塊的動態(tài)加載,再交給界面程序處理。
圖3 插件式土壤侵蝕經(jīng)驗?zāi)P拖到y(tǒng)
通信契約是宿主程序和插件之間互相認可的一種標準,以接口形式存在。根據(jù)插件式土壤侵蝕經(jīng)驗?zāi)P涂蚣苄枨?,要實現(xiàn)不同的插件表現(xiàn)形式,需要定義以下5種接口:IPlugin、ICommand、ITool、IToolBarDef、IMenuDef。這些接口是以ESRI.ArcGIS.SystemUI中定義的擴展插件接口為模仿對象,同時也為了設(shè)計的簡單化,本文合并了一些接口的定義,設(shè)計了對應(yīng)的自定義插件對象接口。
2.3 功能插件設(shè)計
基于黃土高原水土流失經(jīng)驗?zāi)P偷难芯?,開發(fā)插件式土壤侵蝕經(jīng)驗?zāi)P?,能夠?qū)崿F(xiàn)對區(qū)域土壤侵蝕的經(jīng)驗性表達,分析出區(qū)域土壤侵蝕產(chǎn)沙特征,對整個土壤侵蝕經(jīng)驗?zāi)P脱芯慷加惺种匾囊饬x。此外,本系統(tǒng)需要集成一些GIS常用功能,在數(shù)據(jù)的預(yù)處理過程中,為用戶提供交互式操作,而插件又是系統(tǒng)的承載者。因此,土壤侵蝕經(jīng)驗?zāi)P拖到y(tǒng)包含基礎(chǔ)地圖操作插件、基本文件管理插件、基礎(chǔ)地形分析插件以及年產(chǎn)沙經(jīng)驗?zāi)P筒寮?/p>
2.3.1 基礎(chǔ)地圖操作插件
通過調(diào)用ArcGIS Engine內(nèi)置組件,GIS基礎(chǔ)地圖操作插件,實現(xiàn)添加數(shù)據(jù)、地圖放大、地圖縮小、平移、全局視圖、刷新功能。該插件是一個通用插件,每一個土壤侵蝕經(jīng)驗?zāi)P拖到y(tǒng),都能夠加載此插件實現(xiàn)GIS基本功能。
2.3.2 基本文件管理插件
基本文件管理插件是整個土壤侵蝕經(jīng)驗?zāi)P偷幕A(chǔ),通過配置各項參數(shù),運行模型,實現(xiàn)工程文件新建、打開、另存和關(guān)閉功能。只有實現(xiàn)了該插件功能,才能為后續(xù)的基礎(chǔ)地形分析插件和年產(chǎn)沙經(jīng)驗?zāi)P筒寮峁┫葲Q條件。同時,該插件也是一個通用插件,任何土壤侵蝕經(jīng)驗?zāi)P筒寮寄芗虞d此插件來管理模擬工程功能。
2.3.3 基礎(chǔ)地形分析插件
基礎(chǔ)地形分析插件包含地形填洼和坡度分析兩個功能。首先,在地形填洼中,需要搜索原始DEM矩陣用來確定洼地單元格,從洼地集水區(qū)域中找出潛在的出流點,通過對洼地的有效處理生成無洼地DEM,從而完成地形填洼運算。在坡度分析中,采用擬合曲面法,即3×3的窗口,每個窗口中心是一個高程點,利用對應(yīng)的坡度計算公式來進行坡度分析算法的計算。
2.3.4 年產(chǎn)沙經(jīng)驗?zāi)P筒寮?/p>
年產(chǎn)沙經(jīng)驗?zāi)P筒寮瓿赡P鸵蜃臃治觥⒔?jīng)驗?zāi)P颓治g評價以及模型成果可視化功能。該插件根據(jù)年產(chǎn)沙經(jīng)驗?zāi)P偷脑?,在進行模型開發(fā)時,設(shè)計 了 RFactor、KFactor、BFactor、EFactor、TFactor、LSFactor、GFactor類庫,定義了一系列年產(chǎn)沙經(jīng)驗?zāi)P偷挠嬎惴椒ǎ庋b了模型的計算過程。根據(jù)設(shè)定好的計算參數(shù),可直接調(diào)用相關(guān)算法,分步驟計算各類因子、進行經(jīng)驗?zāi)P陀嬎?,再完成相?yīng)的成果可視化。
該組件集中各組件類的詳細結(jié)構(gòu)圖如4所示。
圖4 組件類結(jié)構(gòu)示意圖
在完成了宿主程序和其他功能插件的開發(fā)之后,再將年產(chǎn)沙經(jīng)驗?zāi)P筒寮诺狡脚_存放插件的plugin目錄文件夾中。啟動插件式土壤侵蝕經(jīng)驗?zāi)P拖到y(tǒng)后,加載基本文件管理插件,添加對應(yīng)的模擬工程,進而在“年產(chǎn)沙經(jīng)驗?zāi)P筒寮敝羞M行模型運算。圖5以“耕作因子”計算為例,展示年產(chǎn)沙經(jīng)驗?zāi)P偷挠嬎氵^程。
插件式土壤侵蝕經(jīng)驗?zāi)P突冢甆et技術(shù)和ArcGIS Engine平臺搭建,將不同的功能模塊以插件的形式集成到框架中,實現(xiàn)了宿主框架在軟件應(yīng)用工程方面的擴展。本文根據(jù)土壤侵蝕經(jīng)驗?zāi)P驮谙到y(tǒng)開發(fā)方面存在的問題,在深入研究GIS、土壤侵蝕經(jīng)驗?zāi)P秃筒寮夹g(shù)基礎(chǔ)上,提出將土壤侵蝕經(jīng)驗?zāi)P秃筒寮夹g(shù)相結(jié)合的開發(fā)設(shè)想,實現(xiàn)了主程序和插件間的無縫連接,大大提高了系統(tǒng)的靈活性和擴展性,驗證了構(gòu)建插件式系統(tǒng)的可行性,從而為黃土高原土壤侵蝕預(yù)測預(yù)報提供技術(shù)支撐。
圖5 耕作因子計算結(jié)果圖
[1] 朱連奇,馮文峰,朱文博.土壤侵蝕研究中的“3S”技術(shù)應(yīng)用進展[J].地理科學進展,2008,27(6):57-62
[2] 蔡強國,劉紀根.關(guān)于我國土壤侵蝕模型研究進展[J].地理科學進展,2003,22(3):242-250
[3] 李景玉,張楠,王榮彬. 黃河流域土壤侵蝕產(chǎn)沙模型研究進展[J].地理科學進展,2006,25(2):103-111
[4] 湯國安,劉學軍,閭國年.數(shù)字高程模型及地學分析的原理與方法[M].北京:科學出版社,2005
[5] 李志林,朱慶. 數(shù)字高程模型[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 應(yīng)用框架的設(shè)計與實現(xiàn)[M].北京:電子工業(yè)出版社,2008
[8] 聞平,王媛,王沖. 插件式GIS 應(yīng)用框架的實現(xiàn)與應(yīng)用[J].地理空間信息,2012,10(4):118-119
[9] 惠廣裕,鄧躍進,蔡京晶. GIS由COM框架向.NET框架遷移的研究[J].地理空間信息,2008,6(6):56- 58
[10] 陳紅華,李滿春,李飛雪. 插件式GIS應(yīng)用框架的設(shè)計與實現(xiàn)[J].地理空間信息,2011,9(2):26-28
P208
B
1672-4623(2014)05-0098-03
10.3969/j.issn.1672-4623.2014.05.036
宋健,碩士,主要從事基礎(chǔ)測繪、地理信息系統(tǒng)軟件應(yīng)用與開發(fā)、遙感應(yīng)用研究。
2014-01-15。
項目來源:水利部公益性行業(yè)專項經(jīng)費資助項目(201201081)。