注册包含空间列的第三方表
使用 ArcSDE 管理命令 sdelayer 的 register 操作,将空间表注册为要素类。
register 操作允许您在包含定义为用户定义数据类型的空间列的 DBMS 表中创建要素类。迄今为止,ArcSDE 地理数据库支持六种不同的 DBMS 空间数据类型的实现:Oracle Spatial 几何类型 (SDO_Geometry)、Informix Spatial DataBlade (ST_Geometry)、DB2 Spatial Extender (ST_Geometry)、用于 Oracle 的空间类型 (ST_Geometry)、用于 PostgreSQL 的空间类型 (ST_Geometry)、PostGIS for PostgreSQL (Geometry)、Geometry for SQL Server (Geometry) 和 Geography for SQL Server (Geography)。若使用这些空间数据类型中的一种创建表,并使用 DBMS SQL 接口或其他第三方接口填充这些表,则可通过将现有表注册为要素类将表添加到 ArcSDE 地理数据库中。
要注册第三方空间表,必须满足以下先决条件:
- 只有表的所有者可以使用 ArcSDE 注册该表。因此,使用 -u 和 -p 选项提供的用户名和密码必须是用于表所有者的。
- 只能有一个空间列。 提示:
如果表包含多个空间列,则可以创建只包含一个空间列的表视图。
- 不得有属于用户定义类型的其他列。
- 表中所有记录必须拥有相同的空间参考。
- 如果使用 -R 选项指定空间参考 ID (SRID),则该 SRID 必须已经存在于地理数据库中的 ArcSDE 空间参考里。会根据指定的 SRID 所指示的空间参考来计算默认的偏移和范围。
- 表名称不可以大小写混合,不能以数字开头或超过 128 个字符(在 Oracle 中不可以超过 160 字符)。
- 您必须使用 -t 选项指定几何存储类型。对于 register 操作, -t 选项的有效值包括 Geography、Geometry、SDO_Geometry 和 ST_Geometry。指定值必须与正在注册的表的空间列类型相匹配。
- 注册 SDO_Geometry 表时,建议您在将这些表注册到 ArcSDE 之前创建空间索引。
- 应该使用 -E 选项指定范围。
有关使用 sdelayer 命令的语法和示例,请参阅随 ArcGIS Server Enterprise 的 ArcSDE 组件附送的《ArcSDE 管理命令参考》。
在 ArcSDE 之前版本中存在的 SDO_Geometry 自动注册功能已弃用。
-
在 MS-DOS (Windows) 或 shell(UNIX 或 Linux)提示符处,执行 sdelayer 命令的 register 操作。
将 PostGIS 点表注册到 ArcSDE
sdelayer -o register -l samplepts,geom -e p+ -C ptid,SDE -t PG_GEOMETRY -g RTREE -E -76.74381615680447,34.59132803608262,-74.56368991230103,36.18919425895801 -i sde:postgresql:myserver -s myserver -D bigdb -u editor -p open.up
注意:如果将要素标识符列注册为用户维护 (-C id,USER) 而不是示例中所示的 SDE 维护,并且随后将要素类注册到地理数据库,则 ArcGIS 会再添加一个要素标识符列 ObjectID。由 ArcGIS 维护此列的值。如果此表包含大量记录,添加此 ObjectID 列可能需要一些时间。