ArcGIS Desktop

  • 文档
  • 支持

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

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

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS for Developers

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

ArcGIS Solutions

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

ArcGIS Marketplace

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

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

ArcMap

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

使用 SQL 查询地理数据库系统表

了解四个地理数据库系统表之间的关系后,通过 SQL 进行检查是查看这些表如何协同工作的最佳方法。从 GDB_Items 表中选择所有行和列将返回与下表类似的结果集(还包含很多其他字段):

查询 GDB_Items 表时返回的值

请注意,“类型”列中的值采用 UUID 的形式进行存储。如地理数据库系统表概述中所述,这些 UUID 可通过 GDB_ItemTypes 表进行解析,如以下查询所示:

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;

这样返回的结果与在 GDB_Items 表上运行简单的 SELECT 语句时产生的结果类似,只不过“类型”列中的 UUID 已经被替换为可读性更强的字符串:

类型列中的文本值

同样,GDB_ItemRelationships 表也包含在其他表作为关键值的 UUID。在上表 GDB_Items 中可以看出,每个关系包含两个 UUID 值:一个表示关系的目标项,另一个表示关系的源项。要将这些字符解析为便于阅读的字符串,必须将 GDB_ItemRelationships 表与 GDB_Items 表连接两次:

--SQL Server and PostgreSQL query
SELECT relationships.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
WHERE
   origin_items.UUID = relationships.originid AND
   dest_items.UUID = relationships.destid;

--Oracle query
SELECT relationships.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
WHERE
   origin_items.UUID = relationships.originid AND
   dest_items.UUID = relationships.destid;

下图是通过之前的查询返回的结果集示例:

源项名称和目标项名称的文本值

虽然该图显示了地理数据库中各项之间的关系,但仍需要关系类型。通过之前的查询进行扩展,使其包含与 GDB_ItemRelationshipTypes 表的连接来解析“类型 UUID”:

--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;

将返回以下内容:

GDB_ItemRelationshipTypes 表“类型”列中的文本值

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS 平台

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

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