基于插件式GIS的皖江城市带发展土地保障与监管技术系统
2015-12-24朱传华黄正来王秉义
朱传华,黄正来,王秉义
(1.安徽建筑大学 环境与能源工程学院,安徽 合肥230601;2.安徽农业大学 农学院,安徽 合肥230036;3.安徽省土地勘测规划院,安徽 合肥,230601)
0 引 言
随着国民经济的稳步发展,城市土地资源日趋紧缺,土地资源的合理利用和有效监管成为土地管理部门面临的热点和难点。随着GIS技术的广泛应用,各级国土部门按业务需求和特点逐渐构建业务管理信息系统,实现了土地管理工作的信息化和科学化,提升了管理水平。但已有的业务系统一般有2大缺陷[1]:一方面没有统一的数据库支持,数据共享程度不高,数据管理与应用效率偏低;另一方面,各自独立开发的业务系统缺少统一的规划与设计,系统架构各异,无法有效通信,难以展开综合集成。当前,皖江城市带是国务院批准的承接产业转移示范区,大量项目需要落地,合理用地和用后监管已经成为一个亟待解决的问题,以往为单一目标或是单纯为了审批而建立的信息平台已经无法适应现实需要。如何建立一种能够满足不同区域,不同类型和不同对象类别的土地保障和监管系统是土地管理和监管工作进一步发展的必然要求。
近年来,插件式GIS应用框架已经在农业气象、城市规划、水土保持、土地评价和林业管理等专业领域成功应用[1-5]。插件应用的主要目的是提高软件代码的可重用性及系统的可扩展性,插件式GIS应用框架解决了以简洁的软件架构实现复杂业务模型灵活扩展的关键技术,为土地保障和监管系统实现评价目的多、对象类型多、空间尺度多的土地管理和监管任务提供了技术支持[4]。本文以研究土地保障与监管集成平台为目的,设计并实现业务模型插件和调用插件的宿主程序。
1 系统概况
皖江城市带发展土地保障与监管技术系统是一个多模块GIS技术支持的集成系统,主要包括空间数据管理、业务分析和决策支持等模块。空间数据库为业务模块的运行提供数据和存储,国土管理部门的管理决策行为是以核心业务模块分析的结果信息为依据进行,并可通过用地动态监管模块监督用地方案的实施效果。
业务模块包括6个部分(如图1),涵盖土地利用业务分析的大部分工作流程,其中土地承载力分析模块实现皖江城市带市级、区县级资源环境综合承载力评价,揭示区域承接产业转移的资源环境承载力空间分异,以及承接产业转移的容量。区域土地利用空间分析模块分析产业结构与土地利用相互关系,评估承接产业转移与土地利用空间协调度。产业发展用地调控模块分析存量产业用地数据,实现存量挖潜的产业发展用地评价与调控。土地空间规划模块完成土地资源利用的生态风险测定和安全格局划定。土地整治模块开展土地整治工程绩效评估和新增耕地预测分析。用地动态监管模块实现新增建设用地数据获取和监管信息处理与提取。在项目实施过程中,6个核心业务分析模块分别由不同研究单位设计并实现,如何将它们集成到统一平台是需要解决的关键问题。
2 集成方式
一个系统的建立往往需要对GIS数据、基本空间处理功能与各种业务模型进行集成。而系统集成方式在很大程序上决定了系统的适用性和效率。GIS与业务模块之间的集成方式有多种[6-9],包括传输中间文件格式交换数据、GIS专有二次开发语言开发业务模块、通用程序设计语言开发访问GIS、动态数据交换方式、组件式GIS方式和插件式GIS方式等。插件式GIS集成方式开发的GIS平台具有良好的复用性和灵活的可扩展性,能满足TB数量级的GIS数据管理、多元化数据来源和不断外延的GIS功能的发展[9]。综合考虑了用户界面设计的统一性、业务分析模型与GIS平台集成的难易度、程序开发任务的分工协作等特点,本系统的集成方式采用插件式GIS,即平台+插件的软件架构,将业务模型作为扩展功能以插件的形式通过GIS平台统一地管理起来。由GIS项目实施方制定平台和插件之间、不同插件之间的消息传递机制、扩展功能分类并定义接口标准,方便将各研究单位遵循接口开发的业务分析插件有机的集成,有效的协同工作。
平台+插件的应用框架包括2个部分:宿主程序和插件。宿主程序即包含插件的程序,负责对插件解析和动态调用。插件则在功能上对宿主程序进行扩展,必须实现若干标准接口,由宿主程序与插件通信时调用,即两者的交互基于一种公共的通信契约[1,8-11]。插件与宿主程序之间的调用关系如图2所示,宿主程序是插件的依附对象,负责解析插件集合中的所有插件对象,并将以其正确的UI形式显示。宿主程序需传递宿主程序UI界面的多个属性(如地图控件、制图控件、当前地图文档和当前地理数据集等)给插件,这些属性由宿主程序接口IApplication进行描述,IApplication为插件提供了定制宿主程序所需的全部接口。在插件实例化时,宿主程序须把该接口的对象传递给插件对象使用。为了使宿主程序能够解析并成功加载插件对象,插件也必须遵循一定的约定供宿主程序使用,即为图2中的插件接口(IPlugIn)。IPlugIn为宿主程序提供了装载插件的标准接口。宿主程序在实例化插件时提供给插件的IApplication接口对象,就是通过这IPlugIn接口传递的[10]。接口是纯粹的定义而非实现,它可以作为插件式GIS框架中宿主程序与插件层的通信契约。
3 插件式GIS系统开发与实现
基于前述平台+插件的软件架构思想,采用ArcGIS Engine+.NET框架开发模式,充分利用ArcObjects的GIS数据管理功能和.NET框架的反射技术构建整个应用程序框架和插件应用系统。系统中GIS数据显示、渲染、数据管理等功能由ArcGIS Engine组件库提供的接口二次开发完成,系统架构、接口设计基于.NET框架搭建,整个解决方案的核心项目包括宿主程序、插件引擎和接口、业务插件对象等3个部分。
3.1 宿主程序接口
IApplication接口(图3)提供了涉及业务模型插件对宿主程序操纵所需的所有对象,其中MapControl是地图控件接口,插件通过此接口定制宿主程序地理逻辑;PageLayoutControl是制图控件接口,方便插件操作制图;TOCControl是图层列表控件接口,方便插件操纵图层;Main-DataSet数据集保存宿主程序数据,可供插件调用。
宿主程序界面设计类似Office2007风格,采用DotNetBar for Windows Forms界面控件库设计实现,如图4所示。
3.2 业务插件接口
宿主程序允许插件修改部分菜单,比如宿主程序有一个菜单是专门留给业务模型插件的[10],如图5所示“承载力分析”菜单,承载力分析模块的插件可以对此项菜单进行修改,插件对象在该菜单中可以表现为一个下拉命令按纽或菜单项。
通过宿主程序接口IApplication,插件对象可以获得主窗体的句柄,并且在主窗体上创建自定义的子窗体,以及响应子窗体的各种事件,实现对宿主程序UI界面的定制。同样,通过该接口,插件对象可以进行与业务相关的各种操作,实现宿主程序业务逻辑的定制,如点击调用子窗体进行模型参数的设置和运算。
业务模型插件接口如图6所示,ICommand接口提供插件描述等属性信息和响应事件的的方法。其中Name描述插件名称,是显示在菜单项上的文字;Category描述插件类别,用于分类加载到宿主程序预留菜单;Bitmap为插件在菜单项上显示的图片。OnClick方法响应鼠标单击菜单项或按纽的事件,如弹出子窗体。OnCreate方法响应创建菜单项或按纽的事件,接收宿主程序的传递的数据。
3.3 插件识别和实例化
业务插件对象从ICommand接口派生,编译后生成插件程序集。宿主程序加载插件可通过反射和XML配置文件两种方式实现[1]。Plugin-Handle类(图7)采用.NET平台的程序集反射技术,在pluginFolder属性设置的指定文件夹中获得所有业务插件程序集中的类型信息,实现业务模块插件的识别,并存储到插件集合中[11,12]。
在宿主程序加载时读取插件对象信息,赋值到新生成的命令或菜单控件,调用OnCreate方法将宿主程序IApplication对象传递给插件对象,并通过委托添加控件Click事件的响应方法,将各业务模块插件对象按类别分别加载到预留菜单中,图8所示为土地承载力分析插件程序集的6个核心业务功能以ICommand插件形式加载到“承载力分析”预留菜单中。
3.4 插件应用界面实例
图9和图10分别为插件对象“资源环境综合承载力分析”和“土地整治绩效评估”实例化后的应用界面。插件式GIS软件架构在系统实施过程中取得了很好的效果,方便各研究单位分散开发和调试,集中集成和测试。在后续的运行和维护工作中也便于各业务模块开发人员增删功能,而不影响宿主程序的运行,具有较好的扩展性和可维护性。
4 结 论
本文从皖江城市带发展土地保障与监管技术系统建设的实际需求出发,在分析与归纳现有GIS和业务模块集成方式基础上,采用插件式GIS集成,设计了宿主程序和插件接口,基于.NET反射技术实现了业务插件“即插即用”,完成了6个核心业务模块的集成。不足之处是业务插件在宿主程序启动时集中加载,没有设计插件管理器实现运行过程中的灵活加载和卸载;不能处理不同版本的插件。微软公司在.NET框架3.5版本后推出可扩展应用框架MAF和MEF,在今后的工作中可结合这两个框架的优点进一步改进和完善。
1 李祉.基于插件式框架的农业气象灾害服务保障系统的实现[D].北京:中国地质大学,2012
2 江丽钧,谈晓珊,孙毅中.基于插件的城市规划信息系统的研究[J].现代测绘,2010,33(1):8-10.
3 余叔同,郑粉莉,张鹏.基于插件技术和GIS的坡面土壤侵 蚀 模 拟 系 统 [J].地 理 科 学,2010,30(3):441-445.
4 刘耀林,赵翔,唐旭.基于插件技术的多用途土地评价信息系统研究[J].中国土地科学,2010,24(11):27-34.
5 佃袁勇,程维金,滕明群,等.基于插件式的林带管理信息系统的设计与实现[J].华中农业大学学报,2014,33(4):45-49.
6 宋关福,钟耳顺.组件式地理信息系统研究与开发[J]中国图象图形学报,1998,3(4):313-317.
7 刘高焕,朱会义,蔡强国,等.小流域综合管理信息系统集成研究[J].地理研究,2002,21(1):25-33.
8 崔修涛,吴健平,张伟锋.插件式GIS的开发[J].华东师范大学学报(自然科学版),2005,(4):51-58.
9 吴亮,杨凌云,尹艳斌,等.基于插件技术的GIS应用框架的研究与实现[J].地球科学,2006,31(5):609-614.
10 陈方明,陈奇.基于插件思想的可重用软件设计与实现[J].计算机 工程与设计,2005,26(1):172-173+176.
11 蒋波涛.插件式GIS应用框架的设计与实现[M].北京:电子工业出版社,2008.
12 章志,都金康,卓凤军.基于.NET反射机制的GIS插件技术研究[J].测 绘科学,2011,36(4):151-152+155.