GIS设计与开发(修订)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章GIS及其设计与开发概述
作为一门由测量学、地理学、计算机科学、信息科学等多学科交叉而成的综合性学科,地理信息系统(Geographic Information System, GIS)在过去的几十年中得到了飞速的发展,并建立了完整的理论与技术体系,已经成为当今信息产业中不可或缺的重要组成部分。

由于GIS在空间数据采集上具有灵活、快速、图形化显示等优点,而且可以对空间数据进行有效的处理和分析,所以GIS已经在城市规划、环境管理、灾害评估、土地利用等诸多领域中得到了广泛的应用。

GIS按照其内容可以分为工具型和应用型两类。

前者是一种通用的操作平台或软件包,具有空间数据输入、处理、存储、分析、输出等GIS的一般功能;后者是在工具型GIS基础上,根据用户需求和目的而开发的用以解决实际问题的地理信息系统。

GIS的设计与开发主要针对的应用型GIS,本章首先概述GIS的定义、组成要素和发展历史,然后阐述GIS软件工程一般的GIS设计与开发方法,最后介绍常用的以及在本文中所采用的开发环境和工具。

1.1 GIS及其发展历史
1.1.1 GIS的定义
随着现代社会的飞速发展,信息的作用显得越来越重要,而作为信息管理与决策工作中的一种主要手段,信息系统是以计算机技术为支撑,对信息进行采集、管理、加工、处理和输出,并根据应用目的而建立的技术与组织体系。

很多时候,人们在规划与决策中需要使用到地理信息,如我们所熟知的地图等,这就促使了“地理信息系统”这一信息系统类型的产生。

迄今为止,不同的学者和机构对地理信息系统给予了不同的定义:
1)国际标准化组织地理信息标准化技术委员会ISO/TC211(International Standards Organization/Technical Committee 211)认为地理信息系统是获取地理空间数据的合成、分析和解释等结果的计算机系统。

2)美国地质勘探局USGS(United States Geological Survey)认为地理信息系统是关于地理信息的收集、存储、处理和显示等操作的平台。

3)美国联邦数字地图协调委员会FICCDC(Federal Interagency Coordinating Committee on Digital Cartography)关于地理信息系统的定义为:“由计算机硬件、软件和不同方法组成的系统,用来支持空间数据的采集、管理、处理、分析、建模和显示,以便解决复杂的规划和管理问题。


4)加拿大著名学者Roger F. Tomlinson认为地理信息系统是支持对多种地理数据进行查询和分析的数字信息处理系统。

5)北京大学的邬伦等综合了国内外众多学者的观点,提出了较为综合性的定义:“以地理空间数据库为基础,采用地理模型分析方法,适时提供多种空间和动态的地理信息,为地
理研究和地理决策服务的计算机技术系统。


6)我国著名学者陈述彭等则认为地理信息系统是由计算机系统、地理数据和用户组成的,通过对地理数据的集成、存储、检索、操作和分析,生成并输出各种地理信息,从而为土地利用、资源管理、环境监测、交通运输、经济建设、城市规划以及政府部门行政管理提供新的知识,为工程设计和规划、管理决策服务。

然而,上述的不同定义却反映了一些地理信息系统所具有的基本特点:
1)地理信息系统表现为计算机技术系统,对计算机软硬件有着很高的要求;
2)地理信息系统的操作对象是地理空间数据,这也是地理信息系统所独具的丰富和复杂的数据类型;
3)由于处理的是地理空间数据,所以地理信息系统往往具有庞大的数据量;
4)地理信息系统以地理学、测绘学、地图制图学、计算机科学等诸多学科交叉而形成的综合学科为技术依托;
5)在功能上,地理信息系统的技术优势是其对空间数据的查询和分析能力。

1.1.2 GIS的组成要素
GIS的组成要素由内到外主要有数据即地理空间数据、计算机软件、计算机硬件和用户等四部分,如图1-1所示。

图1-1 GIS的组成要素
1)地理空间数据位于GIS的最内层,包括图形数据、属性数据和时间数据。

图形数据有矢量数据和栅格数据两类,前者以坐标点的方式记录以点、线、面等形式表现的抽象地理实体,并根据拓扑关系模型构建地理实体间的邻接、包含等拓扑关系;后者是用数字表示的像元阵列。

属性数据描述的是地理实体所具有的位置、分布、形状等属性信息,而针对矢量数据和栅格数据,属性数据分别表现为向量模型和专题模型。

此外,GIS需要将空间数据和属性数据连接起来,建立相同的内部标识,以便查询和分析。

