软件选型是GIS应用项目开发中的重要环节。在国内外众多的GIS软件产品中,"没有最好的,只有最合适的"。本文档从功能、性能、二次开发能力和技术支持等多方面剖析ArcGIS、SuperMap GIS和MapInfo三套解决方案,并列出对比条目对二次开发项目的重要等级参考,希望对开发商和最终用户软件选型有所帮助。
项目 |
ArcGIS解决方案 |
SuperMap解决方案 |
MapInfo解决方案 |
空间数据库技术 |
ArcSDE/ GeoDatabase |
SuperMap SDX |
MapInfo Spatialware |
组件开发平台 |
MapObjects/ ArcObjects |
SuperMap III |
MapX |
桌面数据管理软件 |
ArcMap |
SuperMap Deskpro |
MapInfo |
数据采集软件 |
无专业数据采集软件,直接使用ArcMap |
SuperMap Survey |
无专业数据采集软件,直接使用MapInfo |
|
|
|
|
在应用需求的推动下,ArcGIS先后推出了多种文件格式,如Arc/Info的Coverage、ArcView的Shape文件、ArcSDE的空间数据库、GeoDatase的空间数据库、交换文件格式E00等等,ArcMap推出后又出现了新的数据结构。这些数据格式所支持的功能各不相同,比如Coverage和GeoDatabase有拓扑关系,Shape和SDE没有拓扑关系,数据对象结构也相差极大,以至于各格式之间相互转换频繁,且这样或多或少地会损失信息和功能。
SuperMap同样提供了多种格式的数据组织方式,比如:基于复合文档技术的SDB,基于桌面数据库的MDB,基于大型数据库的SDX for Oracle和SDX for SQL Server等。SuperMap的这些格式都有统一的对象模型和结构定义,各个格式支持的操作和功能从根本上是统一的。SuperMap GIS系列软件都可以直接打开这些格式的数据,并且能非常简单地实现各个数据格式数据源之间交换数据,如在同一格式的数据源内复制数据。SuperMap拥有独一无二的"多源空间数据无缝集成技术",允许开发上轻易将使用SuperMap已建成的应用系统移植到其他格式。比如,在极少代码改动的情况下,一个使用SQL Server存储空间数据的应用系统或者产品轻松移植到使用Oracle或者SDB的环境中。
MapInfo的数据格式相对比较单一,即基于文件的TAB数据格式,另一种就是基于数据库的MapInfo Spatialware。MapInfo也能比较方便地在两种数据格式之间进行转换。不足之处在于MapInfo的数据格式都不支持拓扑关系,MapInfo整个软件也不支持拓扑关系。
基于文件的地图数据管理方式仍然在一些系统中广泛应用,特别是在一些中小型应用项目中中还是具有一定的意义。
项目 |
ArcGIS |
SuperMap |
MapInfo |
本地文件类型 |
Coverage、Shape |
SDB、MDB |
TAB |
组文件个数 |
一个目录下的多个文件,不便于管理 |
2个(sdb, sdd),便于管理 |
多个( 一般多于5个),不便于管理 |
一组文件可管理数据集数量 |
1个数据集 |
多个(数十个至数百个,理论上可以管理21亿个数据集)。 您可以把多个Arc/Info Coverage和MapInfo TAB的内容用一个SDB管理。 |
1个数据集 |
数据加密与信息安全 |
不具备数据加密的功能。 |
SuperMap SDB文件具有加密功能。创建该文件时允许用户指定密码,其他用户如果不知道密码,即便有SuperMap软件也不能打开和使用数据。有利于保护用户的数据产权。 |
不具备加密功能 |
是否存储拓扑关系 |
√ |
√ |
× |
是否存储对象风格 |
× |
√(复合数据集) |
√ |
是否支持数据压缩 |
× |
√ |
× |
支持复杂几何对象 |
× |
√(对象类型丰富) |
√(支持,但对象类型不够丰富) |
大数据量管理能力 |
性能较高 |
性能较高 |
性能较高 |
地图范围无限制 |
√ |
√ |
× |
是否支持SQL查询 |
√ |
√ |
√ |
ArcGIS提供两种本地地图数据格式,即Coverage和Shape。其中Coverage支持拓扑关系,Shape文件不支持拓扑关系。两种文件格式都不提供加密功能,无法实现数据保护。两种数据格式都是一个数据集、多个文件组成,在大型应用系统中,地图数据量大,因而数据文件也很多,不便于数据的组织和管理。
SuperMap也提供两种本地地图数据格式,即SDB和MDB。两种数据格式都支持拓扑关系、密码保护功能,允许用户对数据进行加密。两种数据格式都是多数据集一体化管理方式,外部数据文件数量少,方便于数据管理和组织。
MapInfo的TAB文件格式也是由多个文件组成,不支持存储拓扑关系,也不支持加密。
基于关系数据库和对象关系数据库的空间数据库技术是现今大型GIS应用项目中广泛采用的空间数据管理技术,这一点在大型应用项目的GIS软件选型对比中一直受到高度重视。
项目 |
ArcGIS |
SuperMap |
MapInfo |
技术名称 |
SDE(Spatial Database Engine), GeoDatabase |
SDX(Spatial Database eXtension) |
Spatialware |
支持SQL Server |
√ |
√ |
√ |
支持Oracle |
√ |
√ |
√ |
支持Oracle Spatial |
√ |
√ |
√ |
支持数据类型 |
仅仅支持点、线、面、注记。CAD数据导入后参数化对象转换为简单线、面对象,造成大量数据膨胀。 |
点、线、面、注记、圆弧、圆、椭圆、曲线、GeoPath和复合对象等。由于支持参数化对象,CAD数据导入后膨胀较小。 |
点、线、面、注记、圆弧、圆、椭圆、曲线等。由于支持参数化对象,CAD数据导入后膨胀较小。 |
数据保密与信息安全 |
利用关系数据库的数据访问权限控制,具有很好的数据安全策略 |
利用关系数据库的数据访问权限控制,具有很好的数据安全策略 |
利用关系数据库的数据访问权限控制,具有很好的数据安全策略 |
是否支持拓扑关系 |
SDE不支持 GeoDatabase支持 |
支持 |
不支持 |
是否存储对象风格 |
× |
√(复合数据集) |
√ |
是否支持数据压缩 |
× |
√ |
× |
支持复杂几何对象 |
× |
√ |
× |
长事务支持 |
√ |
√ |
√ |
地图范围无限制 |
×(SDE的地图范围仅能向北和东方扩展,向南和向西则受限制) |
√ |
× |
是否支持SQL查询 |
√ |
√ |
√ |
ESRI的SDE和后来推出的GeoDatabase都具有大数据量管理能力,具有很好的数据访问权限管理。但是ESRI的空间数据库支持的几何对象类型不够丰富,此外,由于SDE不支持存储和管理拓扑关系,造成不少应用系统特别是交通、电信、电力等与网络拓扑有关的行业应用系统选型的障碍。尽管GeoDatabase支持拓扑关系,但是MapObjects无法访问GeoDatabase。
SuperMap SDX空间数据库技术具有大数据量管理能力和很好的权限管理功能。而且SuperMap 空间数据库也如同SuperMap的文件格式一样,支持存储拓扑关系和非常丰富的几何对象类型。
MapInfo的Spatialware空间数据库也有很好的权限管理功能,大数据检索能力也不错。Spatial不支持数据压缩。
在电力、交通、电信和城市综合管网管理等系统中,拓扑关系方面的功能非常重要。
项目 |
ArcGIS |
SuperMap |
MapInfo |
拓扑错误检查 |
√ |
√ |
× |
建立网络拓扑关系 |
√ |
√ |
× |
建立多边形拓扑关系 |
√ |
√ |
× |
网络拓扑分析 |
√ |
√ |
× |
是否支持一根管线中多条通信线缆的网络路径搜索 |
× |
√ |
× |
编辑时是否支持动态维护网络拓扑关系 |
× |
√ |
× |
是否支持节点连接关系矩阵 |
× |
√ |
× |
ArcGIS中的Workstation部分对拓扑关系有非常强的处理和分析功能,但是该部分缺少强大的组件式二次开发能力。ArcInfo 8.0新增部分,特别是ArcObjects+GeoDatabase对拓扑的处理能力尚不成熟,尤其缺少交通网络资源管理中特别需要的动态维护拓扑关系、一根管线中包含多条光纤/铜缆以及一条道路多车道的网络搜索功能,也不支持节点连接关系矩阵。若用ArcObjects开发交通网络资源管理系统,这部分网络分析功能需要在二次开发中实现。若用MapObjects开发交通网络资源管理系统,则所有的拓扑关系维护和分析功能全部需要二次开发实现,工作量更大。
SuperMap无论是文件格式还是空间数据库格式都支持拓扑关系存储管理功能。并且,针对交通网络资源管理中一根管道包含多条光纤/铜缆、一条道路多车道的特殊情况,SuperMap专门提供了解决方案,通过RuleMask可以对管线中指定的通信线缆、道路中的车道进行网络路径搜索,大大减少了二次开发的工作量。与此同时,SuperMap还支持在编辑时动态维护网络拓扑关系,增加管线无需重建拓扑关系。独特的节点联接关系矩阵为解决网络节点处理复杂的连接关系提供了方便。
MapInfo不支持拓扑关系的存储和管理,也不支持基于拓扑结果的空间分析和运算。若用于开发电信、电力、自来水等需要拓扑分析功能的应用系统,拓扑分析功能完全需要二次开发实现,无疑增加了二次开发的工作量和系统建设周期。
专题地图是GIS软件根据属性数据的不同分别给几何对象采用不同风格显示的地图表现形式,是GIS软件数据可视化的重要工具,在多数GIS应用中都有重要意义。
项目 |
ArcGIS |
SuperMap |
MapInfo |
|
单值专题图 |
√ |
√ |
√ |
|
分段(范围)专题图 |
√ |
√ |
√ |
|
等级符号专题图 |
√ |
√ |
√ |
|
点密度专题图 |
√ |
√ |
√ |
|
3D棱柱图 |
× |
× |
√ |
|
统计专题图 |
面积图 |
× |
√ |
× |
阶梯图 |
× |
√ |
× |
|
折线图 |
× |
√ |
× |
|
点图 |
× |
√ |
× |
|
柱状图 |
√ |
√ |
√ |
|
三维柱状图 |
× |
√ |
× |
|
饼图 |
√ |
√ |
√ |
|
三维饼图 |
× |
√ |
× |
|
玫瑰图 |
× |
√ |
× |
|
三维玫瑰图 |
× |
√ |
× |
|
自定义专题图 |
× |
√ |
× |
ArcGIS支持较多的专题地图,SuperMap在这方面功能更强,不仅支持更多的统计专题图功能,而且提供了独一无二的自定义专题地图,解决了以往GIS软件专题地图显示中面临的一些难题。MapInfo的专题地图功能也较为丰富,使用也比较方便。
对应用系统来讲,GIS软件数据交换能力决定了该系统的开放性,即能否方便地输入其他来源的数据以及输出相应的数据格式,与其他系统进行数据交换的能力。
项目 |
ArcGIS |
SuperMap |
MapInfo |
|
转入 |
MIF |
× |
√ |
√ |
E00 |
√ |
√ |
√ |
|
DXF |
√ |
√ |
√ |
|
DGN |
√,但支持不佳 |
√ |
× |
|
TAB |
× |
√ |
---- |
|
SHP |
√ |
√ |
√ |
|
Coverage |
---- |
√ |
× |
|
转出 |
MIF |
√ |
√ |
√ |
E00 |
√ |
√ |
√ |
|
DXF |
√ |
√ |
√ |
|
DGN |
× |
√ |
× |
|
TAB |
× |
× |
---- |
|
SHP |
√ |
√ |
√ |
|
Coverage |
---- |
√ |
× |
三套解决方案相比较,SuperMap具有更强的数据交换能力,支持更多的矢量数据格式(包括交换格式和二进制格式)。
多源数据集成,即无需格式转换直接访问多种数据格式的能力,这是GIS应用系统开放能力的另一种体现。
可直接访问的第三方地图格式 |
ArcGIS |
SuperMap |
MapInfo |
DGN |
× |
√ |
× |
DWG |
√ |
√ |
× |
Oracle Spatial |
√ |
√ |
√ |
ArcGIS和SuperMap的多源数据集成能力都比较强,其中SuperMap支持DGN,ArcGIS不支持。
地图编辑功能是多数GIS应用必需的功能,组件对象模型强大的地图编辑功能可以省却大量二次开发的精力。
项目 |
ArcGIS |
SuperMap |
MapInfo |
||
属性编辑 |
√ |
√ |
√ |
||
对象添加、删除、移动 |
√ |
√ |
√ |
||
顶点编辑 |
√ |
√ |
√ |
||
沿线文字标注 |
√ |
√ |
× |
||
自动维护拓扑关系 |
× |
√ |
× |
||
创建几何对象类型种类 |
仅能创建几种基本的几何对象类型(如:点、线、面等) |
可创建二十余种几何对象类型,如:点、线、面、文本、曲线、矩形、圆角矩形、椭圆、斜椭圆、复合对象等 |
可创建的几何对象类型包括:点、线、面、文本、曲线、矩形、圆角矩形、椭圆 |
||
捕捉 |
点 |
与顶点或节点重合 |
√ |
√ |
√ |
在线上 |
× |
√ |
× |
||
在线之中点 |
× |
√ |
× |
||
在线的延长线上 |
× |
√ |
× |
||
与其他点在同一水平或竖直线上 |
× |
√ |
× |
||
线 |
与前一线段成固定角度 |
× |
√ |
× |
|
跨过其他点 |
× |
√ |
× |
||
水平或竖直 |
× |
√ |
× |
||
与线段平行 |
× |
√ |
× |
||
与线段垂直 |
× |
√ |
× |
||
固定长度 |
× |
√ |
× |
ArcInfo在地图编辑功能方面能力欠佳一直困扰着ArcGIS用户,MapObjects甚至不提供基本的地图编辑功能,全部需要通过二次开发来实现。ArcObjects提供一些地图编辑功能,但是所能创建的几何对象类型不多,而且智能捕捉能力也弱。
SuperMap超强的图形编辑能力在很大程度上降低了图形编辑的开发工作量,在这方面SuperMap具有非常显著的优势。
MapInfo地图编辑功能比较方便,能创建的地图对象也较丰富,但在捕捉功能方面较弱。
通过桌面排版方式打印输出地图是多数GIS应用系统需要提供的功能。
项目 |
ArcGIS |
SuperMap |
|
多页分幅输出 |
√(ArcObjects) |
√ |
√(MapInfo) |
设计时页面与打印设备无关(如当前仅仅安装A4打印设备,应该可以设计大于A4的页面) |
√(ArcObjects) |
√ |
× |
艺术字标题 |
× |
√ |
× |
属性数据表 |
√(ArcObjects) |
×(可通过二次开发实现) |
× |
支持图片 |
√(ArcObjects) |
√ |
× |
布局中支持直接缩放/定位地图范围 |
√(ArcObjects) |
√ |
× |
比例尺 |
√(ArcObjects) |
√ |
√(MapInfo) |
图例 |
√(ArcObjects) |
√ |
√(MapInfo) |
图例允许分解调整 |
√(ArcObjects) |
√ |
× |
对象自动对齐方式 |
√(ArcObjects) |
√ |
√(MapInfo) |
对象组合 |
× |
√ |
× |
对象组合嵌套 |
× |
√ |
× |
MapObjects不提供桌面排版功能。
ArcObjects提供桌面排版功能,功能较强。支持属性数据表,不支持对象组合(Group)、组合嵌套(Nested Group)和艺术字体标题。
ArcGIS中的各个软件无法共享制图排版的成果,如ArcMap的布局设计成果无法在MapObjects、ArcInfo Workstation和ArcView 3.x中使用。
SuperMap提供专门的桌面排版控件(SuperLayout),功能较强。SuperMap的布局组件不直接支持属性表,需要通过二次开发来扩展实现。SuperLayout支持艺术汉字标题,支持布局元素的组合(Group)、组合嵌套(Nested Group)等功能,有助于在布局二次开发中实现特殊的模板功能。
SuperMap GIS系列软件基于共同的技术基础构建,各个软件之间可以共享布局设计,如SuperMap Survey制作的布局,在SuperMap Deskpro桌面软件和SuperMap III组件中都可以识别并使用。
MapX没有排版功能。
MapInfo提供排版功能,功能较强,不足之处在于不支持布局中直接缩放地图、嵌入图片、对象组合以及组合嵌套等。
SuperMap提供专业的数据采集工具,可以进行基础地形图和专业地图数据的批量快速采集。
ArcGIS和MapInfo无类似专业的数据采集软件。使用传统的桌面GIS软件进行数据编辑时,往往需要不断切换可编辑图层,来指定当前绘制的几何对象存放到什么图层,这样既耗费时间也容易出错。此外,通过数字化人员输入编码的方式来区分同层的不同地物要素类型,这也是一个容易出错的工作,大量数据错误检查的工作严重影响数据采集的效率。
基于SuperMap Survey专业数据采集软件,先由数据采集管理员定义数据结构并构建数据采集界面参数库,数字化人员通过所见即所得的方式绘制指定类型的几何对象,无需不断切换可编辑图层、无需输入要素编码,避免了大量错误的发生,大幅度提高了效率。
组件式开发方式无疑已经成为当前最主流的GIS应用二次开发方式,比较GIS软件的组件开发能力和灵活性在GIS软件选型中至关重要。
软件 |
ArcGIS |
SuperMap |
MapInfo |
是否支持可视化设计 |
√ |
|
√ |
语言 |
Visual Basic, Visual C++, Delphi, C++ Builder, Power Builder等 |
Visual Basic, Visual C++, Delphi, C++ Builder, Power Builder等 |
Visual Basic, Visual C++, Delphi, C++ Builder, Power Builder等 |
是否具有通用性 |
√ |
|
√ |
是否易于与其他技术(如MIS等)集成 |
√ |
|
√ |
功能 |
MapObjects功能很弱,尚不如SuperMap众多组件中的一个核心组件; ArcObjects功能强大。 |
功能强大 |
MapX功能比MapObjects稍强,但仍然属于轻量级客户端 |
扩展性 |
基于标准组件的二次开发,可以与其它组件集成,扩展非常强。 |
基于标准组件的二次开发,可以与其它组件集成,扩展非常强。 |
基于标准组件的二次开发,可以与其它组件集成,扩展非常强。 |
伸缩性 |
MapObjects只有一个控件,功能弱,满足不了大型应用需求; ArcObjects组件群庞大,但是可拆性差,可裁减性亦差,伸缩性不足且客户端成本高。 |
多个组件组成,可自由拆卸组合,可以根据不同的项目选择不同的组件,有利于降低客户端成本。适合于大型、中型和小型项目应用。 |
MapObjects只有一个控件,功能弱,满足不了大型应用需求。 |
对象封装粒度 |
MapObjects对象封装粒度适中(计有45个对象),易于使用,同时具有灵活性; ArcObjects对象封装粒度过细,组织复杂,难于掌握;而且由于封装粒度过细,导致消耗系统资源(CPU和内存)大、初始化时间长、速度慢等问题。 |
SuperMap对象封装粒度适中(计有120多个对象),易于使用,同时具有灵活性 |
MapObjects对象封装粒度适中(计有56个对象),易于使用,同时具有灵活性。 |
二次开发文档 |
ArcObjects开发文档参数说明简略,没有示范代码 |
参数说明较详细,且常用方法有大量示范代码 |
参数说明较详细,有一定示范代码。 |
MapObjects组件对象封装粒度适中,使用灵活且易于掌握。但是功能很弱,其功能不超过SuperMap系列组件中的核心组件之功能。因此MapObjects的定位是一个非常轻量级的客户端,不适合于大型工程应用。此外,MapObjects 自从2.1版本推出之后已经长期没有更新版本,若采用其进行工程应用开发,后续版本升级存在问题。
ArcObjects是ESRI基于ArcInfo 8新的构架推出的组件对象平台,功能强大,对象丰富。但是ArcObjects对象粒度封装过细,导致对象数量骤增(多达1000多个),一方面导致系统初始化速度慢(每个COM对象的初始化都需要消耗一定的CPU和内存资源),另一方面导致掌握该组件群非常困难。
SuperMap组件对象封装粒度适中,使用灵活且易于掌握。SuperMap III大型组件式GIS软件开发平台功能强大,由一系列控件组成,既可以协同工作,也可以任意裁减,具有高度的伸缩性和灵活性。
MapX与MapObjects功能基本相当,稍强于MapObjects,但是也属于轻量级客户端,只有一个主要控件,不适合于大型应用项目。
ArcObjects的开发参考文档不仅是全英文说明,而且内容过于简洁,比如,函数参数除了说明参数类型以及是否可缺省之外,竟鲜有文字描述该参数的意义,令人难以理解。
SuperMap III全中文二次开发文档齐全,《SuperMap III 程序员参考手册》中对对象及其接口的说明较为详细,方法的参数除了有较详细的说明外,还有大量的示范代码指导开发者使用对象及其接口。除此之外,《SuperMap III开发教程》还提供了系统学习SuperMap III组件的教材。
以下是ArcObjects和SuperMap中一个典型方法(创建数据集)的文档说明对比(SuperMap手册中不仅提供了对参数的较详细说明,而且通过大量示范程序说明接口的使用方法):
软件手册 |
文档内容示范 |
||||||||||||||||||||
ArcObjects Developer Reference |
CreateFeatureDataset Method Creates a new feature dataset. Syntax Set variable = object.CreateFeatureDataset (Name, SpatialReference ) The CreateFeatureDataset method syntax has the following object qualifier and arguments:
Functional License Check If your application/site is not appropriately licensed, CreateFeatureDatasetcan return an Err.Number of FDO_E_NO_SCHEMA_LICENSE. Remarks The CreateFeatureDataset method can be used to create a new FeatureDataset given its name and spatial reference. Methods supported by the returned feature dataset allow creation of feature classes in the feature dataset.
|
||||||||||||||||||||
SuperMap III 程序员参考手册 |
CreateDataset 方法 语法 soDataset soDataSource.CreateDataset(strName As String,nType As seDatasetType,nOptions As seDatasetOption,[objBounds As soRect])
说明 用于创建数据集,用此方法创建的数据集属性表中只有 SuperMap 的系统字段,均以 SM 开头。 备注 该对象隶属于SuperMap.ocx控件。 例子 以下代码示范在工作空间的第一个数据源中创建一个名为"abcd"的数据集。要使用代码,须先在工作空间中打开至少一个数据源。其中 SuperWorkspace1 是 SuperWorkspace 控件实例。 参考 SuperMapLib.soDataSource.CreateDatasetFrom 方法 SuperMapLib.soDataSource.DeleteDataset 方法 SuperMapLib.seDatasetType SuperMapLib.seDatasetOption SuperMapLib.soDataSource.IsAvailableDatasetName 方法
|
进行应用系统二次开发不同于使用桌面软件,强有力的特别是深层次的技术支持往往可以避免因为一个小问题阻碍整个系统开发的进展,从而大幅度提高项目开发进度。因此技术支持在应用系统建设中是应该予以重点考虑的问题之一。
项目 |
ArcGIS |
SuperMap |
MapInfo |
开发培训 |
好 |
好 |
好 |
BBS在线技术支持 |
一般 |
非常好 |
一般 |
电话/E-mail技术支持 |
好 |
很好 |
好 |
技术支持人员对软件的熟练程度 |
好 |
很好 |
好 |
提供底层开发人员级的技术支持 |
无 |
有 |
无 |
技术支持快速响应 |
一般 |
好 |
一般 |
特殊情况下 |
无 |
有 |
无 |