云时代的GIS软件技术与应用(二)
2. 云使能的GIS平台软件
云使能的GIS软件,就是能支撑云计算的GIS软件。未来在云计算的应用模式是:云+端的组合。在政务网、企业内网、互联网上有很多的云,可提供各种各样的能力和服务;应用方面就是端。端可以是台式电脑、电视机、笔记本电脑、平板电脑甚至智能手机,因为云计算是中心计算,对端的计算和存储能力要求降低,而且以后的应用当中,便携的端越来越重要,越来越多的应用都将使用便携的端。因此云使能的GIS软件技术包括两个部分:第一部分是云GIS服务器软件,第二步部分是端GIS工具软件,有云和端,才能构成云使能的GIS软件技术。
2.1. 云GIS服务器软件
作为一个云GIS服务器软件,应该具有什么特点,才能满足云计算的需求呢?应该具有四个特点:支持虚拟化的Service GIS技术、跨平台的GIS技术、支持64位计算和二三维一体化。需要说明的是,其中第一个是必备(Must have)条件,后三个是优选(Nice to have)条件。即使没有后三个条件也能构建云计算环境,但有了它们,可以更好的建设GIS云计算环境和应用。
2.1.1. 支持虚拟化的Service GIS平台
要做云计算,GIS的服务器软件必须支持虚拟化,这是首要的前提。所谓虚拟化,指的是GIS软件运行在虚拟机上,而不是物理的计算机上。这样做的好处在于应用系统使用多个计算机上的资源时配置简单,各个应用系统在服务器上是相对独立的空间运行而互不干扰,最终可以显著的提高计算机的工作效率和资源利用率,计算资源可以在不同系统之间按需分配。因此,要构建GIS的云计算体系,首先要选择支持虚拟化的GIS服务器。
SuperMap GIS在虚拟化方面的支持工作很早就开始了。目前支持以下虚拟技术和软件:IBM的Power VM、微软的虚拟化技术Hyper-V、美国威睿公司的虚拟化软件VMware和Oracle公司的虚拟化技术Virtual Box、开源的虚拟化技术Xen与KVM。
Service GIS是支持云计算的另一个重要的技术基础。Service GIS是基于面向服务体系架构(SOA)的全功能GIS服务平台软件,而不是Web GIS。现在来看,Web GIS是GIS软件形态发展的一个过渡形式,不是一种完善的GIS软件形态,功能相对简单,将逐步被淘汰。
建设云时,最好选择Service GIS,而不建议选择Web GIS,更不建议选择瓦片结构的图片服务器,后者缺乏后续的功能扩展能力。WebGIS和瓦片结构的图片服务器在应用初期能够满足要求,今后还得推倒重来。主流的服务器端GIS 软件如SuperMap IS和ArcIMS是Web GIS,而SuperMap iServer和ArcGIS Server则是Service GIS。
2.1.2. 跨平台的GIS技术
也许有人会问,现在PC里都用Windows,跨平台有什么用?跨平台是应用系统结构发展变化所带来的新的要求。早期的GIS系统大都是C/S结构的,主要GIS功能在客户端实现,服务器主要是存储数据。现在应用系统更多采用B/S结构,GIS的功能重心转移到服务器端,主要功能在服务器端实现,客户端只是用来展示处理结果。虽然PC机基本是Windows一统天下的局面,但服务器端操作系统则是Windows、Unix、Linux是三分天下的格局,而移动终端的操作系统更加多样化。在服务器操作系统中,Linux和Unix 有更好的稳定性和更大的并发访问能力。因此GIS软件的跨平台特性就成了必然要求。
在云计算领域,有Windows的云,如微软的公有云和私有云都是基于Windows的,亚马逊也提供了Windows版本的公有云。但是有更多的云计算的技术和平台是基于非Windows的,比如说IBM的云计算平台、红帽的云计算平台、谷歌的云都是Unix或Linux。因此,若所选GIS平台软支持多种操作系统,才可以在云计算建设中有更多优秀技术和平台以供选择。
在云计算时代跨平台比以前更重要,有远见的GIS平台软件企业都提前考虑了跨平台的解决方案,但各家采用策略不同。几个典型的企业分别采用了三种跨平台方案,即模拟Windows方案、Java方案和标准C++方案。
模拟Windows方案非常巧妙的保护了已有的GIS研发投资,通过专业跨平台解决方案商(如MainSoft)的产品在Linux或Unix上建立一个Windows的虚拟环境,这样Windows的程序很方便能在Linux或Unix上调试通过。该方案开发代价最小,很快就可以推出跨平台的GIS技术和产品。但该方案的缺点是在非Windows操作系统上性能较低,而且受限于第三方技术可能不支持某些操作系统。
Java方案则基于Java来重写GIS软件核心模块,该方案虽然工作量较大,但Java是跨平台的开发语言,其“编写一次,到处运行”的特性让支持多种操作系统变得不那么复杂,而且一旦开发出来,就支持各种操作系统。但Java解释执行的特点决定了系统性能相对C和C++有相当的差距,Java开发的GIS内核很难满足大数据量和高复杂度的计算要求。
标准C++方案则是开发代价最高的解决方案,选择标准C++全部重写GIS内核。虽然各操作系统都支持标准C++,但标准C++“编写一次,到处编译”的特点使得开发跨平台软件远不如Java方便,不仅需要在每个操作系统上编译调试,而且有不少跨平台的问题需要自行处理,工作量很大。举个最简单的例子,一个32位长整数包括4个字节,这4个字节的顺序在不同的CPU下都不同,如果简单的把这4个字节从内存写到文件中,换台计算机软件就无法识别这个长整数了,这些都要自行处理。尽管这是一个开发代价极大的方案,但它的好处也非常明显,在所有的操作系统都具有C++的高性能特性。在以服务器端计算为特点的云计算时代,高性能、跨平台的GIS技术意义十分重大。
经过慎重权衡,SuperMap选择了标准C++方案。2001年到2005年,超图软件基于标准C++重写了GIS内核,并基于该内核逐步重新构建了SuperMap GIS系列产品,该系列产品支持Windows系列、Linux系列(如:Redhat Linux、Suse Linux、Ubuntu Linux、麒麟Linux、凝思Liunx、红旗Linux)和Unix系列(如:IBM AIX)。