朱傳華,黃正來,王秉義
(1.安徽建筑大學(xué) 環(huán)境與能源工程學(xué)院,安徽 合肥230601;2.安徽農(nóng)業(yè)大學(xué) 農(nóng)學(xué)院,安徽 合肥230036;3.安徽省土地勘測規(guī)劃院,安徽 合肥,230601)
隨著國民經(jīng)濟的穩(wěn)步發(fā)展,城市土地資源日趨緊缺,土地資源的合理利用和有效監(jiān)管成為土地管理部門面臨的熱點和難點。隨著GIS技術(shù)的廣泛應(yīng)用,各級國土部門按業(yè)務(wù)需求和特點逐漸構(gòu)建業(yè)務(wù)管理信息系統(tǒng),實現(xiàn)了土地管理工作的信息化和科學(xué)化,提升了管理水平。但已有的業(yè)務(wù)系統(tǒng)一般有2大缺陷[1]:一方面沒有統(tǒng)一的數(shù)據(jù)庫支持,數(shù)據(jù)共享程度不高,數(shù)據(jù)管理與應(yīng)用效率偏低;另一方面,各自獨立開發(fā)的業(yè)務(wù)系統(tǒng)缺少統(tǒng)一的規(guī)劃與設(shè)計,系統(tǒng)架構(gòu)各異,無法有效通信,難以展開綜合集成。當前,皖江城市帶是國務(wù)院批準的承接產(chǎn)業(yè)轉(zhuǎn)移示范區(qū),大量項目需要落地,合理用地和用后監(jiān)管已經(jīng)成為一個亟待解決的問題,以往為單一目標或是單純?yōu)榱藢徟⒌男畔⑵脚_已經(jīng)無法適應(yīng)現(xiàn)實需要。如何建立一種能夠滿足不同區(qū)域,不同類型和不同對象類別的土地保障和監(jiān)管系統(tǒng)是土地管理和監(jiān)管工作進一步發(fā)展的必然要求。
近年來,插件式GIS應(yīng)用框架已經(jīng)在農(nóng)業(yè)氣象、城市規(guī)劃、水土保持、土地評價和林業(yè)管理等專業(yè)領(lǐng)域成功應(yīng)用[1-5]。插件應(yīng)用的主要目的是提高軟件代碼的可重用性及系統(tǒng)的可擴展性,插件式GIS應(yīng)用框架解決了以簡潔的軟件架構(gòu)實現(xiàn)復(fù)雜業(yè)務(wù)模型靈活擴展的關(guān)鍵技術(shù),為土地保障和監(jiān)管系統(tǒng)實現(xiàn)評價目的多、對象類型多、空間尺度多的土地管理和監(jiān)管任務(wù)提供了技術(shù)支持[4]。本文以研究土地保障與監(jiān)管集成平臺為目的,設(shè)計并實現(xiàn)業(yè)務(wù)模型插件和調(diào)用插件的宿主程序。
皖江城市帶發(fā)展土地保障與監(jiān)管技術(shù)系統(tǒng)是一個多模塊GIS技術(shù)支持的集成系統(tǒng),主要包括空間數(shù)據(jù)管理、業(yè)務(wù)分析和決策支持等模塊??臻g數(shù)據(jù)庫為業(yè)務(wù)模塊的運行提供數(shù)據(jù)和存儲,國土管理部門的管理決策行為是以核心業(yè)務(wù)模塊分析的結(jié)果信息為依據(jù)進行,并可通過用地動態(tài)監(jiān)管模塊監(jiān)督用地方案的實施效果。
業(yè)務(wù)模塊包括6個部分(如圖1),涵蓋土地利用業(yè)務(wù)分析的大部分工作流程,其中土地承載力分析模塊實現(xiàn)皖江城市帶市級、區(qū)縣級資源環(huán)境綜合承載力評價,揭示區(qū)域承接產(chǎn)業(yè)轉(zhuǎn)移的資源環(huán)境承載力空間分異,以及承接產(chǎn)業(yè)轉(zhuǎn)移的容量。區(qū)域土地利用空間分析模塊分析產(chǎn)業(yè)結(jié)構(gòu)與土地利用相互關(guān)系,評估承接產(chǎn)業(yè)轉(zhuǎn)移與土地利用空間協(xié)調(diào)度。產(chǎn)業(yè)發(fā)展用地調(diào)控模塊分析存量產(chǎn)業(yè)用地數(shù)據(jù),實現(xiàn)存量挖潛的產(chǎn)業(yè)發(fā)展用地評價與調(diào)控。土地空間規(guī)劃模塊完成土地資源利用的生態(tài)風險測定和安全格局劃定。土地整治模塊開展土地整治工程績效評估和新增耕地預(yù)測分析。用地動態(tài)監(jiān)管模塊實現(xiàn)新增建設(shè)用地數(shù)據(jù)獲取和監(jiān)管信息處理與提取。在項目實施過程中,6個核心業(yè)務(wù)分析模塊分別由不同研究單位設(shè)計并實現(xiàn),如何將它們集成到統(tǒng)一平臺是需要解決的關(guān)鍵問題。
一個系統(tǒng)的建立往往需要對GIS數(shù)據(jù)、基本空間處理功能與各種業(yè)務(wù)模型進行集成。而系統(tǒng)集成方式在很大程序上決定了系統(tǒng)的適用性和效率。GIS與業(yè)務(wù)模塊之間的集成方式有多種[6-9],包括傳輸中間文件格式交換數(shù)據(jù)、GIS專有二次開發(fā)語言開發(fā)業(yè)務(wù)模塊、通用程序設(shè)計語言開發(fā)訪問GIS、動態(tài)數(shù)據(jù)交換方式、組件式GIS方式和插件式GIS方式等。插件式GIS集成方式開發(fā)的GIS平臺具有良好的復(fù)用性和靈活的可擴展性,能滿足TB數(shù)量級的GIS數(shù)據(jù)管理、多元化數(shù)據(jù)來源和不斷外延的GIS功能的發(fā)展[9]。綜合考慮了用戶界面設(shè)計的統(tǒng)一性、業(yè)務(wù)分析模型與GIS平臺集成的難易度、程序開發(fā)任務(wù)的分工協(xié)作等特點,本系統(tǒng)的集成方式采用插件式GIS,即平臺+插件的軟件架構(gòu),將業(yè)務(wù)模型作為擴展功能以插件的形式通過GIS平臺統(tǒng)一地管理起來。由GIS項目實施方制定平臺和插件之間、不同插件之間的消息傳遞機制、擴展功能分類并定義接口標準,方便將各研究單位遵循接口開發(fā)的業(yè)務(wù)分析插件有機的集成,有效的協(xié)同工作。
平臺+插件的應(yīng)用框架包括2個部分:宿主程序和插件。宿主程序即包含插件的程序,負責對插件解析和動態(tài)調(diào)用。插件則在功能上對宿主程序進行擴展,必須實現(xiàn)若干標準接口,由宿主程序與插件通信時調(diào)用,即兩者的交互基于一種公共的通信契約[1,8-11]。插件與宿主程序之間的調(diào)用關(guān)系如圖2所示,宿主程序是插件的依附對象,負責解析插件集合中的所有插件對象,并將以其正確的UI形式顯示。宿主程序需傳遞宿主程序UI界面的多個屬性(如地圖控件、制圖控件、當前地圖文檔和當前地理數(shù)據(jù)集等)給插件,這些屬性由宿主程序接口IApplication進行描述,IApplication為插件提供了定制宿主程序所需的全部接口。在插件實例化時,宿主程序須把該接口的對象傳遞給插件對象使用。為了使宿主程序能夠解析并成功加載插件對象,插件也必須遵循一定的約定供宿主程序使用,即為圖2中的插件接口(IPlugIn)。IPlugIn為宿主程序提供了裝載插件的標準接口。宿主程序在實例化插件時提供給插件的IApplication接口對象,就是通過這IPlugIn接口傳遞的[10]。接口是純粹的定義而非實現(xiàn),它可以作為插件式GIS框架中宿主程序與插件層的通信契約。
基于前述平臺+插件的軟件架構(gòu)思想,采用ArcGIS Engine+.NET框架開發(fā)模式,充分利用ArcObjects的GIS數(shù)據(jù)管理功能和.NET框架的反射技術(shù)構(gòu)建整個應(yīng)用程序框架和插件應(yīng)用系統(tǒng)。系統(tǒng)中GIS數(shù)據(jù)顯示、渲染、數(shù)據(jù)管理等功能由ArcGIS Engine組件庫提供的接口二次開發(fā)完成,系統(tǒng)架構(gòu)、接口設(shè)計基于.NET框架搭建,整個解決方案的核心項目包括宿主程序、插件引擎和接口、業(yè)務(wù)插件對象等3個部分。
IApplication接口(圖3)提供了涉及業(yè)務(wù)模型插件對宿主程序操縱所需的所有對象,其中MapControl是地圖控件接口,插件通過此接口定制宿主程序地理邏輯;PageLayoutControl是制圖控件接口,方便插件操作制圖;TOCControl是圖層列表控件接口,方便插件操縱圖層;Main-DataSet數(shù)據(jù)集保存宿主程序數(shù)據(jù),可供插件調(diào)用。
宿主程序界面設(shè)計類似Office2007風格,采用DotNetBar for Windows Forms界面控件庫設(shè)計實現(xiàn),如圖4所示。
宿主程序允許插件修改部分菜單,比如宿主程序有一個菜單是專門留給業(yè)務(wù)模型插件的[10],如圖5所示“承載力分析”菜單,承載力分析模塊的插件可以對此項菜單進行修改,插件對象在該菜單中可以表現(xiàn)為一個下拉命令按紐或菜單項。
通過宿主程序接口IApplication,插件對象可以獲得主窗體的句柄,并且在主窗體上創(chuàng)建自定義的子窗體,以及響應(yīng)子窗體的各種事件,實現(xiàn)對宿主程序UI界面的定制。同樣,通過該接口,插件對象可以進行與業(yè)務(wù)相關(guān)的各種操作,實現(xiàn)宿主程序業(yè)務(wù)邏輯的定制,如點擊調(diào)用子窗體進行模型參數(shù)的設(shè)置和運算。
業(yè)務(wù)模型插件接口如圖6所示,ICommand接口提供插件描述等屬性信息和響應(yīng)事件的的方法。其中Name描述插件名稱,是顯示在菜單項上的文字;Category描述插件類別,用于分類加載到宿主程序預(yù)留菜單;Bitmap為插件在菜單項上顯示的圖片。OnClick方法響應(yīng)鼠標單擊菜單項或按紐的事件,如彈出子窗體。OnCreate方法響應(yīng)創(chuàng)建菜單項或按紐的事件,接收宿主程序的傳遞的數(shù)據(jù)。
業(yè)務(wù)插件對象從ICommand接口派生,編譯后生成插件程序集。宿主程序加載插件可通過反射和XML配置文件兩種方式實現(xiàn)[1]。Plugin-Handle類(圖7)采用.NET平臺的程序集反射技術(shù),在pluginFolder屬性設(shè)置的指定文件夾中獲得所有業(yè)務(wù)插件程序集中的類型信息,實現(xiàn)業(yè)務(wù)模塊插件的識別,并存儲到插件集合中[11,12]。
在宿主程序加載時讀取插件對象信息,賦值到新生成的命令或菜單控件,調(diào)用OnCreate方法將宿主程序IApplication對象傳遞給插件對象,并通過委托添加控件Click事件的響應(yīng)方法,將各業(yè)務(wù)模塊插件對象按類別分別加載到預(yù)留菜單中,圖8所示為土地承載力分析插件程序集的6個核心業(yè)務(wù)功能以ICommand插件形式加載到“承載力分析”預(yù)留菜單中。
圖9和圖10分別為插件對象“資源環(huán)境綜合承載力分析”和“土地整治績效評估”實例化后的應(yīng)用界面。插件式GIS軟件架構(gòu)在系統(tǒng)實施過程中取得了很好的效果,方便各研究單位分散開發(fā)和調(diào)試,集中集成和測試。在后續(xù)的運行和維護工作中也便于各業(yè)務(wù)模塊開發(fā)人員增刪功能,而不影響宿主程序的運行,具有較好的擴展性和可維護性。
本文從皖江城市帶發(fā)展土地保障與監(jiān)管技術(shù)系統(tǒng)建設(shè)的實際需求出發(fā),在分析與歸納現(xiàn)有GIS和業(yè)務(wù)模塊集成方式基礎(chǔ)上,采用插件式GIS集成,設(shè)計了宿主程序和插件接口,基于.NET反射技術(shù)實現(xiàn)了業(yè)務(wù)插件“即插即用”,完成了6個核心業(yè)務(wù)模塊的集成。不足之處是業(yè)務(wù)插件在宿主程序啟動時集中加載,沒有設(shè)計插件管理器實現(xiàn)運行過程中的靈活加載和卸載;不能處理不同版本的插件。微軟公司在.NET框架3.5版本后推出可擴展應(yīng)用框架MAF和MEF,在今后的工作中可結(jié)合這兩個框架的優(yōu)點進一步改進和完善。
1 李祉.基于插件式框架的農(nóng)業(yè)氣象災(zāi)害服務(wù)保障系統(tǒng)的實現(xiàn)[D].北京:中國地質(zhì)大學(xué),2012
2 江麗鈞,談曉珊,孫毅中.基于插件的城市規(guī)劃信息系統(tǒng)的研究[J].現(xiàn)代測繪,2010,33(1):8-10.
3 余叔同,鄭粉莉,張鵬.基于插件技術(shù)和GIS的坡面土壤侵 蝕 模 擬 系 統(tǒng) [J].地 理 科 學(xué),2010,30(3):441-445.
4 劉耀林,趙翔,唐旭.基于插件技術(shù)的多用途土地評價信息系統(tǒng)研究[J].中國土地科學(xué),2010,24(11):27-34.
5 佃袁勇,程維金,滕明群,等.基于插件式的林帶管理信息系統(tǒng)的設(shè)計與實現(xiàn)[J].華中農(nóng)業(yè)大學(xué)學(xué)報,2014,33(4):45-49.
6 宋關(guān)福,鐘耳順.組件式地理信息系統(tǒng)研究與開發(fā)[J]中國圖象圖形學(xué)報,1998,3(4):313-317.
7 劉高煥,朱會義,蔡強國,等.小流域綜合管理信息系統(tǒng)集成研究[J].地理研究,2002,21(1):25-33.
8 崔修濤,吳健平,張偉鋒.插件式GIS的開發(fā)[J].華東師范大學(xué)學(xué)報(自然科學(xué)版),2005,(4):51-58.
9 吳亮,楊凌云,尹艷斌,等.基于插件技術(shù)的GIS應(yīng)用框架的研究與實現(xiàn)[J].地球科學(xué),2006,31(5):609-614.
10 陳方明,陳奇.基于插件思想的可重用軟件設(shè)計與實現(xiàn)[J].計算機 工程與設(shè)計,2005,26(1):172-173+176.
11 蔣波濤.插件式GIS應(yīng)用框架的設(shè)計與實現(xiàn)[M].北京:電子工業(yè)出版社,2008.
12 章志,都金康,卓鳳軍.基于.NET反射機制的GIS插件技術(shù)研究[J].測 繪科學(xué),2011,36(4):151-152+155.