ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

地理数据库系统表

  • GDB_Items 表
  • GDB_ItemTypes 表
  • GDB_ItemRelationships 表
  • GDB_ItemRelationshipTypes 表
  • 地理数据库系统表中的 XML
  • GDB_ 表的关联方法
  • 常用 GDB_ 表查询

企业级地理数据库由数据库管理系统中存储的系统表、程序和函数组成。这些前缀为 GDB_ 的系统表描述的是用于指定数据集定义、规则和关系的地理数据库方案。这些系统表包含并管理实现地理数据库属性、数据验证规则和行为所需的元数据信息。这些表如下:

  • GDB_Items:包含地理数据库中的所有项(例如要素类、拓扑和属性域)的列表
  • GDB_ItemTypes:包含识别的项目类型(例如 Table)的预定义列表
  • GDB_ItemRelationships:包含各个项之间的方案关联,例如要素数据集中包含哪些要素类
  • GDB_ItemRelationshipTypes:包含识别的关系类型(例如 DatasetInFeatureDataset)的预定义列表

GDB_Items 和 GDB_ItemRelationships 表表示特定地理数据库中的用户自定义方案。表的内容随着地理数据库方案的更改而修改。创建地理数据库时会填充 GDB_ItemTypes 和 GDB_ItemRelationshipTypes 表,并且在软件版本中值是静态的。下图说明了这四个表之间的关系:

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

提示:

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

您可能会在地理数据库中看到另外两个 GDB_ 表 - GDB_Conflicts 和 GDB_Locks。它们用于追踪分支版本化数据。

GDB_Items 表

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

使用 SQL 时最有可能会访问项的以下七个属性:

  • UUID:项目的唯一标识符
  • Name:项目的名称

    请注意,项的名称可以不是唯一的;例如,关系类和要素类可以具有相同的名称。但是,不建议为不同的项指定相同的名称,因为应充分描述项名称以区分项所包含的内容。

  • Type:UUID,用于表示记录中项目的类型,这与唯一标识符相对应。
  • Definition:XML 文档,用于定义项目的属性;这些属性和 XML 方案因项目类型而异。例如,对象类的定义包含子类型等信息,而编码值属性域的定义包含“编码和值”对,关系类的定义包含关系规则等。
  • Documentation:XML 文档,用于存储项目的元数据
  • Properties:整数值,可与位掩码一起使用以检索项目的多个布尔属性。目前,这仅用于表示项在 ArcGIS Desktop 中是否可见。
  • Shape:如果适用(数据类型取决于基础数据库管理系统),以面的形式表示的数据集范围。

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

  • Physical Name:项目的全限定名称
  • DatasetSubtype1:对于要素类和栅格目录,DatasetSubtype1 存储表的要素类型。对于拓扑,此属性用于存储拓扑 ID。
  • DatasetSubtype2:对于要素类和栅格目录,DatasetSubtype2 存储几何类型。对于关系类,此属性存储用于指示关系类是否属性化的值。
  • DatasetInfo1:存储要素类各项目的 shape 字段名称
  • DatasetInfo2:存储参与拓扑的要素类的信息
  • Path:项目的唯一相对路径
  • URL:项目的关联 URL;用于目录服务
  • Defaults:项目元数据;不能直接由地理数据库使用,但可由其他客户端使用
  • ItemInfo:项目的存储信息(如符号系统),与基础数据集相互独立

GDB_ItemTypes 表

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

GDB_ItemTypes 表的内容无法修改,因为项已被创建或已被删除。

项类型具有以下属性:

  • UUID:项目类型的唯一标识符以及 GDB_Item 表的类型列的外键
  • ParentTypeID:项目类型的父类型。

    如果是抽象项类型(即没有父项),则为空 UUID。

  • Name:项目类型(例如“要素类”或“范围属性域”)的名称
  • ObjectID:GDB_ItemTypes 表的唯一标识符

GDB_ItemRelationships 表

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

项关系具有以下属性:

  • UUID:项目关系的唯一标识符
  • Type:UUID,用于表示关系的类型;与项目关系类型的唯一标识符相对应
  • OriginID:关系的源项目的唯一标识符
  • DestinationID:关系的目标项目的唯一标识符
  • Attributes:XML 文档包含有关项目关系的详细信息

    很多关系类型不包含属性;这些类型只用在控制器数据集及其控制的数据集之间的某些关系中。

  • ObjectID:唯一标识符
  • Properties:整数值,可与位掩码一起使用以检索项目的多个布尔属性。目前,这仅用于表示参与关系的项目是否在 ArcGIS 客户端中可见

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

