2006年4月15日星期六

超图的共相式地理信息系统探索

  超图不是中国最早开发GIS软件的公司,其GIS平台软件的开发工作始于1996年。当时几乎每个GIS厂商都以桌面GIS作为主打产品,市场竞争非常激烈。这种血腥竞争的市场后来被欧洲商学院的W.Chan.Kim教授称为红海市场。超图起步晚,意识到象其他企业那样以桌面GIS切入市场必定凶多吉少。为了赢得发展的机会,超图反其道而行之,以GIS开发平台为市场切入点。

  超图抓住了组件式GIS和Internet GIS这两个技术变革的重要机遇,于2000年迅速推出可裁减的大型全组件式GIS开发平台—SuperMap Objects 2000,并在几个月后推出Internet GIS平台—SuperMap IS,迅速以新一代开发平台的定位打入市场,为超图在随后几年内高速发展奠定了坚实的基础。2001年底,超图推出了嵌入式GIS平台—eSuperMap和桌面GIS软件—SuperMap Deskpro,从而形成了新一代GIS的全系列产品。四年后的今天,无论从年销售收入还是市场影响角度评价,SuperMap IS系列和SuperMap Objects系列都是亚太地区最成功的Internet GIS平台和组件式GIS平台。

  在抓住全组件式GIS和Internet GIS两个蓝海机会得到迅速发展后,超图没有停息创新的步伐。超图深刻地认识到,若没有充分准备,下一轮技术变革的浪潮可能顷刻间把自己吞没。2001年年底,超图公司开始思考下一代GIS软件的研究与开发问题,寻找新的蓝海市场。

  SuperMap Objects 2000是基于微软的COM技术开发的,超图首先看到了微软的新一代.NET组件技术的巨大魅力。刚开始,超图把下一代GIS的开发计划代号命名为“SuperMap .NET计划”,但随即发现Java的趋势也不可阻挡。下一代组件式GIS究竟何去何从?.NET还是Java?同时,操作系统也存在多元化的局面。超图发现,GIS正面临信息技术(IT)发展带来的严峻挑战。

  1.组件技术新趋势,.NET?还是Java?

  九十年代中,基于组件的开发(Components Based Development,CBD)成为IT的主流开发方式,这导致了GIS业界翻天覆地的技术革新。1999年到2000年间,国际国内有远见的GIS厂商纷纷推出大型组件式GIS软件:Intergraph发布了基于COM技术的GeoMedia、ESRI发布基于COM技术的ArcGIS 8,北京超图公司发布基于COM/ActiveX技术的SuperMap Objects 2000,GIS组件化的浪潮很快席卷全球。如今,组件式GIS与GIS组件化已经成为GIS软件开发技术的主流,成为不可抗拒的力量。在这种潮流影响下,更多的GIS软件加入到组件化的队伍中来。就在最近一两年,不断还有国内的GIS厂商推出基于COM的组件式GIS。

  但是,在IT领域,“唯一不变的就是永远在变”,组件技术也在推陈出新。目前,基于COM的组件式GIS软件技术依然是应用系统采用的主流。但曾经带来GIS技术变革的COM技术仍然存在诸多不足,如因“动态库地狱(DLL Hell)”所导致的组件版本冲突,因对象无法继承而导致的二次开发扩展能力局限,甚至有人评价COM不是真正的面向对象技术,这都影响到基于COM的GIS技术的进一步发展。

  为了与Java竞争,微软公司推出了.NET技术和.NET组件技术,.NET组件技术比COM更加完善,微软公司也计划逐步用.NET组件技术淘汰COM,并最终将形成.NET组件技术与Java组件技术并行发展的局面。



