几种常用的地理信息软件比较
地理信息系统是信息科学与信息技术发展的一个重要组成部分,是信息高速公路上的节点和重要基础设施。作为在信息社会中的一种集地理空间特征和各种统计信息于一体的特殊信息系统,地理信息系统已成为政府部门进行科学管理和快速决策时不可或缺的工具。地理信息系统的提出源于二十世纪五十年代,经过四十余年的发展,随着计算机科学、地理学、制图学、遥感与摄影测量学、图形图像技术以及数据库技术的不断发展,地理信息系统已经成为了一种功能强大、性能完善的计算机系统,广泛应用于规划、土地、测绘、建设、环保、军事等诸多部门。
自MapInfo与Arc/Info率先进入中国地理信息系统市场以来,国外其它各种GIS软件(如MGE、MapCAD、Genemap、MicroStation GeoGraphics、Maptitude等)也蜂拥而入,竞相强占中国GIS市场。而此时,国产GIS软件在此危机时刻,在国家和地方有关部门的支持下,也加快了开发的步伐,并相继推出了几种GIS软件,如武汉测绘科技大学的GeoStar、中国地质大学的MapGIS、北京大学的CityStar以及方正集团公司开发的“方正智绘”软件等等。无论是国产GIS软件,还是国外GIS软件,都必须具有GIS的基本功能,如数据接收与处理(包括数据校核、坐标变换、投影变换等),数据存储,数据库管理,空间查询与检索,空间分析,数据输出等等。下面我将对MapInfo,Arc/Info,Maptitude三种GIS软件中本人较熟悉的部分作简要的分析。
1. MapInfo 软件
在MapInfo的系列产品中,用得最多的是MapInfo Professional 和 MapBasic。
MapInfo Professional 是基于普通PC微机的桌面地图信息软件,其主要特点是:
(1) 快速数据查询,高速屏幕刷新,使得用户界面具有良好的图形显示效果;
(2) 集成能力强,能够根据数据的地理属性分析信息的应用开发工具,是功能强大的地图数据组织和显示软件包;
(3) 数据可视化和数据分析能力较强,可以直接访问多种数据库的数据,如Oracle, Microsoft Access, Informix, SQL Server, Dbase等;
(4) 专题地图制作方便,数据地图化方便;
(5) 同时支持16/32位的应用开发,适用于多种计算机操作系统,如Windows 3.1,Windows 95, Windows NT,OS/2等;
(6) 完整的Client/Server体系结构;
(7) 完善的图形无缝连接技术;
(8) 支持OLE 2.0标准,使得其它开发语言如:Visual Basic, Visual C++, PB, Dephi等能运用Integrated Mapping技术将MapInfo作为OLE对象进行开发。
MapBasic是基于MapInfo平台的用户开发语言,包括300多条语句和功能。通过MapBasic的二次开发,能够扩展MapInfo的功能,实现程序的自动操作,而且可以方便地将MapInfo与其它软件进行集成,其主要特点是:
(1) 由于MapBasic是一种类Basic程序语言,所以使用简单;
(2) 便于MapInfo界面的改造,功能的扩展与应用的可视化;
(3) 支持OLE Automation和DDE(动态数据交换)技术,易于与其它应用软件相连接;
(4) 包含嵌入的SQL语句,数据查询、检索更加方便。
MapInfo和Mapbasic提供了放大、缩小、漫游、选择、空间实体组合/分割等基本的图形操作功能;同时MapBasic 可以直接读取点、线、面等空间实体和属性数据库,并提供条件分析、统计分析、缓冲区分析等分析功能。
利用MapInfo进行开发主要有三种模式:
(1) 以MapInfo作为独立开发平台,利用MapBasic所进行的二次开发模式;
MapInfo Professional 提供了基本的GIS功能,如数据接收功能、建库功能、图形 功能、数据查询与检索功能、专题图制作功能、简单分析功能、数据输出功能等。而MapBasic是建立在MapInfo平台上的用户开发语言,是针对MapInfo的二次开发,完善MapInfo的功能和灵活地进行各种所需功能的开发。
(2) 将MapInfo作为OLE对象的开发模式;
尽管MapInfo Professional和MapBasic具有强大的功能,可以实现一般的GIS功能,但是随着用户需求的不断变化,其功能毕竟还是有限的。对于任何GIS软件平台而言,为了能够维持其生命力,就必须要求该平台具有可扩展能力,即支持OLE标准。MapInfo有效地解决了这个问题,允许其它开发语言将它作为OLE对象来进行开发。 #p#page_title#e#
(3) 利用基于ActiveX的MapX控件所进行的开发模式。
GIS软件的组件化是GIS软件发展的方向之一,即:利用ActiveX控件方式进行GIS系统的二次开发。MapX是MapInfo基于ActiveX技术的可编程控件,它集成了MapInfo几乎所有的功能,如地图显示,图形放大、缩小、选择、漫游等,制作专题地图,图层控制,ODBC功能,地理查询等等。
在GIS系统中,数据的工作量占整个系统开发的70-80%,所有GIS功能均须基于地理数据,由此可见合理的地理数据模型是GIS系统生存的基础。MapInfo Professional作为桌面地图系统的典范,其空间数据结构是不具备拓扑关系的,因此相对部门级或企业级地理信息系统而言,其空间分析能力较弱。但是它对硬件平台,软件环境,软件工具,要求较低,同时使用简单,价格也较低。MapInfo是通过建立空间实体模型和空间索引来定义其空间数据模型的,利用Table来存储空间数据和属性数据。空间实体主要由点、线、面三种基本类型组成,采用面向对象的方法,每种实体对象均维护其本身的所有信息。空间索引是利用R-Tree技术来实现的。采用这种
=FD据模型可以简化数据管理的复杂性,解决部分的空间查询与分析功能,但仍有些空间分析功能如路径分析软件本身无法实现,须借助于外部开发语言(如Visual Basic, Visual C++,Dephi等)来实现。
MapInfo的数据保存在数据库中,主要是两种数据库:内置数据库和通过ODBC连接的外部数据库。它的数据库通过Table的形式进行数据的组织和管理,每一个Table可存放若干空间实体及对于每一个空间实体的若干属性说明。当然也可只存放属性数据。Table严格按照关系模式规范化的要求设计,空间实体在Table表中的存储不允许重复,以保证空间实体记录的唯一性。有Table表结构,可建立空间实体与属性数据之间的连接关系,从而利用标准SQL来进行查询和检索。
2. Arc/Info 软件
Arc/Info是目前功能最为完善、性能最为稳定的专业地理信息系统软件平台之一,也是最庞大的GIS软件。Arc/Info一般用于部门级和企业级的大型地理信息系统的开发,而对于桌面级的GIS则主要用ArcView来进行开发。这两种软件相互兼容,可以相互调用数据。下面将简要列出本人所了解的Arc/Info的主要功能:
(1) 支持多种系统平台,如Windows NT, UNIX, SUN Solaris, SGI IRIX, IBM AIX等.可方便地调用各种系统平台上的数据和应用;
(2) 将最广泛的数据源集成到统一的环境下,如矢量(x, y坐标)地图数据、栅格图象数据、CAD数据、声像数据以及大量的DBMS表格数据;
(3) 地理数据和相关数据的自动化采集、管理、显示功能;
(4) 强大的地理空间分析功能。Arc/Info提供了各种分析工具,如:拓扑地理叠置分析、buffer分析、空间与逻辑查询、临近性分析等等;
(5) 建立了多种数据模型,如水文建模、网络建模、栅格建模等;
(6) 专业性和功能性非常强的TIN模块,可生成、显示、分析地表模型,同时进行地图晕暄、模拟飞行动画、通视分析、剖面提取及工程土方量计算等等;
(7) 提供了栅格分析功能,可进行栅格矢量一体化查询与叠加显示;
(8) 开发了数据库管理模块,可管理大量的数据,并能进行工作数据的维护和动态更新;
(9) 高效的图形显示功能。Arc/Info开发了一个图形加速模块,可提高图形显示的速度。
Arc/Info提供了AML(Arc Macro Language)语言开发环境,利用该开发环境可非常方便地编制用户的菜单和功能。AML是一种解释性的开发语言,与Maptitude的Caliper Script类似,具有以下特点:
(1) 语法结构简单,容易掌握,易于开发;
(2) 可采用模块化的开发方法进行系统应用软件的开发;
(3) 支持多种风格的菜单、对话框、工具条的设计与开发;
(4) 提供多线程的调度和输入管理。
同时Arc/Info为了克服AML语言难于处理复杂的线程控制以及开发效率较低,对外部应用的可控制性差等缺陷,又提供了ODE(Open Development Environment)功能。由于ODE是通过编译来执行的,因此可弥补AML语言的不足。 #p#page_title#e#
Arc/Info的开发模式主要有两种:
(1) 利用Arc/Info、AML和ODE来进行开发。
(2) 利用Arc/Info的Active X控件在通常的编程语言开发环境中进行开发。
Arc/Info的基本元素是“ARC”,可由任意多个点构成,在其两端有结点,并伴有共享该“ARC”的两个区域的代码。同时,还为每个多边形建立了环绕其边界的“ARC”目录表。在这种数据结构中,实际存储的只是结点的坐标,而“ARC”和多边形是通过逻辑关系建立的。这种数据结构不仅保存了描述多边形形状的几何信息,而且还建立了多边形元素(Polygon, Arc, Node)之间的拓扑关系。同时Arc/Info采用Coverage特征来描述地理数据。Arc/Info将各种特征属性保存在相应的Table中。Arc/Info建立Coverage拓扑时,定义拓扑和几何特征,并且存储在特征属性表(FAT)文件中。因此Arc/Info采用的是一种带有拓扑关系的数据模型。在这一点上,Maptitude有点与之类似。
ArcView与MapInfo比较类似,主要体现在以下方面:
(1) 均属于桌面地理信息系统范畴,开发方便、简洁;
(2) 可支持多种空间数据格式,并且两者空间数据可以互换;
(3) 空间数据不具有拓扑结构,需建立索引文件来完成各种空间查询和分析;
(4) 其它的一些基本的GIS功能两种软件都具有,这里就不再详叙。
当然作为两种由不同产家开发的软件也具有各自的特点,如在数据管理模式上,ArcView利用Shape格式来保存无拓扑关系的矢量数据,而用Table来管理属性数据;MapInfo则利用Table来管理所有的数据;两者开发工具不尽相同,ArcView的Avenue是一种面向对象的程序设计语言,引入了类的概念,虽功能强大,但开发较难,而MapInfo的MapBasic是一种类Basic程序设计语言,容易掌握,且功能较完善,但是两种开发工具均可进行编译。由于ArcView的许多功能来源于Arc/Info,因此在这里就不再多述。
3
Maptitude软件
Maptitude的系列软件中用于各种专题地理信息系统开发的主要工具是Maptitude软件平台和GISDK开发工具。Maptitude目前已升级到了4.1版本,但由于种种原因,我只试用过3.0版本。该软件的主要功能有:
(1) 数据接收功能强,支持多种GIS数据源,如MapInfo, Arc/Info, MGE, CAD等等;
(2) 数据查询快速,方便,能较好地进行数据的动态更新;
(3) 支持ODBC技术,可与多种数据库进行通讯,如:Oracle, Informix, MS Access, SQL Server等等;
(4) 可方便制作各种专题地图,并通过各种方式输出;
(5) 支持Windows 3.1, Windows 95 & 98 系统,但是3.0版本不支持Windows NT4.0。对于UNIX,OS等操作系统是否支持,目前没有试验;
(6) 具有数据无缝连接功能;
(7) 支持多媒体。除了支持BMP图片以及制做可翻转的幻灯片外,尚支持播放音乐和电影的多媒体功能。
(8) 具有快捷而强大的空间分析如buffer分析,最短路径分析等功能;
(9) 可利用工具自动建立拓扑关系;
(10) 支持OLE和DDE技术,可在通用的开发语言中将Maptitude作为OLE来调用,如:Visual Basic, Visual C++, Dephi等。
(11) 数据压缩是Caliper公司引以为荣的专利技术。在Maptitude中地图数据以压缩形式存储,却可在不解压的环境下操作。所占空间小,速度大大提高。
Maptitude提供的开发工具是GISDK。GISDK是一种解释性的开发语言,可利用任何文本编辑器来书写代码,Maptitude本身不提供编辑窗口。GISDK由两部分组成:Caliper Script程序开发语言和用于应用程序编译和测试的交互开发工具。Caliper Script 程序语言是开发基于Maptitude应用程序的关键。该语言功能强大却使用简单,既使具有很少程序经验的人都能很快掌握。由于其一组由命令组成的程序流,隐含变量说明,灵活的数组处理,结构化的函数调用等等而使得类似BASIC语言的 GISDK别有特色。Caliper Script可以建立和管理诸如表、地图、地图要素、窗口、选择集以及工具、对话框、工具条等用户界面。此外, Caliper Script还包含多达 600个函数的函数库。高级函数调用充分调用Maptitude的功能 ,函数库包括 DDE信息处理的特色函数库,实时应用开发,ODBC目标管理等丰富内容。 #p#page_title#e#
GISDK的特点有:
(1) 提供了非常完善的函数,使得开发较方便;
(2) 可利用任何文本编辑器来书写程序代码;
(3) 通过嵌入方式可扩充Maptitude的功能;
(4) 可方便地建立诸如菜单、对话框、工具条等用户需要的界面。
Maptitude的地理数据保存在自带的数据库(DBF或DAN)或外部数据库中,外部数据库通过ODBC调用。其空间数据由点、线、面组成,采用传统的GIS拓扑结构建立方法,数据以拓扑方式进行存储。由于其数据本身就具有拓扑关系,因此有利于进行各种空间分析,如多边形叠加分析,最短路径分析,buffer分析等等。
Maptitude目前的开发模式主要有两种:
(1) 利用Maptitude与GISDK来进行开发。这种方式有利于系统的稳定性,但是无法进行系统功能的扩展;
(2) 将Maptitude作为OLE的开发模式
虽然Maptitude与GISDK具有强大的功能,特别是GISDK的函数库包含有多余600个功能函数,但是相对于用户对系统的要求来说,该功能毕竟还是有限的。因此将Maptitude作为OLE,利用常用的开发语言如Visual Basic, Visual C++, Delphi等来进行系统开发。
目前,Maptitude还没有推出它的Active X控件。但是作为GIS软件平台发展的一种趋势,Maptitude推出Active X控件也是迟早的事情。