提示:

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

GDB_ItemRelationshipTypes 表

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

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

  • UUID:项目关系类型的唯一标识符以及项目关系表类型列的主键
  • Name:项目关系类型的名称,例如 DatasetInFolder
  • Forward Label:对源项目环境中关系的描述
  • Backward Label:对目标项目环境中关系的描述
  • Origin Item Type ID:项目类型的 UUID,可充当此类型项目关系中的目标项目Is Containment:
  • Destination Item Type ID:项目类型的 UUID,可充当此类型项目关系中的目标项目
  • Is Containment:指示目标项目是否可以存在(即使删除了源项目)。
提示:

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

地理数据库系统表中的 XML

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

在 Oracle 和 IBM 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 表的 Attributes 列的内容。CLOB 可以读取为文本。

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

要查询 CLOB 的内容,必须配置 Oracle 服务器接受 SQL 连接。有关详细信息,请参阅在 Oracle 中配置 extproc 以访问 ST_Geometry。

GDB_ 表的关联方法

要了解如何将追踪地理数据库功能的系统表结合使用,最好的方法是使用 SQL 对其进行检查。选择 GDB_Items 表中的所有行和列以查看其内容。

Type列中的值存储为 UUID,与 GDB_ItemTypes 表中的 UUID 列相关联。因此,您可以使用类似如下的 SQL 查询返回各个项的项类型:

SELECT gdb_items.UUID, gdb_itemtypes.name AS "Type", gdb_items.name
   FROM gdb_items INNER JOIN gdb_itemtypes
   ON gdb_items.type = gdb_itemtypes.UUID;

将返回各项的类型值,如该表中所示:

UUID类型名称

DF7A67CF-D8B2-461C-A4BF-74AF52AF2BD3

文件夹

5E53E5C2-874E-4538-A6AB-1F0BBCABA885

工作空间

工作空间

2AC65400-919D-4241-A1A5-83C219A8ACD0

编码值属性域

资料

897D8FA2-BE31-4A5D-94A5-B93A32BF2146

编码值属性域

DitDiam

B75E3FDF-F864-4FA1-A31A-A56716BBDEA7

范围属性域

RotAngle

同样,GDB_ItemRelationships 表也包含在其他表作为关键值的 UUID。每种关系均包含以上 GDB_Items 表中提到的两种 UUID 值:一种针对关系的目标项,一种针对关系的源项。要将这些字符解析为便于阅读的字符串,必须将 GDB_ItemRelationships表与 GDB_Items 表连接两次。要查看关系类型,请与 GDB_ItemRelationshipTypes 表连接,如以下 SQL 示例所示:

--SQL Server and PostgreSQL query SELECT reltypes.name AS type,   origin_items.name AS "Origin Name", dest_items.name AS "Dest Name"
FROM gdb_items AS origin_items,   gdb_itemrelationships AS relationships,   gdb_items AS dest_items,   gdb_itemrelationshiptypes AS reltypes WHERE   origin_items.UUID = relationships.originid AND   dest_items.UUID = relationships.destid AND   relationships.type = reltypes.UUID;
--Oracle query SELECT reltypes.name AS type,   origin_items.name AS "Origin Name", dest_items.name AS "Dest Name"
FROM sde.gdb_items origin_items,   sde.gdb_itemrelationships relationships,   sde.gdb_items dest_items,   sde.gdb_itemrelationshiptypes reltypes WHERE   origin_items.UUID = relationships.originid AND   dest_items.UUID = relationships.destid AND
   relationships.type = reltypes.UUID;

该示例显示上一查询可能返回的值:

类型起点名称Dest Name

DatasetInFeatureDataset

County.PW.Cadastre

County.PW.PrivRdName

DatasetInFeatureDataset

County.PW.Cadastre

County.PW.TaxParcelNo

DomainInDataset

County.PW.PIN

PINB

FeatureClassInTopology

County.PW.Cadastre_Topology

County.PW.TaxBlocks

DatasetsRelatedThrough

County.PW.PIN_Condo

County.PW.PIN_Condo2Parcel

常用 GDB_ 表查询

有关针对 GDB_ 表执行的常用 SQL 查询类型的信息,请参阅以下主题:

  • 关系查询
  • XML 列查询
  • 空间查询

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2021 Esri. | 隐私政策 | 法律声明