2)计算机软件是按照一定的制度、法规和作业方针所建立的软件环境,包括系统软件(操作系统)、基础软件(空间数据管理软件)和GIS专业软件,而GIS专业软件用以实现数据输入、编辑、管理、分析和输出等GIS基本功能以及特定的应用目的。

3)计算机硬件是地理空间数据和计算机软件的载体,包括处理设备(计算机、工作站等)、存储设备(光盘、磁盘等)、数据输入设备(数字化仪、扫描仪等)和数据输出设备(绘图仪、打印机等)。

4)用户位于GIS的最外层,根据作业级别和知识水平可以分为很多层次,有一般的用户,也有高级的决策人员。

由这些组成要素构成的GIS系统的一般作业流程如图1-2所示:
图1-2 GIS的一般作业流程
按照不同的分类侧重,GIS可以分为很多种类型:
1)按研究内容可以分为综合GIS、专题GIS等。

2)按应用功能可以分为工具型、应用型等。

3)按数据类型可以分为矢量型、栅格型、混合型等。

4)按学科专业可以分为水质、森林、海洋等领域中应用的GIS系统。

5)按发布类型可以分为桌面型、网络型等。

1.1.3 GIS的发展历史
GIS萌芽于北美,加拿大著名测量学家Roger F. Tomlinson于1963年首先提出了地理信息系统的概念,并建立了世界上第一个地理信息系统CGIS,用于对土地等自然资源信息进行初步的分析和管理。

同时,美国哈佛大学计算机图形与空间分析实验室开发出世界上第一个通用的制图软件包SYMAP,开启了基于图形方式(矢量数据格式)的通用地理信息系统形式。

在随后的数十年间,GIS得到了飞速的发展,如图1-3所示:
图1-3 GIS的发展历史
1)起步阶段(20世纪60年代~ 70年代)
这一阶段的发展着重于空间数据的地学处理和管理,国家及国际的相关机构开始建立,如美国城市与区域地理信息系统联合会(URISA)、美国环境系统研究所(ESRI)、Integraph 公司、ERDAS公司等。

在此基础上,各种GIS软件相继问世,商业及学术活动日益频繁。

2)推广阶段(20世纪80年代)
这一阶段的发展着重于空间数据查询和决策支持分析,GIS系统的功能由简单走向综合,矢量和栅格技术实现了一体化。

同时,遥感、GPS等空间技术集成进来,数据采集和处理样式更加多样。

此外,GIS的使用部门从政府和专门学术机构迈进各企业和商用单位,应用领域也从传统的地理、资源和环境等扩展到众多领域。

这一阶段也是GIS发展中的重要时期,发生了很多标志性事件:1981年,ESRI ARC/INFO GIS发布;1985年,GPS成为可运行系统;1986年,MapInfo公司建立;1986年,SPOT卫星首次发射;1987年,名为地理信息系统的国际期刊出版;1988年,美国人口调查局(United States Census Bureau, USCB)第一次公开发布拓扑图形整合地理编码参照(Topological Integrated Geographic Encoding and Referencing, TIGER);1988年,GIS World 杂志首次发行;1989年,Integraph 公司发布MGE。

3)飞跃阶段(20世纪90年代至今)
这一阶段的发展着重于GIS的社会化与国际化,地理信息科学或地球信息科学这一包括基础理论和技术应用在内的完整学科开始形成。

在GIS开发中,组件式GIS成为主流的发展方向,网络及面向对象开发技术的应用使得GIS系统更加成熟,并具有很强的共享性和社会化程度。

此外,GIS的视觉开始变得越来越丰富和复杂,三维等表现形式使得GIS的应用更加直观。

1.2 GIS软件工程概述
1.2.1 GIS软件工程的基本原理
软件工程是运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文档,是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。

1)程序:为实现特定目标或解决特定问题而用某种计算机语言编写的指令(或语句)的集合;
2)文档:记录软件开发活动和阶段性成果、理解软件所必需的阐述性资料,包括需求分析文档、软件设计文档等,以促进对软件的开发、管理和维护。

软件工程的目标是在既定的成本、进度等条件下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品,如图1-4所示。

图1-4 软件工程的目标
1)可修改性(Modifiability):允许对软件系统进行修改但不增加原系统的复杂度;
2)有效性(Efficiency):最有效地利用计算机的时间和空间资源;
3)可靠性(Reliability):能防止因概念、设计和结构等方面的不完善而造成的软件失效;
4)可理解性(Understandability):结构清晰,直接反映目的和需求;
5)可维护性(Maintainability):支持后续修改,改正潜在错误和改进性能和属性;
6)可重用性(Reusability):软件系统的功能模块可以不加修改而在多种场合应用;
7)可适应性(Adaptability):在不同的运行环境下满足需求;
8)可移植性(Portability):从一个计算机环境迁移到另一个计算机环境;
9)可追踪性(Traceability):根据软件需求对软件设计和程序进行正向追踪,或根据软件设计和程序对软件需求进行逆向追踪,保证软件的完整和一致;
10)可互操作性(Interoperability):软件之间的相互通信和协同操作。

