原文地址:http://blog.sina.com.cn/s/blog_4dff486201000asx.html
共相式GIS应用
对于真实的软件而言,真正的“共相GIS”是不存在的,我们不妨称这样的GIS 为“共相式GIS(Universal GIS)”。就当前技术环境而言,共相式GIS 就是能够支持当前存在的任何计算设备(Any device)、任何操作系统(Any operation system)、任何组件模型(Any component mode)、任何开发语言(Any programming language)、任何数据库(Any database)和任何数据格式(Any dataformat),并可以以很小代价来支持未来的计算设备、操作系统、开发语言、数据库和数据格式的GIS 平台软件。
共相式GIS 体系架构
共相式GIS 的本质在于通过精心设计的软件架构,把GIS 所特有的功能、分析处理算法和所依赖的信息技术进行有效的隔离,使得两者可以各自独立的发展而不会相互牵连制约,不会因为信息技术的发展变化而导致整个软件从头再来。因此,共相式GIS 的核心思想,就是要建立一套具有普遍适应性的共相式GIS 内核(Universal GIS Core, UGC),实现那些相对稳定的、远离易变技术环境的GIS 核心功能。并在UGC 基础之上扩展那些与不断发展的技术环境关系紧密的外围功能模块和人机交互界面。一旦相关技术环境发展变化,仅仅需要重新实现或调整外部功能模块即可,这将大幅度降低技术升迁的代价。这种模式也可以简单地概括为“核-壳”分离。
基于UGC,可以封装各种GIS 软件产品,包括组件式GIS、Internet GIS、桌面GIS。其中组件式GIS 与Internet GIS 既可以使用.NET 技术封装,也可以使用Java 技术开发。即使以后出现新的组件技术或高级开发语言,也可以基本不修改UGC,而通过重新封装人机交互接口的方式提供新的组件式GIS 或其它GIS 软件平台。由于这些软件产品具有同一个内核,因此内核功能升级后,基于其上的各种软件产品都得到同步升级,大幅度减少了软件维护的代价。
归纳起来,可以总结出共相式GIS 的研发步骤:
第一步,剥离GIS 中严重依赖技术环境的部分。比如:依赖于操作系统的可视化引擎和软件界面,依赖于程序语言的二次开发接口,依赖于数据格式或数据库的数据引擎等。
第二步,提炼出具有普遍意义的GIS 的核心功能、算法,形成共相式GIS 内核(UGC)。
第三步,在UGC 基础上,扩展那些严重依赖于具体技术环境的外围部分。比如第一步中提到的可视化引擎和软件界面、二次开发接口、数据引擎等。
第四步,封装适用于多种技术环境的各种类型的软件。如组件式GIS、Internet GIS、桌面GIS 和嵌入式GIS 等,以至于未来的其他GIS 软件形态。一旦有新的技术出现,UGC 仅需要进行少量改动,主要重复第三步和第四步工作即可应对IT变化,大幅度缩减了适应技术变化的周期。
共相式GIS 的内核
UGC 除了要求保持相对稳定以外,还需满足三个条件:
首先,UGC 必须支持多种操作系统;
其次,UGC 必须能被多种程序开发语言调用,以封装各种语言版本的GIS 软件产品;
最后,UGC 必须有很高的运行效率,以满足复杂空间分析运算和大数据量处理的性能要求。Java 是一种在跨平台方面有很强优势的开发语言,实际上已经有一些企业基于Java 编写了GIS 软件,但Java 在性能方面天生的不足影响了基于Java 内核的GIS 软件的进一步发展。与一般的信息管理系统不同,GIS 应用系统不仅处理数据量大,而且分析算法复杂,对性能要求很高。此外,基于Java 的组件在被包括.NET 在内的其它开发语言调用方面也存在不足,因此Java 不适合作为UGC 的开发语言。