地理数据库 (geodatabase) 系统表快速浏览

地理数据库的内部结构表现为一系列简单表文件,称为地理数据库系统表(以 GDB_ 作为前缀),可对地理数据库的内容进行追踪。它们实质上描述的是用于指定所有数据集定义、规则和关系的地理数据库方案。这些系统表包含并管理实现地理数据库属性、数据验证规则和行为所需的元数据信息。

从 ArcGIS 10 开始,这些表的内部结构进行了重构。在 ArcGIS 10 之前的版本中,与地理数据库方案相关的信息存储在超过 35 个地理数据库系统表内,而在 ArcGIS 10 中则被合并为四个主表:

GDB_Items 和 GDB_ItemRelationships 表示的中特定地理数据库中的用户自定义方案。表的内容随着地理数据库方案的更改而修改。GDB_ItemTypes 和 GDB_ItemRelationshipTypes 是静态表文件。下图说明了这四个表之间的关系:

四个主要的地理数据库系统表

提示提示:

请参阅白皮书地理数据库的 XML 模式以了解 XML 定义。

GDB_Items 表

地理数据库是地理项和非地理项的容器。这些项包括表格数据集(例如要素类和表)、数据集容器(例如要素数据集、拓扑和几何网络)、控制更高级地理数据库行为的数据集,以及属性域、工具箱和工作空间扩展等其他项。从 ArcGIS 10 开始,所有这些项都将存储在地理数据库的 GDB_Items 表内,其中每个项以单个行的形式存储。

项具有以下属性:

这七个属性是最有可能使用 SQL 进行访问的属性。

下面的属性用于存储项的定义中的信息(例如要素类的几何类型),这些属性在 XML 定义的外部是重复的,以允许更有效地浏览地理数据库。这些属性的示例包括 Dataset Subtype 属性和 Dataset Info 属性,其编码取决于项的类型。

GDB_ItemTypes 表

GDB_ItemTypes 表包含地理数据库中识别的项类型的预定义集合。项类型用于对 GDB_Items 表进行归一化(GDB_Items 表中项的类型将表示为 UUID),为将来增强地理数据库功能提供更好的支持,并定义类型层次。所有父类型都是抽象类型;因此父项实际上无法在 GDB_Items 表中找到。

GDB_ItemTypes 表的内容是静态的;不会在创建或删除项时对表进行修改。

项类型具有以下属性:

GDB_ItemRelationships 表

几乎所有地理数据库项都至少与一个其他地理数据库项具有关系。例如,独立表与地理数据库的根文件夹相关联、属性域与要素类或表(依赖属性域进行验证)相关联,而要素类与其参与的拓扑相关联。GDB_ItemRelationships 表用于追踪这些关系。

项关系具有以下属性:

可能使用 SQL 仅访问前五个属性。

提示提示:

项关系并不类似于关系类,理解这一点很重要。实际上,每个关系类都与两个对象类(关系类的源类和目标类)具有项关系,还与关系类的容器(地理数据库的根文件夹或要素数据集)具有附加的项关系。

GDB_ItemRelationshipTypes 表

项类型的静态集合用来对项进行分类,与此相同,项关系类型的静态集合用来对项关系进行分类。例如,DatasetInFeatureDataset(表示要素数据集中是否存在要素类、关系类或控制器数据集)和 DomainInDataset(表示数据集是否使用类级别或子类型级别验证的属性域)是两种类型的项关系。与项类型不同,项关系类型没有对父类型和子类型应用等级概念。

项关系类型具有以下属性:

提示提示:

Origin Item Type ID 和 Destination Item Type ID 通常是抽象项类型的标识符。例如,DomainInDataset 关系类型的 Origin Type ID 为“属性域”,即带有两个子类型的抽象项类型:“值域范围”和“编码值属性域”。

地理数据库系统表中的 XML

如地理数据库系统表的属性定义中所述,某些字段使用 XML 数据类型。在 IBM DB2、Microsoft SQL Server 和 PostgreSQL 的 ArcSDE 地理数据库内,这些列使用数据库管理系统的原生 XML,因此可通过 SQL 使用 XPath 表达式进行查询。

在 Oracle 和 Informix 中的地理数据库内,XML 列使用 ArcSDE XML,从而在一系列独立的表中以 BLOB 的形式存储信息。因此,不能直接通过 SQL 访问它们。

为了能够查看 Oracle 的地理数据库内的系统表中的 XML 列的内容,存在两个系统视图,这两个视图使用 CLOB 数据类型存储地理数据库系统表 XML 列中的内容。GDB_Items_vw 在各个 CLOB 列中显示 GDB_Items 表的 Definition、Documentation 和 ItemInfo 这三个列的内容。GDB_ItemRelationships_vw 在 CLOB 列中显示了 GDB_ItemRelationships 表的“属性”列的内容。可以文本的形式读取 CLOB 列的内容。

查询这些视图时,从 CLOB 列提取字符串,将其转换为 XML 类型,然后对其执行 XPath 查询。请注意,如果尝试为包含空字符串的列创建 XML 类型,该操作将失败,同时显示消息“XML 解析失败”,因为 Oracle 不支持该操作。

要查询 CLOB 列的内容,必须配置 Oracle 服务器接受 SQL 连接。有关详细信息,请参阅配置 Oracle 监听器以使用 SQL

相关主题

5/25/2014