软件工程在过去几十年的探索实践中涌现了很多理论和方法,如传统的软件生存周期模型法和新兴的以面向对象技术为基础的面向对象建模技术法等。

软件生存周期模型(Software Life Cycle Model)要求将设计和开发由始至终划分为若干阶段并规定每个阶段的任务,再按一定的规则按部就班逐一完成。

瀑布模型是最典型的软件生存周期法,如图1-5所示,将软件生存周期划分为制定计划、需求分析、软件设计、程序编写、软件测试、运行维护等6个步骤,并由上至下、相互衔接地执行。

此外,软件生存周期模型还有演化模型、螺旋模型、喷泉模型等方法。

图1-5 软件生存周期之瀑布模型法
面向对象建模(Object oriented Modeling Technique)技术法是将面向对象技术(抽象、封装、继承、多态)引入到软件工程中,独立于程序设计语言之外对软件的设计和开发阶段进行概念化的方法。

然而,无论是基于哪一种理论,软件工程都可以分为分析(需求和可行性分析)、设计(总体设计、详细设计)、开发、测试和维护等主要阶段。

GIS软件与一般的软件相比,有着下列显著特点:
1)存储方式:GIS数据主要包括图形数据和属性数据,对这两种数据分别采用空间数据库和属性数据库进行存储。

2)数据组织和处理模式:使用地图处理的模式,分为地理实体、图层、地图和图库几个层次,以图层作为处理的基本单元。

3)系统功能:使用了地理空间数据模型以及空间数据库,需要完成复杂和专业的查询和分析工作。

4)系统组成:支持分布式环境,采用树形结构和主从工作模式,数据交换以图层为单位。

5)数据管理显示:二维空间数据为主,支持三维的处理和显示;
6)数据共享:不同格式的空间数据之间的转换。

然而,任何软件都会面临种种瓶颈,而GIS软件工程需要解决的主要问题有:
1)时间和经费:庞大的数据量和复杂的系统结构,加上有时开发经验的缺乏。

2)用户需求的满足:开发者和用户之间的知识掌握和交流程度。

3)可靠性和可维护性:软件工程的主要问题,错误修改和功能改进存在困难,软件质量差甚至无法使用。

4)数据工程量:数据采集和处理量巨大。

5)软件生产率:需求与生产的矛盾,开发人员和设备不足。

6)可重用性:存在重复劳动,浪费人力资源。

GIS软件工程的阶段:需求和可行性分析、总体设计、详细设计、程序开发、系统测试和维护。

1.2.2 需求和可行性分析
需求分析是一切种类的GIS应用系统设计的基础和出发点,通过对系统潜在用户书面或口头的交流与了解,归纳整理系统的设计要求。

需求分析的内容:
1)用户情况调查:调查范围包括用户的范围、数量和专业知识程度等,了解系统的服务对象、服务类型和服务规模,确定系统设计的依据以及开发方法和工具。

2)系统目的和任务确定:在用户情况调查基础上,根据用户需求确定系统的目的和任务。

3)数据源调查:调查和分析数据的来源、种类、质量和形式,规划数据库的结构、大小以及输入输出方式。

4)经费、人员和工作量评估:根据上述调查,估算投资规模,确定人员组成和分配工作量。

可行性研究是根据拟建系统的经济和技术条件,确定系统开发的必要性和可行性,包括理论上、技术上和经济上的可行性。

1)理论上的可行性:包括数据结构、数据模型、分析方法以及所运用的GIS技术的可行性。

2)技术上的可行性:包括开发技术、人力设备状况等的可行性。

3)经济上的可行性:包括经济可行性评估(投入-产出分析)和社会效益分析。

1.2.3 总体设计
系统的总体设计是在需求和可行性分析的基础上,从宏观的角度构建系统的总体结构。

系统总体设计的内容包括确定系统目标、设计系统结构、配置系统构成、确定系统运行管理和更新方式、经费开支预算、实施计划等内容。

1)确定系统目标:根据需求分析结果将系统建设的目的具体化,目标应细化且具有针对性,但切忌过于繁杂。

2)设计系统结构:确定系统的逻辑框架和数据库构成,其中数据库的设计包括数据类型、属性信息以及地理实体间关系(定性关系、定位关系、拓扑关系),还应考虑坐标系统、投影系统、比例尺等因素。

