创建用于地理数据库 (geodatabase) 的空间表时应遵循的规则
以下是您使用 ArcGIS 中的第三方工具创建空间表时所需牢记的注意事项:
- 该空间表需要一个唯一的、非空的整型列作为 ArcGIS 中的唯一标识符。
ArcSDE 需要空间表中有唯一的,已注册的要素标识符列以执行空间查询、日志文件查询、单行操作和多版本化数据库操作。向 ArcSDE 地理数据库中的现有表添加空间列时,可能同时还添加唯一标识列。此列通常命名为 OBJECTID,但也可以使用其他名称。
也可以使用现有列作为唯一标识列,只要此列已经建立索引并且声明为 NUMBER、INTEGER、UNIQUE 和 NOT NULL。有关此列的详细信息,请参阅什么是对象 ID?。
- 避免在同一个表中出现多个空间列。
可以在同一个表中创建多个空间列。不过,ArcGIS 并不支持同一个表中的多个几何列。要使用具有多个空间列的表,请创建一个只包含一个空间列的空间视图。有关针对包含 ST_Geometry 列的表创建空间视图的详细信息,请参阅针对包含 ST_Geometry 列的表应用空间视图。
- 请勿使用大小写混写的对象名称。
默认情况下,Oracle 和 DB2 中的数据库对象名称均存储为大写形式,而 PostgreSQL 和 Informix 中的数据库对象名称均存储为小写形式。使用 SQL 创建表时,可以强制数据库存储大小写混合的对象名称。但是,如果打算使用 ArcGIS 处理数据,请不要执行此操作。ArcGIS 整套软件都不区分大小写。如果创建的对象名称是大小写混合的,则无法使用诸如 ArcSDE 命令或 ArcMap 命令执行查询。类似的,如果在 PostgreSQL 数据库中创建全部大写的对象名称,或者在 Oracle 数据库中创建全部小写的对象名称,ArcGIS 查询也将失败。
ArcGIS 中的 SQL Server 数据库不区分大小写。因此,此规则不适用于 SQL Server 数据库。
- 插入到空间表的记录必须具有某个类型,此类型与为空间列定义的类型相匹配。
空间列只可接受空间列所需类型的数据。例如,ST_Polygon 类型的列拒绝整数、字符和其他类型的几何(如 ST_LineString)。但是,ST_Geometry 接受所有受支持的子类型几何。
SQL Server 空间类型列通常为几何列或地理列;而实体类型不存在子类型或元数据。因此,此规则不适用于 SQL Server 数据库。
- 为表中的数据仅使用一个空间参考。
地理数据库会将空间参考应用到整个表中。在 ArcSDE 中注册表时,可以且仅可以指定一个空间参考。如果使用某个空间参考注册表时,某些数据位于不同的空间参考中,则数据可能无法正确渲染,甚至还可能会接收到错误消息。