什么是对象 ID?
对象 ID (ObjectID) 是一个唯一值非空整型列,用于在地理数据库表中唯一地标识行记录。ObjectID 被限制为 32 位值,能存储的最大值为 2,147,483,648。
对于通过 ArcGIS 创建的表或在 ArcGIS 外部创建然后注册到地理数据库的表,都将自动添加 objectID 字段。该字段中的值由地理数据库维护。ArcGIS 将使用 objectID 执行一些操作,如滚动并显示选择集,以及对要素执行识别操作。
警告:
由于多数 ArcGIS for Desktop 功能要求 objectID 具有唯一性,因此直接处理数据库时应非常谨慎,以避免 objectID 重复。例如,按照一对多的关系创建视图时,便可能会使 objectID 重复。从而导致 ArcGIS for Desktop 功能的行为不一致。
何时将 objectID 添加到表中?
将 objectID 添加到表中的方法有三种:
- 由地理数据库维护的 ObjectID 列会自动添加到使用 ArcGIS 创建的任何表中。
- 如果将表注册到没有合适列的地理数据库中,地理数据库将向表中添加满足 objectID 要求的另一列。如果表已经包含一个名为 ObjectID 的列,则地理数据库将添加名为 OBJECTID_ 的列。
- 如果使用 sdetable 或 sdelayer 命令将表注册到 ArcSDE,应该在命令执行时指定行 ID 列。还可指定由 ArcSDE 还是维护用户来维护这一列数据。
接下来将表注册到地理数据库时,如果指定了由 ArcSDE 维护的行 ID,那么表的行 ID 将用于地理数据库中的 objectID。如果指定了由用户维护的行 ID,那么接下来当您将表注册到地理数据库时,地理数据库将添加新的 ObjectID 列。此新 ObjectID 列将取代您在将表注册到 ArcSDE 时指定的列。该列也将用户定义的 objectID 的数据类型从 objectID 更改为长整型。
因此,如果在注册到 ArcSDE 之后要将表注册到地理数据库,应将行 ID 注册为由 ArcSDE 维护。
11/19/2012