有关创建用于 ArcGIS 的空间表规则
以下列出了使用第三方工具创建将用于 ArcGIS 的空间表时需要切记的注意事项:
- 表中必须具有一个唯一、非空的列用作 ArcGIS 中的唯一标识符。
ArcGIS 需要空间表中有唯一要素标识符列以执行空间查询、日志文件查询、单行操作和版本化数据库操作。
如果需要将表注册到地理数据库,ArcGIS 将添加一个名称为 ObjectID 的唯一标识列。此列的名称通常为 OBJECTID,但是,如果表中已存在具有该名称的列,则可以具有其他名称。如果表中存在已建立索引的唯一非空标识数字或整型列,则可以将其用作 ObjectID。地理数据库将保持注册到地理数据库的所有表的 ObjectID 列中的值。
如果要在 ArcGIS for Desktop 中查看空间数据库表,则可以指定一个或多个列,共同作为表的唯一标识符。
如果通过向 ArcGIS Spatial Data Server 发布的要素服务编辑空间数据库表,则该表必须包含一个由数据库维护的唯一非空列。您可以使用添加增量 ID 字段地理处理工具将符合条件的字段添加到表中。
- 避免在同一个表中存在多个空间列。
在同一个表中允许创建多个空间列。但是,ArcGIS 不支持在同一个表中存在多个几何列。要使用包含多个空间列的表,可创建仅包含这些空间列其中之一的视图。或者,您可以定义仅包括其中一个空间列的查询图层。
- 请勿使用大小写混合的对象名称。
默认情况下,数据库对象名称在 Oracle 中和 DB2 中以全大写形式存储;而在 PostgreSQL 中和 Informix 中以全小写形式存储。在使用 SQL 创建表时,可以强制数据库存储大小写混合的名称。然而,如果您计划将数据用于 ArcGIS,请切勿这样做。ArcGIS 软件体系不允许区分大小写。如果创建大小写混合的对象名称,使用如 ArcSDE 命令或 ArcMap 之类的应用程序执行查询时将会失败。同样,如果在 PostgreSQL 数据库中创建全大写的对象名称或者在 Oracle 数据库中创建全小写的对象名称,ArcGIS 查询也将失败。
- 插入空间表中的记录类型必须与为空间列定义的实体类型相匹配。
空间列只能接受空间列所需实体类型的数据。例如,类型为 ST_Polygon 的列会拒绝其他几何类型,例如 ST_LineString。
但是,ST_Geometry 接受所有支持的子类型的几何。尽管可以将不同的实体插入 ST_Geometry 列,ArcGIS 将只处理其中一种。查看数据库中的要素类数据时,ArcGIS 将读取表中的第一行,而且只显示该实体类型。要查看表中的其他实体类型,您可以更改表的查询图层定义,以便显示不同的实体类型。如果将空间表注册到地理数据库,必须为该表选择一个实体类型。
- 仅为表中的数据使用一个空间参考。
ArcGIS 将一个空间参考应用于整个表。查看地理数据库要素类时,必须指定一个空间参考,而且只渲染该空间参考中的数据。将表注册到地理数据库时,需指定使用哪个空间参考,且仅可指定一个。如果使用一个空间参考注册该表,但其中的某些数据实际上位于不同的空间参考中,那么数据将无法正确渲染,并且您可能会收到一条错误消息。