3)配置系统构成:包括硬件、软件和相关的组织机构和人员等。

总体设计时需要兼顾系统的完备性、标准性、先进性、兼容性、可靠性、适用性和运行效率等因素。

1.2.4 详细设计
系统的详细设计是对总体设计的细化和具体化,包括功能设计、数据库设计、模型与方法设计、用户界面设计等。

1)功能设计:数据经过采集和编辑存入数据库后在系统中的应用,包括一般的空间信息查询和分析以及为满足用户需求而设计的功能。

2)数据库设计:设计系统的空间数据库模型,管理空间数据和属性数据。

GIS软件多采用基于关系型数据库的数据库模型,常见的数据库结构模型有混合结构模型、扩展结构模型和统一结构模型。

混合结构模型是用两个数据库系统分别存储和检索空间数据和属性数据,两个系统之间使用内部标识进行联系,检索目标时必须同时检索两个系统。

扩展结构模型使用一个数据库系统存储空间数据和属性数据,即在标准的关系型数据库中增加一个空间数据管理层,将地理结构查询语言转换成标准的SQL语言,实现空间查询和索引。

统一结构模型是建立在开放型数据库基础上的,扩展出空间数据的表达功能。

3)应用模型和方法设计:解决专业问题的应用模型和主要的空间分析方法,是一个应用型GIS系统有无鲜明特色和应用价值的关键。

4)数据输入输出方法设计:设计数据库建立与更新的实现接口以及产品的输出方式。

5)用户界面设计:建立适合特点应用群体并具有专业特点的用户界面,兼顾简易性、艺术性、专业性、系统性、一致性等原则。

6)开发环境及方法设计:选择适合的开发平台和语言,并设计总体的开发思路和步骤。

1.2.5 GIS开发模式
在GIS设计中规划的系统功能,最终都需要通过软件开发技术来实现,所以GIS开发是建立地理信息系统的最重要环节。

GIS的开发模式主要有以下三种:
1)独立开发:不依赖任何GIS工具软件,从空间数据的采集、编辑到数据的处理、分析及结果输出,所有算法都由开发者独立设计并选择程序设计语言编程实现。

这种开发模式的优点是独立性强,成本低;但缺点是往往事倍功半甚至作无用功,功能也难以与商业化的GIS 软件相比。

2)单纯二次开发:使用GIS工具软件本身所提供的宏语言(例如ArcView的Avenue、MapInfo的MapBasic等)进行二次开发。

这种开发模式的优点是以GIS工具软件为平台,省
时省力;但所用的宏语言功能较弱。

3)集成二次开发:利用GIS工具软件实现GIS的基本功能,并以软件开发工具尤其是可视化开发工具(如Visual C++、Visual Basic、Delphi等)为开发平台,进行二者的集成开发,主要有OLE式和组件(COM)式两种,而后者为当前主流的开发方式。

这种开发模式既可以利用GIS工具软件对空间数据的管理和分析功能,又可以利用可视化开发平台具有的高效、方便等编程特点,具有很高的开发效率、很好的外观效果、很强的使用功能,并且易于移植、便于维护。

然而,集成二次开发的缺点是成本高,所以前期的需求和可行性分析就显得非常重要。

在软件开发领域,组件技术日趋成熟,已经成为主流的技术模式,大大提高了软件产业的生产效率。

简而言之,组件技术使用的是组件对象模型(Component Object Model, COM),是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种软件开发技术。

在COM构架下,人们可以开发出各种各样功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。

由此带来的好处是:可以替换系统中的组件,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便地将应用系统扩展到网络环境下使用;COM与语言、平台无关的特性使所有的程序员都可以充分发挥自己的才智与专长编写组件模块。

GIS开发技术的发展经历了模块式、集成式、模块化式、和核心式,进而发展到现在的组件式和网络式。

1)模块式阶段:早期的GIS由于受到技术的限制,GIS软件一般只是一些功能模块,并没有形成完整的系统,模块之间也无法协同工作。

2)集成式阶段:GIS功能模块经过集成而形成GIS软件包,如ESRI的ArcInfo等。

由于集成了GIS的各项功能,所以系统较为独立和完整,但结构复杂庞大,成本高且难以使用。

3)模块化式阶段:将GIS系统按照功能划分为一系列模块,运行于统一的环境或平台之上,如Integraph的MGE等。

模块化的GIS具有很强的针对性,便于使用,而且用户可以选择自己需要的模块,但和集成式GIS一样,都很难再与其他的系统或模型进行集成。

