武紅宇,王 玥,胡慶武
(1.武漢大學 遙感信息工程學院,湖北 武漢 430079)
插件式土地規劃輔助設計框架研究
武紅宇1,王 玥1,胡慶武1
(1.武漢大學 遙感信息工程學院,湖北 武漢 430079)

提出了一種插件式、開放的土地規劃輔助設計系統框架;以ArcGIS Engine(AE)為開發平臺,設計并實現了基于AE的插件機制及插件開發平臺。在此基礎上,提出面向土地規劃輔助設計的插件式開放框架,設計開發了基于該插件框架的土地規劃輔助設計系統。以地圖分幅打印為例,在該插件式框架上擴展實現了土地規劃輔助設計系統規劃設計輸出功能,證明了其有效性和適用性。
土地規劃;輔助設計;插件;框架;分幅出圖
土地是人類賴以生存的物質基礎,土地面積的有限性和土地需求增長的不協調,使得對土地資源合理分配和利用非常必要,土地規劃成為合理使用土地的有效途徑[1-2]。傳統土地規劃設計由于待規劃土地面積大、規劃過程復雜、工作量大、時間跨度長且需要大量手工作業及多部門溝通合作,并不適應現階段土地規劃設計需要。當前,土地規劃設計呈現出對土地資源動態規劃需求,既需要全面、準確且現勢性好的基礎數據,也需要開放的土地規劃方法和系統[1,3]。
GIS技術為改變土地規劃中統計變更信息、追溯變更歷史、查詢規劃成果信息費時費力的現狀提供了可能。基于GIS的土地規劃設計方法的關鍵是如何構建一個用于土地規劃管理和決策的基礎地理信息系統[4-7]。現有GIS平臺軟件功能完整,但價格昂貴且功能設計沒有針對專業部門的特定需求,因此需要進行二次開發。基于GIS組件的二次開發逐漸成為專業GIS應用系統開發的主流,其優點也已為業界普遍認可。然而,每一個行業應用都要經歷一 次完整的二次開發過程,設計開發者大部分時間都浪費在菜單建立、工具欄按鈕設計、停靠窗體設計、增加映射代碼等基礎功能上;并且在系統完成后的維護中,每升級一個功能,都需經過打開復制、粘貼、編輯、再編譯、再測試等工作十分繁雜[4]。這種方式開發出的土地規劃相關系統一般是針對特定應用或僅涉及某一方面規劃和管理工作,缺乏統一和協調的土地利用規劃信息管理和規劃業務的調控[8]。插件是很多通用或專用程序提供給應用層用戶進行二次開發的一種程序接口方式,其主要目的是為了提高軟件的重用性和可擴展性,以延長軟件的生命周期[9]。因此插件式GIS應用框架能提供一個具有良好復用性、靈活的可擴展性平臺,為項目實施所面對的特定知識應用領域提供一種新途徑[10]。
基于AE的二次開發通常采取組建式開發。組件技術是一種軟件復用技術,而插件技術是軟件架構技術[11]。以典型的GIS應用系統軟件開發為例,組件式開發技術和插件式開發在面對應用系統的需求、功能和模塊變更時的開發流程如圖1。