图1、2006年GIS应用系统二次开发语言选用预测

  据地理信息系统论坛(http://www.gisforum.net)调查,2006年以后,选择.NET和Java语言开发GIS应用系统的单位将超过50%(图1),随着时间推移,这一比例还将继续攀升。这也预示着基于.NET和Java技术的组件式GIS将得到快速发展和应用,并将逐步取代基于COM的组件式GIS。然而,要同时开发支持.NET和Java这两种完全不同的组件平台,势必面临两条战线同时作战,成本太高!

  2.操作系统多元化,GIS厂商何去何从?

  纵观GIS软件的发展历程,操作系统对GIS的影响极为深远。从操作系统的角度看,GIS软件的技术发展可以划分为三个阶段:

  Unix主宰阶段。GIS软件对CPU计算能力和图形处理能力的要求向来较高,而90年代中期以前,PC处理能力还处于较低水平。因此,早期的GIS软件主要基于各种Unix操作系统的高档计算机上开发,Unix是主要的GIS用户操作系统。

  Windows主宰阶段。到二十世纪九十年代中后期,Windows成为PC主流操作平台,而且PC的CPU和图形处理能力得到了大踏步的发展,国际上主要的GIS厂商都开始把软件移植到Windows上,进入二十一世纪以来,Windows成为GIS应用的主流。那些来不及把产品移植到Windows的公司惨遭淘汰。

  操作系统多元化阶段。在第一和第二阶段,GIS软件主要以单机版和C/S结构网络版为主,图形可视化、地图数据处理、各种分析功能主要在客户端进行,因此GIS主要受制于客户端的操作系统。但随着Internet GIS的逐步成熟和广泛应用推广,尤其是当Internet GIS从Browser/Web GIS Server/Database Server三层结构发展到Browser/Web GIS Server/GIS Application Server/Database Server四层结构以后,GIS软件技术及其应用的重心逐步从客户端向服务器端偏移。此时服务器端的操作系统对GIS的影响也越来越大。

  直到目前为止,Windows仍然垄断着PC或客户端操作系统市场,但在服务器端,GIS软件的运行环境变得复杂多样。尽管从2005年开始,Windows已经超过Unix成为第一大服务器端操作系统,但Unix的份额还是非常巨大,市场份额仍近40%(如图2);Linux的销售收入尽管只占11.7%的份额,但Linux价格低廉,若换算成装机数量,Linux所占的份额会大幅度提高。因此,服务器端操作系统基本上处于Windows,Unix和Linux三足鼎立的局面。





图2、2005年全球服务器端操作系统市场份额(按销售收入)

  当服务器端软件逐步成为GIS的重头戏时,GIS厂商再也无法对服务器操作系统的多元化纷争作壁上观了。他们不得不考虑在新一轮的服务器端GIS中同时支持多种操作系统。不少国际GIS厂商在第二阶段中,基本上放弃了他们于第一阶段在Unix上的软件技术积累,彻彻底底地把新的软件架构在Windows上。比如,有些厂商的软件内核竟然基于MFC和COM开发,这都是原生于Windows的技术,势必影响其向Unix/Linux的移植工作。若重新开发内核,则代价巨大。

  面向移动终端的GIS发展也很快,在PDA和智能手机等移动设备上的操作系统则更令人扑朔迷离,早期是Palm占领垄断地位,到现在,Symbian处于领导地位,微软的Pocket PC和Windows CE排第二,Linux则紧随其后。

  短短十余年时间,操作系统就折腾着GIS软件在Unix和Windows之间跑了个来回,如果再考虑移动终端的各种操作系统,GIS厂商就更加苦不堪言了。谁能说未来的技术发展,不会在操作系统方面给GIS厂商提出新的挑战?

  3.GIS如何尽快跟上IT发展步伐?

  除操作系统和开发语言的发展变化以外,IT很多其他方面的进步都对GIS软件产生重要影响。在不断变革和进步的IT面前,GIS厂商总是应接不暇,被迫不断投入重金开发新的GIS软件。尽管如此,GIS软件还是陷入了一个难以自拔的漩涡,GIS软件不断追逐IT,但GIS却始终落后于IT至少三到五年。






图3、追逐IT的GIS



  比如,微软的COM技术在上世纪九十年代中期就已经成熟,但真正的大型组件式GIS差不多在2000年才得以逐步成熟。再如,2001年微软就推出了.NET组件技术,但真正基于.NET组件技术的大型组件式GIS到2005年以后才上市。

  随着GIS所依赖的技术环境越来越复杂,以及IT的不断进步,为了跟上技术变化,满足不同类型应用环境的需求,研发GIS平台软件的负担越来越重。因为跟不上IT变革,一些早期在国际和国内很有影响的GIS软件和企业被市场无情地淘汰了。

  那么,能否探索出一种领先的软件架构,使得GIS软件能够以较小的代价,普遍适应当前和未来信息技术在硬件设备、操作系统、开发语言等方面的发展和进步呢?

  4.哲学中“共相问题”的启示

  柏拉图是古希腊著名的哲学家,怀特海认为柏拉图奠定了哲学的发展方向,自柏拉图以后的哲学家都在为柏拉图作脚注。他甚至还说“无论你赞成柏拉图还是反对柏拉图,你都是一个柏拉图主义者”。

  那么,柏拉图究竟做了什么贡献,让他在哲学界有这么高的威望?罗素认为,柏拉图最大的贡献就是开创了“共相问题”的探讨,即哲学中的“共相”与“殊相”问题。

  哲学中用“共相”和“殊相”来分别指代普遍性和个别性的概念与事物。比如方形的办公桌、圆形的餐桌或椭圆形的会议桌,其中任何一个都是殊相(Particular),而用以概括各种类型桌子的“桌子”这个概念则是共相(Universal)。同样,基于COM的组件式GIS软件是一个殊相,基于.NET的组件式GIS软件或基于Java的Internet GIS软件也都分别是殊相,而用以概括各种GIS软件的“GIS软件”则是共相。




图4、各种殊相的桌子被抽象概括为共相的“桌子”



  对共相问题的探讨,确定了西方哲学甚至整个哲学的主要发展方向。哲学中的共相问题对突破当前GIS软件发展的困境也有着重要的启示。哲学家们认为,殊相是基于具体的时间而存在的,而共相则是对经验世界中的一切现象以及一切可能成为经验世界现象的最高抽象,可以独立于具体的时间之外永续存在下去。换言之,我们也可以说,众多的殊相被概括为共相之后,其生命得以延长。

  那些作为殊相的GIS软件个体之所以不能长时间存在,主要原因在于,软件被设计为过多地依赖于具体的技术环境,如硬件设备、操作系统、开发语言、数据库和数据格式等,一旦其赖以依存的技术环境发生重大变化,则GIS软件可能因此而淘汰。正因为如此,GIS软件的研发者们不断地重复着“夸父逐日”式的追逐。在某一殊相GIS软件上投入的研发成本越大,在下一阶段的新产品开发中付出的代价也就越大。因此一旦IT相关技术出现新的发展,就面临被淘汰的危险。

  尽管共相只是概念世界的东西,并非具体的事物,但不可否认,个体的殊相因为被抽象为普遍的共相之后,得以超越具体的时间而延续。这就启示我们,如果对GIS软件进行共相式的概括和抽象,提炼出那些独立于具体的技术环境之外的普遍性功能和技术架构,这个技术架构在IT发展变化中可以保持相对稳定,只需要投入较少代价对软件的外围部分进行扩展或调整,即可适应未来IT的变化,将在很大程度上延续GIS软件的生命周期,减少GIS平台开发单位因技术变革而带来的大量重复投入。

  对于真实的软件而言,真正的“共相GIS”是不存在的,我们不妨称这样的GIS为“共相式GIS(Universal GIS)”。就当前技术环境而言,共相式GIS就是能够支持当前存在的任何计算设备(Any device)、任何操作系统(Any operation system)、任何组件模型(Any component mode)、任何开发语言 (Any programming language)、任何数据库(Any database)和任何数据格式(Any data format),并可以以很小代价来支持未来的计算设备、操作系统、开发语言、数据库和数据格式的GIS平台软件。

  5.共相式GIS体系架构

  共相式GIS的本质在于通过精心设计的软件架构,把GIS所特有的功能、分析处理算法和所依赖的信息技术进行有效的隔离,使得两者可以各自独立的发展而不会相互牵连制约,不会因为信息技术的发展变化而导致整个软件从头再来。因此,共相式GIS的核心思想,就是要建立一套具有普遍适应性的共相式GIS内核(Universal GIS Core, UGC),实现那些相对稳定的、远离易变的技术环境的GIS核心功能。并在UGC基础之上扩展那些与不断发展的技术环境关系紧密的外围功能模块和人机交互界面。一旦相关技术环境发展变化,仅仅需要重新实现或调整外部功能模块即可,这将大幅度降低技术升迁的代价。这种模式也可以简单地概括为“核-壳”分离。
图5、共相式GIS框架结构
  基于UGC,可以封装各种GIS软件产品,包括组件式GIS、Internet GIS、桌面GIS(图5)。其中组件式GIS与Internet GIS既可以使用.NET技术封装,也可以使用Java技术开发。即使以后出现新的组件技术或高级开发语言,也可以基本不修改UGC,而通过重新封装人机交互接口的方式提供新的组件式GIS或其它GIS软件平台。由于这些软件产品具有同一个内核,因此内核功能升级后,基于其上的各种软件产品都得到同步升级,大幅度减少了软件维护的代价。

  归纳起来,可以总结出共相式GIS的研发步骤:

  ◇ 第一步,剥离GIS中严重依赖技术环境的部分。比如:依赖于操作系统的可视化引擎和软件界面,依赖于程序语言的二次开发接口,依赖于数据格式或数据库的数据引擎等。

  ◇ 第二步,提炼出具有普遍意义的GIS的核心功能、算法,形成共相式GIS内核(UGC)。

  ◇ 第三步,在UGC基础上,扩展那些严重依赖于具体技术环境的外围部分。比如第一步中提到的可视化引擎和软件界面、二次开发接口、数据引擎等。

  ◇ 第四步,封装适用于多种技术环境的各种类型的软件。如组件式GIS、Internet GIS、桌面GIS和嵌入式GIS等,以至于未来的其他GIS软件形态。

  一旦有新的技术出现,UGC仅需要进行少量改动,主要重复第三步和第四步工作即可应对IT变化,大幅度缩减了适应技术变化的周期。

  6.共相式GIS的内核

  UGC除了要求保持相对稳定以外,还需满足三个条件:

  ◇ 首先,UGC必须支持多种操作系统;

  ◇ 其次,UGC必须能被多种程序开发语言调用,以封装各种语言版本的GIS软件产品;

  ◇ 最后,UGC必须有很高的运行效率,以满足复杂空间分析运算和大数据量处理的性能要求。

  Java是一种在跨平台方面有很强优势的开发语言,实际上已经有一些企业基于Java编写了GIS软件,但Java在性能方面天生的不足影响了基于Java内核的GIS软件的进一步发展。与一般的信息管理系统不同,GIS应用系统不仅处理数据量大,而且分析算法复杂,对性能要求很高。此外,基于Java的组件在被包括.NET在内的其它开发语言调用方面也存在不足,因此Java不适合作为UGC的开发语言。

  有的厂商试图基于COM组件来构造适应当前技术变化的GIS软件平台,他们在现有基于COM编写的组件式GIS平台上,用Java封装了Java组件的开发接口,用.NET封装了.NET组件的开发接口,从而实现对包括Java和.NET在内的多种二次开发语言的支持。但.NET语言和Java语言调用COM接口在开发平台的性能方面存在一定的风险。更为重要的是,COM技术本身存在诸多缺陷,而微软也将逐步采用.NET代替COM,把内核建立在这样一种技术基础上存在极大的风险,因此该方案的跨平台策略更令人担忧。

  综合考虑多种因素,C语言或C++语言无疑是目前最佳的选择。几乎所有的操作系统都支持C/C++,如果说Java程序的特点是“编写一次,到处运行(Write once, run anywhere)”,用C/C++编写的程序则具有 “编写一次,到处编译 (Write once, compile anywhere)”的特点。C/C++不仅具有支持多种操作系统的特点,而且成熟、标准,还可以被其它多种开发语言调用,更重要的是C/C++程序的效率远高于Java。

  基于以上原因,超图选择了标准C++作为UGC的开发语言。

  7.SuperMap共相式GIS

  经过4年的努力,超图基于标准C++开发了共相式GIS内核—SuperMap UGC,并在该内核基础上,开发了一系列“殊相”的GIS软件产品。每一个殊相GIS软件采用不同的开发工具和开发语言构建,并对应不同的应用领域:

SuperMap IS Java: 基于Java EE 的Internet GIS开发平台
SuperMap IS .NET: 基于.NET的Internet GIS开发平台
SuperMap Objects Java: 基于Java Beans的组件式GIS开发平台
SuperMap Objects .NET: 基于.NET的组件式GIS开发平台

  如图6所示,诸多殊相软件构成了SuperMap GIS Universal的产品体系,如果以后有新的组件式软件技术,基于该框架还可以进一步扩展。
图6、SuperMap GIS Universal体系架构
  基于共相式GIS理念,SuperMap GIS Universal具有以下特点:

  ◇ 各种软件之间具有良好的功能一致性。SuperMap GIS Universal系列产品具有统一的技术内核,内核功能或性能升级后,全系列所有具有相关功能的软件产品都得到同步升级;

  ◇ 支持多种计算机设备,包括服务器、桌面计算设备和移动计算设备等;

  ◇ 支持多种操作系统,包括Windows、Unix和Linux等;

  ◇ 支持多种组件模型,包括.NET组件和Java Bean组件;

  ◇ 支持多种开发语言,包括.NET系列和Java家族;

  ◇ 支持多种数据库,包括Oracle、SQL Server、Sybase、DB2等国际流行的数据库,也支持华工达梦和人大金仓等国产数据库。

  更为重要的是,SuperMap GIS Universal从纷繁复杂的GIS软件殊相中提炼概括出GIS核心,通过构建远离易变的技术环境的共相式GIS内核,并在该内核基础上开发各种形态的GIS软件,大幅度减少了GIS软件跟踪新的IT变革的代价,改变了GIS软件开发模式和生命周期。

  从2005年年底开始,超图的SuperMap GIS Universal系列产品开始陆续上市,并取得了越来越多地应用。在北京市怀柔区和昌平区,超图以SuperMap IS Java平台与人大金仓Kingbase数据库、共创开源的桌面Linux和中科红旗服务器版Linux操作系统一起,共同打造了两个100%全国产化电子政务系统案例,树立了自主创新的应用典范。