ArcGIS Engine开发之旅05---空间数据库
1 Geodatabase概念
Geodatabase是ArcInfo8引入的一种全新的面向对象的空间数据模型,是建立在DBMS之上的统一的、智能的空间数据模型。“统一”是指,Geodatabase之前的多个空间数据模型都不能在一个统一的模型框架下对地理空间要素信息进行统一的描述,而Geodatabase做到了这一点;“智能化”是指,在Geodatabase模型中,对空间要素的描述和表达较之前的空间数据模型更接近我们的现实世界,更能清晰、准确地反映现实空间对象的信息。
GeoDatabase的设计主要是针对标准关系数据库技术的扩展,它扩展了传统的点、线和面特征,为空间信息定义了一个统一的模型。在该模型的基础上,使用者可以定义和操作不同应用的具体模型,例如交通规划模型、土地管理模型、电力线路模型等。GeoDatabase为创建和操作不同用户的数据模型提供了一个统一的、强大的平台。
由于Geodatabase是一种面向对象的数据模型,在此模型中,空间中的实体可以表示为具有性质、行为和关系的对象。Geodatabase描述地理对象主要通过以下以下四种形式:
(1)用矢量数据描述不连续的对象;
(2)用栅格数据描述连续对象;
(3)用TINs描述地理表面;
(4)用Location或者Address描述位址。
Geodatabase还支持表达具有不同类型特征的对象,包括简单的物体、地理要素(具有空间信息的对象)、网络要素(与其他要素有几何关系的对象)、拓扑相关要素、注记要素以及其他更专业的特征类型。该模型还允许定义对象之间的关系和规则,从而保持地物对象间相关性和拓扑性的完整。
2 Geodatabase体系结构
Geodatabase以层次结构的数据对象来组织地理数据。这些数据对象存储在要素类(Feature Classes)、对象类(0bject classes)和数据集(Feature datasets)中。Object Class可以理解为是一个在Geodatabase中储存非空间数据的表。而Feature class是具有相同几何类型和属性结构的要素(Feature)的集合。
要素数据集(Feature datasets)是共用同一空间参考要素类的集合。要素类(Feature Class)储存可以在要素数据集(Feature datasets)内部组织简单要素,也可以独立于要素数据集(Feature datasets)。独立于要素数据集(Feature datasets)的简单的要素类(Feature Class)称为独立要素类(Feature class)。存储拓扑要素( Feature )的要素类必须在要素数据集(Feature dataset)内,以确保一个共同的空间参考。
Geodatabase的基本体系结构包括要素数据集、栅格数据集、TIN数据集、独立的对象类、独立的要素类、独立的关系类和属性域。其中,要素数据集又由对象类、要素类、关系类、几何网络构成。
3 Geodatabase的三种存储方案
Geodatabase提供了不同层次的空间数据存储方案,可以分成三种——PersonalGeodatabase(个人空间数据库)、File Geodatabase(基于文件格式的数据库)和ArcSDE Geodatabase(企业级空间数据库)。
1.Personal Geodatabase
Personal Geodatabase主要适用于在单用户下工作的CIS系统,适用于小型项目的地理信息系统。ArcGIS对个人Geodatabase同样具有全功能支持。Personal Geodatabase实际上就是一个Microsoft Access数据库,当用户安装ArcGIS的时候,系统就自动安装了Microsoft Jet,用户无需再另外安装Microsoft Access数据库。也就是说,PersonalGeodatabase对于ArcGIS用户是免费的,它使用Microsoft Jet Engine的数据文件,将空间数据存放在Access数据库中。Personal Geodatabase更像基于文件的工作空间,在使用Personal Geodatabase时需要注意的是,Personal Geodatabase的最大容量是2G,并且只支持windows平台。
2.File Geodatabase
在ArcGIS 9.2版本中,引入了一种全新的空间数据存储方案——File Geodatabase,它也是适用于单用户环境的,同样能够支持完整的Geodatabase数据模型,同样可以让用户在没有DBMS的情况下使用大数据集。File Geodatabase数据以文件形式存储在Windows、Solaris以及Linux系统的文件夹内。容量限制方面,File Geodatabase中的每个表都能存储1TB的数据,这就是说对任何应用目的,用户都能够支持非常大的数据集。Fiel Geodatabase还具有压缩矢量数据的选项,通过这个选项,用户可以在保证性能的同时减少硬盘占用,压缩比率可以达到2:1到25:1。从目前测试的情况来看,File Geodatabsse性能比Personal Geodatabase要高20%到10倍。如果采用压缩方式,它的性能与Shape文件相仿,并且要强于Personal Geodatabase。存储同样的数据时,File Geodatabase比Personal Geodatabase减少了50%到80%的磁盘占用空间。
ArcGIS提供了一些工具来从DBMS形式的Geodatabase中提取一个File Geodatabase以及将一个File Geodatabase导人DBMS中。用户可以通过从其他任何Geodatabase或者所支持的文件结构内,例如Shape文件,加载数据来轻松地创建File Geodatabaee。File Geodatabase很容易被ArcGIS Desktop、ArcGIS Engine以及ArcGIS Server访问和使用。
另外,File Geodatabage还支持存储海量栅格数据集,与ArcSDE raster schema兼容。从目前的趋势来看,File Geodatabase将要逐步取代Personal Geodatabase。
3.ArcSDE Geodatabase
ArcSDE Geodatabase主要用于在多用户网络环境下工作的GIS系统。通过TCP/IP协议,安装在管理企业数据的关系数据库的服务器上的ArcSDE为运行在客户端的CIS应用程序提供ArcSDE Geodatabase。通过ArcSDE,用户可以将多种数据产品按照Geodatabase模型存储于商业数据库系统中,并获得高效的管理和检索服务。
ArcSDE Geodatabase的一个最大特点就是使用ArcSDE在网络环境下对空间数据进行多用户并行操作。另外 ArcSDE Geodatabaee提供的版本控制机制也是Personal Geodatabaee和File Geodatabase不具有的。通过ArcSDE,用户可以在0racle、Microsoft SQL Server、InfoMix和DB2 中存取SDE图层。
当用户从SDE图层中创建Geodatabase时,客户端需要向这些图层加入元数据表。这些元数据包括子类、域、关联类、要素集等,这些元数据使得ArcSDE管理的空间数据库真正体现了Geodatabase模型。
3 Geodatabase的优势
地理空间数据模型从最初的CAD数据模型到Coverage数据模型,再发展为现今普通使用的Geodatabase 数据模型,经历了几十年的时间。Geodatabase为GIS应用程序提供常用的数据接口和管理框架,提供了处理丰富数据类型、应用复杂规则和关系、存取大量地理数据等功能。
Geodatabase的优势主要在该模型对关系数据库的扩展,具体体现以下几个方面:
(1) Geodatabase存储要素的几何特性,便于开发GIS应用程序中的空间操作功能,比如查找与要素邻近的对象或者具有特定长度的对象,Geodatabase中还提供定义和管理数据的地理坐标系统的框架。
(2) Geodatabase中的几何网络(Geometric Network)可以模拟道路运输实业或者其他公用设施网络,进行网络拓扑运算。
(3) Geodatabase中可以定义对象、要素之间的关联(Relationships)。使用拓扑关系、空间表达和一般关联,用户不仅可以定义要素的特征,还可以定义要素与其他要素的关联规则。当要素被移动、修改或删除的时候,用户预先定义好的关联要素也会作出相应的变化。
(4) Geodatabase通过定义域(Domain)和验证规则(Validation rule)来增强属性的完整性。
(5) Geodatabase将要素的一些“自然”行为绑定到存储要素的表中。
(6) Geodatabase可以有多个版本(Version),同一时刻允许不同用户对同一数据进行编辑,并可自动协调出现的冲突。