1.1.3   GIS应用框架

GIS软件发展至今,已不再是空间数据存储和显示的简单形式应用,许多高级功能如三维分析、空间分析、地理统计和地理服务等都已经得到了实际应用,商业GIS软件已经从桌面端组件发展到基于Web Service的GIS服务。“GIS正在从数据库方法转为知识方法 4 ” 。由于GIS涉及的领域变得非常宽广,商业公司或个人想短时间内从基本类库开始编写一个扩展性强、功能完善的GIS平台成为一件非常困难的事情,当然,如这样做所耗费的人力、物力和财力成本也非常高昂。

在实际应用项目开发中,GIS程序员都倾向于采用某种特定的GIS平台进行二次开发,如我们选择的ArcGIS Engine组件库。本书介绍的GIS应用框架NBGIS也建立在一个这个通用GIS平台上的,这也是目前许多商品级GIS项目软件的开发组件。当然,选择ArcGIS Engine作为框架GIS部分的类库,并非因为世界上只有这一种,商品级和开源的GIS二次开发组件库目前已经有许多实用产品,但ArcGIS Engine是其中最为开发人员所熟悉,使用最广泛,且功能最强大的一种。

基于框架模式开发的应用程序可分为两个层:框架层和应用层。框架层本身并非空穴来风,它是由一些更基础的类库或框架开发而成。在这些基础组件中,处于最底层是操作系统层,它除了提供对硬件设备的访问外,还提供了必要的API给位于其上的所有层的访问;位于操作系统层上的是基础框架层,它以编程模型的形式被提供,如.NET Framework、MFC和JRE等,基础框架层提供了基于操作系统的最一般化的功能和组件;基础框架层之上就是开发者编写的自定义框架层,开发人员需要将应用层的需求进行分析,提取出通用逻辑,并在自定义框架层中实现。

GIS(Geographic Information System 地理信息系统)应用框架是本书探讨的主题,我们将开发的插件式GIS应用框架并没有与具体业务流程相关联,只是一个纯粹的GIS数据显示与功能支撑框架,一个浏览和编辑地理数据的软件平台,或者说,它是通过.NET2.0 Framework和ArcGIS Engine9.2组件库构建的一个简单模拟ArcMap软件的应用,其中前者提供了一般的数据处理和逻辑的组件,后者提供了为显示地理数据而必须的地图控件和地图数据操作类。

与其它应用框架不同,GIS类型的应用框架注定需要是一个可视化的应用,在地理信息数据管理中,数据的可视化与存储同样重要。GIS框架最基本的功能是显示地理数据并能在此基础上进行一系列数据分析、处理和输出工作。GIS框架的可视化功能一般通过某些商业控件实现而很少有人自己亲自从底层开始开发,如使用ArcGIS Engine的地图控件MapControl、PageLayoutControl和TOCControl等。

在商业GIS应用项目开发中,GIS框架(GIS平台)的使用也是非常普遍的。GIS应用软件与其它专业软件不同,它与最终客户的工作流往往紧密相连,由于不同使用部门的工作流都不尽相同,这使得一个公司在为不同客户开发的软件都必须结合客户的实际情况对自己的成型产品进行相应的修改。

为了提高工作效率和产品的可靠性,降低项目开发成本,许多GIS二次开发商都会组织公司核心程序员开发一个GIS应用框架将一些通用的核心功能进行封装,这些框架使用的技术和策略可能各不相同,但其目的都是一样的:降低重复编码的工作量,提高编程效率,给项目人员的开发工作提供一个良好的平台和工作流程。这就是本书内容将要讨论的过程。

拥有一个可扩展的框架,意味着应用项目开发人员接到一个新项目任务后不必从头开始搭建一个系统,他们只需要按照一种工作模式对其GIS应用框架进行继承和扩展开发,并尽量利用以前开发的成果,就可以在短时间内构建出一个无论在UI层,还是在逻辑层都一致的功能组件平台,而这些平台的组件还具有天然的可重用性。这种方法较之从头开始的编码方式,无疑具有更强的吸引力。






4  What is ArcGIS9.2? ESRI总裁 Jack Dangermond