将包含 ST_Geometry 列的表注册到 ArcSDE
可以使用 ArcSDE 管理命令 sdelayer –o register 将空间表手动注册到 ArcSDE。注册到 ArcSDE 后,该空间表则称为图层。
ESRI 建议您在 ArcGIS 中创建要素类。在 ArcGIS 中创建要素类可以确保要素类正确创建。不过,ESRI 了解某些 SQL 用户和应用程序开发人员想要用其他方式处理空间表。因此,ESRI 支持对利用 SQL 或第三方应用程序创建的外部空间表进行注册。
请记住,对于要注册到 ArcSDE 的表,至少必须满足下列条件:
- 必须归注册此表的用户所有。
- 必须具有单个 ST_Geometry 列。
- 必须没有属于用户定义类型的其他列。
- 几何类型必须单一(点、线或面)
- 必须具有适合充当注册对象 ID 列的整型、唯一和非空列。
- 表中的所有记录都必须具有相同的空间参考 ID (SRID) 或没有 SRID。
- 如果在注册时指定 SRID,那么 SRID 就必须存在于地理数据库中。
- SRID 的名称不可以大小写混合,不能以数字开头或超过 128 个字符(在 Oracle 中不可以超过 160 字符)。
如果表中不含有任何数据,并且将表注册到 ArcSDE 但未指定有效的 SRID,那么将使用默认的 SRID。对于包含 ST_Geometry 列的 PostgreSQL 和 Oracle 表,默认的 SRID 是 0。SRID 0 主要用于测试目的,它实际上并不指定空间参考。如果您以后尝试添加具有有效 SRID(不为 0)的要素,那么添加将失败,因为 SRID 不相同。SRID 指定给表之后,就无法更改;必须删除图层,然后利用正确的 SRID 重新创建图层。
有关使用 sdelayer 命令的详细信息,请参阅随 ArcGIS Server Enterprise 的 ArcSDE 组件附送的《ArcSDE 管理命令参考》。
-
在 SQL 中,根据在工作流:对现有的要素类使用 SQL 中创建的现有建筑物要素类,创建表 comm_bldgs。这么做会利用和建筑物要素类相同的定义(如相同的列和数据类型)来创建 comm_bldgs 表。
CREATE TABLE comm_bldgs AS SELECT * FROM buildings WHERE subtype = 'COM';
-
将 comm_bldgs 要素类注册到 ArcSDE 时,所使用的 SRID 将和用于建筑物要素类的 SRID 相同。要查看该 SRID,请使用 sdelayer –o describe_long。
提示:
您还可以在 Oracle 中查询 ST_GEOMETRY_COLUMNS 表,在 Informix 和 DB2 中查询 geometry_columns 表,在 PostgreSQL 中查询 sde_geometry_columns 表,以获取 SRID。
sdelayer –o describe_long –l buildings,shape –u <user> –p <pw> –s <server> [–D <database>] –i <service_or_direct_connect_string> Layer Administration Utility Layer Description : <None> Table Owner : me Table Name : buildings Spatial Column : shape Layer Id : 15 SRID : 3
-
使用 sdelayer 命令将要素类注册到 ArcSDE。利用 –R 选项在最后一步指定 SRID。您还可以利用 -E 选项指定图层的范围。
sdelayer –o register –l comm_bldgs,shape –e a -t ST_GEOMETRY –C OBJECTID,SDE –R 3 -E -690.389,-512.144,610.389,600.144 –u <user> –p <pw> –s <server> [–D <database>] –i <service_or_direct_connect_string>
注:如果 DBTUNE 表中 DEFAULTS 关键字下的 GEOMETRY_STORAGE 参数未设置为 ST_GEOMETRY,则还必须通过 -k 选项提供关键字。
这样,表即被注册到 ArcSDE,成为图层。这会向 Oracle、DB2 或 Informix 中的 LAYERS、GEOMETRY_COLUMNS、COLUMN_REGISTRY 和 TABLE_REGISTRY 系统表,或者 PostgreSQL 中的 sde_layers、sde_geometry_columns、sde_column_registry 和 sde_table_registry 表中添加一条记录。此时,您可以在 ArcGIS Desktop 中查看、选择要素类,以及对其执行非版本化编辑。
要在要素类中使用地理数据库功能,请将要素类注册到地理数据库。