本站小编为你精心准备了GIS的水生态评估体系的研发参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
流域水生态健康评价领域的GIS软件应用程序可分为GIS功能部分和非GIS功能部分。GIS功能部分一般包括地图的浏览、属性查询、空间查询、空间分析、空间制图、专题图输出、水生态评价、水污染模拟等;非GIS功能包括系统的登录功能、权限管理功能、数据库管理功能、数据统计功能、数据备份与恢复功能、系统界面管理功能、系统维护功能。对于流域水生态健康评价领域来说,功能要求相当明确,如涉及到GIS地图可视化功能,就需要提供地图浏览、属性查询、空间查询、制图输出等功能。在GIS二次开发平台中,通过添加地图控件、制图控件、图层控制控件、地图工具栏及其工具,实现图层控制控件和地图工具栏跟地图控件与制图控件的捆绑,实现图层属性数据的操作、地图控件数据的操作等。
2粗粒度组件式GIS开发模式
该模式是将通用、底层的功能集成为一个组件,这个组件不仅能满足简单的功能需求,而且能进行更深层次的开发,在组件的基础上实现更高级的功能。
2.1GIS功能组件构建
在流域水生态健康评价中,需要使用到GIS功能的模块包括基础地图数据的管理、水生态健康的评价、水污染模拟等。这些模块的共同点是都需要最基本的GIS操作功能,如地图的浏览、属性查询、空间查询、专题图制作、制图输出等,将这些功能封装集成为一个组件模块,就可应用到多个应用程序中,避免重复开发。对于不是通用的GIS功能来说,通过提取它们底层的共同点,构建通用功能模型、实现动态增减功能和修改原来功能的接口。通过接口可以实现组件的二次开发,使得组件能重复利用,提高了组件的通用性和灵活性。
2.2非GIS功能组件构建
在非GIS功能中,登录模块程序和数据库管理模块可以成为另一个组件,不同的数据库的操作结构可能不一样,可以通过动态配置数据库服务器、修改配置文件等方式,来适应不同的数据库服务器。登录所需要的信息存储在配置文件中,这些信息经过加密处理,链接数据库的功能采用统一接口实现,这样有利于动态修改数据库服务器链接。组件构建逻辑结构如图1所示。图1组件重构逻辑结构图从图1中我们可以看到,将简单通用的功能集成以后,系统逻辑结构变得更加清晰,功能需求与实现更为明确,程序调试更为简单。最重要的一点是一旦组件构建完成以后,可以将组件移植到类似的系统中去,从而节省了时间和经费开销。通常在涉及到GIS的应用程序中,对GIS功能的需求大致相同,如国土、水利、气象等,所以构建一个功能完善,运行稳定,可二次开发的组件模块能为开发GIS应用程度带来极大的便利。
3基于插件式框架的系统设计
插件式应用程序的宿主系统开发和功能开发都具有COM规范,功能插件通过安装,可插入宿主系统中,实现功能模块的“即插即用”。从GIS开发的角度讲,插件模块可共享,有利于系统更快速地开发,降低了开发费用;从用户使用角度讲,用户可以根据需求选购功能插件,扩展系统的功能,实现系统的自定义。插件式系统总体的设计流程是搭建应用程序框架、设计通信契约、设计插件容器、构建插件、动态加载插件。组件式开发思想主要应用于插件式系统构架中插件程序对象的设计上,通过构建一个通用、稳定、可再次开发的组件使得插件程序能够快速开发,方便后期维护。应用程序中涉及GIS功能需求的插件都是基于GIS功能组件再次开发所得。
3.1系统框架宿主程序设计
宿主系统可以是新开发的系统,也可以是一个已有的系统,插件式框架的宿主程序是应用插件的管理者。宿主程序与插件之间还需要进行交互,以便于双方进行双向交流。宿主程序设计的好坏直接影响整个应用程序的构建结果,所以宿主程序的设计需要综合考虑整个系统的特性,包括插件程序的可识别性、可扩展性、可移除性和应用程序的稳定性。
3.2系统界面设计
插件式系统设计的界面需要随着系统插件的多少来自动增减界面UI元素。为了使界面UI元素在增加和删除时不会影响界面的美观和其他功能,界面UI元素与插件之间必须一一对应,界面UI元素之间必须各自独立,插件与插件之间需要相互独立。本次系统界面设计如图2所示。该系统界面设计分为4栏:标题栏、功能栏、视图操作栏和状态栏。其中功能栏由功能按钮组成,按钮的多少由系统基础功能和插件程序对象数量决定,采用自适应方法布局在界面上,可随插件对象的增减而自动增减。视图区域由可切换页面构成,每一个页面对应一个功能按钮。页面内容由插件程序提供,宿主程序只是提供了页面布局用的切换模版和插件程序中集成页面显示内容的用户控件。用户控件中集成有用于操作用户视图的工具栏,工具栏实现可增减工具和拖放停靠,主界面上的功能按钮只是提供为宿主程序加载插件程序的入口,不具备操作插件程序提供的功能,从而使得系统的功能分层明确,宿主程序界面无需知道插件程序内部操作。应用程序初次运行的时候,宿主程序通过读取指定路径中的插件程序,调用插件程序的接口,获取插件程序中的用户控件,将它增加到宿主程序主角们的视图区域中。通过判断插件程序的类型和数量,在主界面生成相应的UI按钮,当点击按钮时,才获取插件对象的视图区域控件。这样不论功能增加或减少,系统的界面架构均保持原有的风格,简洁美观。
3.3系统通信设计
宿主程序与插件程序对象之间的交互操作称为通信,其主要的通信契约为接口。接口可以被看作是一种定义了必要的方法和属性的类型,因此宿主程序就可以通过这种契约来生成具体的UI对象,并对外界操作作出反应。宿主程序必须声明自己有什么样的功能可被插件调用,且插件必须符合什么条件才能被宿主程序使用;反之,插件也需要知道宿主程序提供给了什么样的功能和属性,才能将自己融入宿主程序的结构中。
3.4应用程序插件设计与使用
插件是一种遵循一定规范的API或按COM接口编写出来的模块化程序,它能够“插入”到主应用系统中,对软件功能进行加强。应用程序插件对象是框架舞台上的主角和功能扩展的执行者。框架的合理性和有效性是插件对象构件的基础,反之,插件能有效地检验框架的合理性和有效性。对基于COM规范开发的软件来说,插件可以是动态链接库(DLL)。插件的使用相当简单,将编译生成的DLL文件直接复制到应用程序指定插件获取的路径中便可,无需通过打包和安装,也不需要注册表信息。
4结语
本文通过构建一个通用的GIS功能组件,完成了流域水生态健康评价应用程序的开发。对于需要应用到GIS功能的应用程序来说,这种组件能实现重复利用,提高应用程序开发效率。但由于是针对GIS应用领域所构建的组件,不适用于没有GIS功能需求的应用软件系统,所以这种组件的通用性相对低一点。在插件架构中,采用的是宿主程序直接与插件程序通信,这使得插件程序移植功能差,宿主可识别的插件类型少。但从软件开发者的角度来说,可以重复利用这种已构建的系统框架和组件,开发类似的软件系统。
作者:黄信望卢远单位:广西师范学院资源与环境科学学院