4)核心式阶段:为克服集成式和模块化式GIS的缺点,核心式GIS提供了一系列动态链接库(DLL),开发时使用高级编程语言,通过应用程序接口(API)访问GIS功能。

动态链接库的方式可以给用户提供更大的灵活性,但核心的GIS功能过于底层,开发难度很大。

与传统的开发技术不同,组件式GIS具有以下的优点:
1)高效、无缝的集成。

组件式GIS将功能划分为组件,组件本身不依赖任何开发语言,组件之间可以使用可视化编程语言,通过消息传递而互相调用、协同工作,所以集成更为高效而无缝。

2)不依赖开发语言,使用不同语言开发的组件可以轻易地相互协作。

3)开发难度小且成本低廉。

4)可扩展性强。

具有庞大的组件资源库,用户所开发的各式各样的组件可以广泛的共享和扩展。

5)大众化和社会化程度高。

1.3 ArcGIS与ArcObjects
ArcGIS是美国ESRI生产的GIS产品体系,目前已更新到ArcGIS 10.0,具有强大的对地理控件数据进行管理、编辑、显示和分析等功能。

ArcGIS体系庞大,主要有ArcMap、ArcCatalog、ArcToolBox、ArcScene、ArcGlobe等子系统,包含了客户端软件、服务器端软件和数据模型产品等。

ArcGIS采用完全COM化的结构,给开发者提供了强大的灵活性,可以根据需要定制适合自己的结构以及进行功能扩展和程序开发。

以ArcGIS 9.0为例,图1-6是ArcGIS 9.0的系统框架
图1-6 ArcGIS 9.0系统框架
1)桌面GIS:专业GIS应用的完整套件,根据功能由弱至强分为ArcView、ArcEditor和ArcInfo三个层次,包括ArcMap、ArcCatalog、ArcToolBox、ModelBuilder、ArcGlobe等子系统。

2)服务器GIS:包括ArcSDE、ArcIMS和ArcGIS Server三种软件,提供多种类型的集中式GIS计算,网络发布和处理地理信息。

3)移动GIS:提供移动的GIS解决方案,包括ArcPad以及为平板电脑使用的ArcGIS Desktop和Engine。

4)ArcGIS Engine:完整的嵌入式GIS组件库,用于构建定制应用。

早期的ArcGIS提供给用户一个独立的地图应用组件MapObjects(MO),能够在标准的Windows编程环境下,与其他图形、多媒体和数据库开发技术组成完全独立的综合性应用软件。

MO由一个称为MapControl的控件和5类共45个对象(包括数据访问对象、地图显示对象、几何图形对象、地址匹配对象和实用对象)组成,具有支持较广泛的数据格式、外部数据库访问、图形数据及操作、投影变换、空间分析等功能,简捷灵活,开发成本低廉,在早期的GIS二次开发中担当了重要的角色。

然而,MO只含有一个单独的组件,所封装的对象较少,所以功能较弱,已经不再包含在ArcGIS的新版本中,渐渐推出了历史的舞台。

与之相比,ArcObjects(AO)是通用的二次开发组件集,是ArcGIS的核心,也是不同产品的基础部件和标准接口,是当前最底层和最流行的开发方式。

AO总共含有45个组件库,约6144个对象,其中主要的组件库如下:
1)System库:位于最底层的组件库,提供最基本的供其它组件库使用的组件,如数组、集合、Stream对象等等。

2)SystemUI库:被ArcGIS用户界面组件使用的对象,如ICommand。

3)Geometry库:几何形体对象和空间参考对象。

4)Display库:显示图形所需要的组件对象,如Display、Color、ColorRamp等。

5)DisplayUI库:具有可视化界面的辅助图形显示对象。

6)Controls库:可视化组件对象,如MapControl。

7)ArcMapUI库:为ArcMap程序提供且不能脱离ArcMap结构使用的可视化用户界面对象。

8)Framework库:ArcGIS内在框架对象。

9)Carto库:数据显示服务对象,如地图网格对象Map Grids和着色对象Renderers等。

10)CartoUI库:具有可视化界面的数据显示服务对象,如IdentifyDialog。

11)GeoDatabase库:地理数据库模型对象,如Workspace、Dataset等。

12)Output库:输出对象,包括Printer和Export两类,前者用于打印输出,后者用于转换输出。

AO在结构上是基于COM的,组件之间通过接口进行联系,所以AO的编程是基于接口来实现的。

要学习AO编程,阅读AO的OMD(Object Model Diagram,对象模型图)是必须要掌握的,关于各主要对象及其关系的理解,尤其是模型图中符号的涵义,本文将通过后面各个章节进行初探。

相关文档
最新文档