圖1 組件式系統與插件式系統對比
組件式開發將全部功能集中在主程序中,整個系統只包含一個主程序。插件式系統由宿主程序和插件對象兩部分組成,宿主程序是一個通用的插件框架,只負責數據顯示、用戶交互以及提供通信契約接口,既是整個插件平臺的入口,也是插件對象的管理者和依附對象;負責解析插件對象,并將插件對象事件進行委托關聯以生成各種按鈕工具、工具條和菜單等用戶界面形式的對象[12]。數據處理、查詢分析等功能則由實現了相關通信契約接口的插件對象來實現,用于動態擴充插件平臺功能。插件對象通過公共契約與宿主程序進行交互來實現自身的邏輯以完成相應功能。
當需要增加或刪除某些功能時,組件式系統均需對主程序進行修改,測試后重新打包、發布程序,增加了開發和維護難度。插件式平臺增加功能只需根據需求及相關通信契約接口來實現插件對象,并通過宿主程序加載插件對象,刪除功能只需卸載相關插件對象,可以快速擴展和修改功能,真正實現針對各部門功能需求的快速擴展。因此,基于插件式的開發框架和平臺是滿足土地規劃設計工作中多個部門不同功能需求的絕佳方案。
在利用AE進行插件式平臺開發時,應將平臺所需要的功能分散到各個插件對象中完成,插件對象作為可獨立開發的程序模塊,根據用戶需求動態添加和刪除。本文以AE為基礎平臺,設計了基于AE的插件開發平臺,其體系結構如圖2。
基于AE的插件框架的宿主程序是整個插件平臺的基礎,包括主界面程序、插件引擎和通信契約接口。主界面程序負責解析插件對象,并將插件對象事件進行委托關聯以生成各種用戶界面形式的對象[12];同時利用AE的MapControl控件負責地圖顯示,PagelayoutControl控件負責地圖制圖顯示,TOCControl控件負責數據圖層結構顯示,并根據實際需求選用ToolbarControl作為工具欄。插件引擎用于解析程序集,提取其中包含的插件類型信息,在設計過程中可參照AE中的IApplication接口。通信契約接口是宿主程序和插件交互的基礎,在設計不同類型的通信契約接口時可參考ArcGIS Engine中SystemUI庫的相關接口。

圖2 基于AE的插件開發平臺
土地規劃輔助設計系統通常包括數據可視化、文件管理、數據編輯、數據處理、查詢與統計、專題圖制圖和管理工具。土地規劃輔助編制軟件中數據可視化功能由宿主程序實現,數據處理等功能則全部由插件對象實現。數據處理涉及的功能通常可分為通用基礎功能和部門專業功能及工作流程;通用基礎功能為數據管理、瀏覽、編輯、查詢和專題圖制作等,部門專業功能為碎斑合并、屬性融合、圖形轉換和連續分幅出圖等。綜合實際需求,開放式土地規劃輔助系統功能模塊設計如圖3所示,圖中所列功能全部由插件對象實現。
盡管土地規劃輔助設計系統功能較為明確,但土地規劃過程復雜,往往需要多個部門共同協作,因此設計開發該系統時應利用插件開發模式,在系統提供通用功能的基礎上支持各部門根據自身需求擴展軟件功能,從而以低成本、低開發代價的方式擴展軟件功能。本文利用基于AE的插件開發平臺,設計實現了開放式土地規劃輔助設計系統,其技術框架如圖4。
土地規劃輔助設計系統的技術框架中,主程序界面設計主要涉及工具欄設計和可視化功能設計,其中可視化功能中所要用到的AE控件為程序必不可少的組成部分。在通信契約接口設計中為了宿主程序能高效地識別插件對象類型,應為所有類型的通信契約接口設計一個共同的父接口IPlugin,IPlugin接口中并不定義任何屬性和方法,僅作為通信契約接口中統一的標識,再根據插件對象實際功能的用戶界面(UI)交互形式設計6 個類別的通信契約接口。插件引擎的設計包括用于存儲插件對象的插件容器的設計,插件對象的動態加載技術的設計以及針對插件容器中對象的分類方法的設計。在完成了宿主程序設計后,需要根據功能模塊中具體功能的實際操作方式,為功能選擇和實現相應的通信契約接口,在功能的具體實現過程中應充分調用AE中的內置類庫和Geoprocessing工具來快速、高效地實現相應功能。當系統需要添加新功能時,只需利用宿主程序添加相應的插件對象即可實現系統的動態擴展。

圖3 開放式土地規劃輔助系統功能模塊設計圖

