武紅宇,王 玥,胡慶武
(1.武漢大學(xué) 遙感信息工程學(xué)院,湖北 武漢 430079)
插件式土地規(guī)劃輔助設(shè)計(jì)框架研究
武紅宇1,王 玥1,胡慶武1
(1.武漢大學(xué) 遙感信息工程學(xué)院,湖北 武漢 430079)
提出了一種插件式、開放的土地規(guī)劃輔助設(shè)計(jì)系統(tǒng)框架;以ArcGIS Engine(AE)為開發(fā)平臺,設(shè)計(jì)并實(shí)現(xiàn)了基于AE的插件機(jī)制及插件開發(fā)平臺。在此基礎(chǔ)上,提出面向土地規(guī)劃輔助設(shè)計(jì)的插件式開放框架,設(shè)計(jì)開發(fā)了基于該插件框架的土地規(guī)劃輔助設(shè)計(jì)系統(tǒng)。以地圖分幅打印為例,在該插件式框架上擴(kuò)展實(shí)現(xiàn)了土地規(guī)劃輔助設(shè)計(jì)系統(tǒng)規(guī)劃設(shè)計(jì)輸出功能,證明了其有效性和適用性。
土地規(guī)劃;輔助設(shè)計(jì);插件;框架;分幅出圖
土地是人類賴以生存的物質(zhì)基礎(chǔ),土地面積的有限性和土地需求增長的不協(xié)調(diào),使得對土地資源合理分配和利用非常必要,土地規(guī)劃成為合理使用土地的有效途徑[1-2]。傳統(tǒng)土地規(guī)劃設(shè)計(jì)由于待規(guī)劃土地面積大、規(guī)劃過程復(fù)雜、工作量大、時間跨度長且需要大量手工作業(yè)及多部門溝通合作,并不適應(yīng)現(xiàn)階段土地規(guī)劃設(shè)計(jì)需要。當(dāng)前,土地規(guī)劃設(shè)計(jì)呈現(xiàn)出對土地資源動態(tài)規(guī)劃需求,既需要全面、準(zhǔn)確且現(xiàn)勢性好的基礎(chǔ)數(shù)據(jù),也需要開放的土地規(guī)劃方法和系統(tǒng)[1,3]。
GIS技術(shù)為改變土地規(guī)劃中統(tǒng)計(jì)變更信息、追溯變更歷史、查詢規(guī)劃成果信息費(fèi)時費(fèi)力的現(xiàn)狀提供了可能。基于GIS的土地規(guī)劃設(shè)計(jì)方法的關(guān)鍵是如何構(gòu)建一個用于土地規(guī)劃管理和決策的基礎(chǔ)地理信息系統(tǒng)[4-7]?,F(xiàn)有GIS平臺軟件功能完整,但價格昂貴且功能設(shè)計(jì)沒有針對專業(yè)部門的特定需求,因此需要進(jìn)行二次開發(fā)?;贕IS組件的二次開發(fā)逐漸成為專業(yè)GIS應(yīng)用系統(tǒng)開發(fā)的主流,其優(yōu)點(diǎn)也已為業(yè)界普遍認(rèn)可。然而,每一個行業(yè)應(yīng)用都要經(jīng)歷一 次完整的二次開發(fā)過程,設(shè)計(jì)開發(fā)者大部分時間都浪費(fèi)在菜單建立、工具欄按鈕設(shè)計(jì)、停靠窗體設(shè)計(jì)、增加映射代碼等基礎(chǔ)功能上;并且在系統(tǒng)完成后的維護(hù)中,每升級一個功能,都需經(jīng)過打開復(fù)制、粘貼、編輯、再編譯、再測試等工作十分繁雜[4]。這種方式開發(fā)出的土地規(guī)劃相關(guān)系統(tǒng)一般是針對特定應(yīng)用或僅涉及某一方面規(guī)劃和管理工作,缺乏統(tǒng)一和協(xié)調(diào)的土地利用規(guī)劃信息管理和規(guī)劃業(yè)務(wù)的調(diào)控[8]。插件是很多通用或?qū)S贸绦蛱峁┙o應(yīng)用層用戶進(jìn)行二次開發(fā)的一種程序接口方式,其主要目的是為了提高軟件的重用性和可擴(kuò)展性,以延長軟件的生命周期[9]。因此插件式GIS應(yīng)用框架能提供一個具有良好復(fù)用性、靈活的可擴(kuò)展性平臺,為項(xiàng)目實(shí)施所面對的特定知識應(yīng)用領(lǐng)域提供一種新途徑[10]。
基于AE的二次開發(fā)通常采取組建式開發(fā)。組件技術(shù)是一種軟件復(fù)用技術(shù),而插件技術(shù)是軟件架構(gòu)技術(shù)[11]。以典型的GIS應(yīng)用系統(tǒng)軟件開發(fā)為例,組件式開發(fā)技術(shù)和插件式開發(fā)在面對應(yīng)用系統(tǒng)的需求、功能和模塊變更時的開發(fā)流程如圖1。
圖1 組件式系統(tǒng)與插件式系統(tǒng)對比
組件式開發(fā)將全部功能集中在主程序中,整個系統(tǒng)只包含一個主程序。插件式系統(tǒng)由宿主程序和插件對象兩部分組成,宿主程序是一個通用的插件框架,只負(fù)責(zé)數(shù)據(jù)顯示、用戶交互以及提供通信契約接口,既是整個插件平臺的入口,也是插件對象的管理者和依附對象;負(fù)責(zé)解析插件對象,并將插件對象事件進(jìn)行委托關(guān)聯(lián)以生成各種按鈕工具、工具條和菜單等用戶界面形式的對象[12]。數(shù)據(jù)處理、查詢分析等功能則由實(shí)現(xiàn)了相關(guān)通信契約接口的插件對象來實(shí)現(xiàn),用于動態(tài)擴(kuò)充插件平臺功能。插件對象通過公共契約與宿主程序進(jìn)行交互來實(shí)現(xiàn)自身的邏輯以完成相應(yīng)功能。
當(dāng)需要增加或刪除某些功能時,組件式系統(tǒng)均需對主程序進(jìn)行修改,測試后重新打包、發(fā)布程序,增加了開發(fā)和維護(hù)難度。插件式平臺增加功能只需根據(jù)需求及相關(guān)通信契約接口來實(shí)現(xiàn)插件對象,并通過宿主程序加載插件對象,刪除功能只需卸載相關(guān)插件對象,可以快速擴(kuò)展和修改功能,真正實(shí)現(xiàn)針對各部門功能需求的快速擴(kuò)展。因此,基于插件式的開發(fā)框架和平臺是滿足土地規(guī)劃設(shè)計(jì)工作中多個部門不同功能需求的絕佳方案。
在利用AE進(jìn)行插件式平臺開發(fā)時,應(yīng)將平臺所需要的功能分散到各個插件對象中完成,插件對象作為可獨(dú)立開發(fā)的程序模塊,根據(jù)用戶需求動態(tài)添加和刪除。本文以AE為基礎(chǔ)平臺,設(shè)計(jì)了基于AE的插件開發(fā)平臺,其體系結(jié)構(gòu)如圖2。
基于AE的插件框架的宿主程序是整個插件平臺的基礎(chǔ),包括主界面程序、插件引擎和通信契約接口。主界面程序負(fù)責(zé)解析插件對象,并將插件對象事件進(jìn)行委托關(guān)聯(lián)以生成各種用戶界面形式的對象[12];同時利用AE的MapControl控件負(fù)責(zé)地圖顯示,PagelayoutControl控件負(fù)責(zé)地圖制圖顯示,TOCControl控件負(fù)責(zé)數(shù)據(jù)圖層結(jié)構(gòu)顯示,并根據(jù)實(shí)際需求選用ToolbarControl作為工具欄。插件引擎用于解析程序集,提取其中包含的插件類型信息,在設(shè)計(jì)過程中可參照AE中的IApplication接口。通信契約接口是宿主程序和插件交互的基礎(chǔ),在設(shè)計(jì)不同類型的通信契約接口時可參考ArcGIS Engine中SystemUI庫的相關(guān)接口。
圖2 基于AE的插件開發(fā)平臺
土地規(guī)劃輔助設(shè)計(jì)系統(tǒng)通常包括數(shù)據(jù)可視化、文件管理、數(shù)據(jù)編輯、數(shù)據(jù)處理、查詢與統(tǒng)計(jì)、專題圖制圖和管理工具。土地規(guī)劃輔助編制軟件中數(shù)據(jù)可視化功能由宿主程序?qū)崿F(xiàn),數(shù)據(jù)處理等功能則全部由插件對象實(shí)現(xiàn)。數(shù)據(jù)處理涉及的功能通??煞譃橥ㄓ没A(chǔ)功能和部門專業(yè)功能及工作流程;通用基礎(chǔ)功能為數(shù)據(jù)管理、瀏覽、編輯、查詢和專題圖制作等,部門專業(yè)功能為碎斑合并、屬性融合、圖形轉(zhuǎn)換和連續(xù)分幅出圖等。綜合實(shí)際需求,開放式土地規(guī)劃輔助系統(tǒng)功能模塊設(shè)計(jì)如圖3所示,圖中所列功能全部由插件對象實(shí)現(xiàn)。
盡管土地規(guī)劃輔助設(shè)計(jì)系統(tǒng)功能較為明確,但土地規(guī)劃過程復(fù)雜,往往需要多個部門共同協(xié)作,因此設(shè)計(jì)開發(fā)該系統(tǒng)時應(yīng)利用插件開發(fā)模式,在系統(tǒng)提供通用功能的基礎(chǔ)上支持各部門根據(jù)自身需求擴(kuò)展軟件功能,從而以低成本、低開發(fā)代價的方式擴(kuò)展軟件功能。本文利用基于AE的插件開發(fā)平臺,設(shè)計(jì)實(shí)現(xiàn)了開放式土地規(guī)劃輔助設(shè)計(jì)系統(tǒng),其技術(shù)框架如圖4。
土地規(guī)劃輔助設(shè)計(jì)系統(tǒng)的技術(shù)框架中,主程序界面設(shè)計(jì)主要涉及工具欄設(shè)計(jì)和可視化功能設(shè)計(jì),其中可視化功能中所要用到的AE控件為程序必不可少的組成部分。在通信契約接口設(shè)計(jì)中為了宿主程序能高效地識別插件對象類型,應(yīng)為所有類型的通信契約接口設(shè)計(jì)一個共同的父接口IPlugin,IPlugin接口中并不定義任何屬性和方法,僅作為通信契約接口中統(tǒng)一的標(biāo)識,再根據(jù)插件對象實(shí)際功能的用戶界面(UI)交互形式設(shè)計(jì)6 個類別的通信契約接口。插件引擎的設(shè)計(jì)包括用于存儲插件對象的插件容器的設(shè)計(jì),插件對象的動態(tài)加載技術(shù)的設(shè)計(jì)以及針對插件容器中對象的分類方法的設(shè)計(jì)。在完成了宿主程序設(shè)計(jì)后,需要根據(jù)功能模塊中具體功能的實(shí)際操作方式,為功能選擇和實(shí)現(xiàn)相應(yīng)的通信契約接口,在功能的具體實(shí)現(xiàn)過程中應(yīng)充分調(diào)用AE中的內(nèi)置類庫和Geoprocessing工具來快速、高效地實(shí)現(xiàn)相應(yīng)功能。當(dāng)系統(tǒng)需要添加新功能時,只需利用宿主程序添加相應(yīng)的插件對象即可實(shí)現(xiàn)系統(tǒng)的動態(tài)擴(kuò)展。
圖3 開放式土地規(guī)劃輔助系統(tǒng)功能模塊設(shè)計(jì)圖
圖4 技術(shù)框架圖
3.1 開發(fā)環(huán)境和工具
在系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)方面,依據(jù)插件平臺設(shè)計(jì)方法,以ArcGIS Engine10.1作為GIS引擎、DevExpress 12.2為系統(tǒng)控件,運(yùn)用C#開發(fā)語言在.NET Framework 3.5平臺上設(shè)計(jì)開發(fā)了插件式土地規(guī)劃輔助設(shè)計(jì)系統(tǒng)。主界面及功能模塊劃分如圖5。
3.2 地圖分幅打印功能插件擴(kuò)展實(shí)例
當(dāng)用某一部門需要一個新功能時,如制圖部門需要將地圖數(shù)據(jù)按1∶10 000的比例尺連續(xù)分幅出圖,根據(jù)分幅出圖的工作流程以及土地規(guī)劃輔助設(shè)計(jì)系統(tǒng)的功能擴(kuò)展要求,設(shè)計(jì)相應(yīng)的分幅出圖插件,實(shí)現(xiàn)流程如圖6。
圖5 土地規(guī)劃輔助設(shè)計(jì)系統(tǒng)主界面圖
依據(jù)插件實(shí)現(xiàn)流程圖,將插件從功能角度劃分,并實(shí)現(xiàn)對應(yīng)的Ribbon界面的參數(shù)設(shè)計(jì)。從插件實(shí)現(xiàn)角度,將插件根據(jù)操作及交互類型分類,然后確定繼承并實(shí)現(xiàn)ITool類型通信契約接口,再根據(jù)功能流程設(shè)計(jì)功能及交互界面,并實(shí)現(xiàn)分幅出圖功能,最終利用宿主程序添加分幅出圖插件對象,完成土地規(guī)劃輔助設(shè)計(jì)系統(tǒng)的動態(tài)擴(kuò)展。交互界面如圖7所示,出圖成功示例如圖8所示。
圖6 分幅打印功能插件實(shí)現(xiàn)流程圖
圖7 分幅出圖交互界面
圖8 分幅出圖結(jié)果
本文針對土地規(guī)劃過程中紛繁復(fù)雜的功能需求,提出了基于AE和.NET FrameWork平臺的開放式插件平臺的技術(shù)路線和系統(tǒng)設(shè)計(jì);給出了插件平臺必要的宿主程序、插件引擎、通信契約接口的相關(guān)設(shè)計(jì);并針對制圖部門所需的連續(xù)分幅出圖功能給出了通過插件方式擴(kuò)充平臺系統(tǒng)的技術(shù)流程。實(shí)驗(yàn)結(jié)果表明本文所提出的方法切實(shí)可行,可以有效地根據(jù)用戶需求擴(kuò)展現(xiàn)有插件平臺的功能。
[1] 徐世武,劉秀珍.基于GIS的土地利用規(guī)劃輔助編制系統(tǒng)[J].地球科學(xué),2006,31(5)∶719-724
[2] 戴建旺,張定祥,左玉強(qiáng),等.土地利用規(guī)劃實(shí)施監(jiān)管研究進(jìn)展與體系框架建設(shè)構(gòu)想[J].中國土地科學(xué),2012,26(7)∶91-96
[3] 陳濤,郭明武.城市區(qū)域土地規(guī)劃信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].測繪與空間地理信息,2011,34(4)∶107-109
[4] 孫麗,高飛,胡小華,等. ArcEngine插件式GIS二次開發(fā)框架的設(shè)計(jì)與實(shí)現(xiàn)[J].測繪科學(xué),2011,36(5)∶214-216
[5] 李滿春,陳剛,姚志軍,等.縣級土地利用規(guī)劃管理信息系統(tǒng)的分析與設(shè)計(jì)[J].國土資源遙感,2003(1)∶65-69
[6] 李長輝,張鵬程,王紅新.基于ArcEngine的土地利用總體規(guī)劃輔助編制系統(tǒng)[J].測繪信息與工程,2008,33(6)∶32-34
[7] 張艷.基于.NET平臺和ArcGIS Engine的土地利用規(guī)劃信息系統(tǒng)的研究與開發(fā)[D].合肥∶合肥工業(yè)大學(xué),2007
[8] 胡曉曦.基于空間OLAP技術(shù)的土地利用規(guī)劃輔助決策支持系統(tǒng)研究與應(yīng)用[D].成都∶西南交通大學(xué),2012
[9] 陳方明,陳奇.基于插件思想的可重用軟件設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(1)∶172-176
[10] 吳亮,楊凌云,尹艷斌.基于插件技術(shù)的GIS應(yīng)用框架的研究與實(shí)現(xiàn)[J].地球科學(xué),2006,31(5)∶609-614
[11] 郭娜,黃永平,吳學(xué)義,等.基于插件的動態(tài)模塊框架研究[J].吉林大學(xué)學(xué)報(bào)(信息科學(xué)版),2008,26(1)∶69-75
[12] 佃袁勇,程維金,滕明君,等.基于插件式的林帶信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].華中農(nóng)業(yè)大學(xué)學(xué)報(bào),2014,33(4)∶45-49
P208
B
1672-4623(2016)09-0094-04
10.3969/j.issn.1672-4623.2016.09.031
武紅宇,碩士研究生,研究方向?yàn)?S技術(shù)集成與應(yīng)用。
2015-07-14。
項(xiàng)目來源:國家自然科學(xué)基金資助項(xiàng)目(41271452)。