圖4 技術框架圖
3.1 開發環境和工具
在系統設計實現方面,依據插件平臺設計方法,以ArcGIS Engine10.1作為GIS引擎、DevExpress 12.2為系統控件,運用C#開發語言在.NET Framework 3.5平臺上設計開發了插件式土地規劃輔助設計系統。主界面及功能模塊劃分如圖5。
3.2 地圖分幅打印功能插件擴展實例
當用某一部門需要一個新功能時,如制圖部門需要將地圖數據按1∶10 000的比例尺連續分幅出圖,根據分幅出圖的工作流程以及土地規劃輔助設計系統的功能擴展要求,設計相應的分幅出圖插件,實現流程如圖6。

圖5 土地規劃輔助設計系統主界面圖
依據插件實現流程圖,將插件從功能角度劃分,并實現對應的Ribbon界面的參數設計。從插件實現角度,將插件根據操作及交互類型分類,然后確定繼承并實現ITool類型通信契約接口,再根據功能流程設計功能及交互界面,并實現分幅出圖功能,最終利用宿主程序添加分幅出圖插件對象,完成土地規劃輔助設計系統的動態擴展。交互界面如圖7所示,出圖成功示例如圖8所示。

圖6 分幅打印功能插件實現流程圖

圖7 分幅出圖交互界面

圖8 分幅出圖結果
本文針對土地規劃過程中紛繁復雜的功能需求,提出了基于AE和.NET FrameWork平臺的開放式插件平臺的技術路線和系統設計;給出了插件平臺必要的宿主程序、插件引擎、通信契約接口的相關設計;并針對制圖部門所需的連續分幅出圖功能給出了通過插件方式擴充平臺系統的技術流程。實驗結果表明本文所提出的方法切實可行,可以有效地根據用戶需求擴展現有插件平臺的功能。
[1] 徐世武,劉秀珍.基于GIS的土地利用規劃輔助編制系統[J].地球科學,2006,31(5)∶719-724
[2] 戴建旺,張定祥,左玉強,等.土地利用規劃實施監管研究進展與體系框架建設構想[J].中國土地科學,2012,26(7)∶91-96
[3] 陳濤,郭明武.城市區域土地規劃信息系統設計與實現[J].測繪與空間地理信息,2011,34(4)∶107-109
[4] 孫麗,高飛,胡小華,等. ArcEngine插件式GIS二次開發框架的設計與實現[J].測繪科學,2011,36(5)∶214-216
[5] 李滿春,陳剛,姚志軍,等.縣級土地利用規劃管理信息系統的分析與設計[J].國土資源遙感,2003(1)∶65-69
[6] 李長輝,張鵬程,王紅新.基于ArcEngine的土地利用總體規劃輔助編制系統[J].測繪信息與工程,2008,33(6)∶32-34
[7] 張艷.基于.NET平臺和ArcGIS Engine的土地利用規劃信息系統的研究與開發[D].合肥∶合肥工業大學,2007
[8] 胡曉曦.基于空間OLAP技術的土地利用規劃輔助決策支持系統研究與應用[D].成都∶西南交通大學,2012
[9] 陳方明,陳奇.基于插件思想的可重用軟件設計與實現[J].計算機工程與設計,2005,26(1)∶172-176
[10] 吳亮,楊凌云,尹艷斌.基于插件技術的GIS應用框架的研究與實現[J].地球科學,2006,31(5)∶609-614
[11] 郭娜,黃永平,吳學義,等.基于插件的動態模塊框架研究[J].吉林大學學報(信息科學版),2008,26(1)∶69-75
[12] 佃袁勇,程維金,滕明君,等.基于插件式的林帶信息管理系統的設計與實現[J].華中農業大學學報,2014,33(4)∶45-49
P208
B
1672-4623(2016)09-0094-04
10.3969/j.issn.1672-4623.2016.09.031
武紅宇,碩士研究生,研究方向為3S技術集成與應用。
2015-07-14。
項目來源:國家自然科學基金資助項目(41271452)。