工作流:创建 ArcObjects 栅格字段
一些应用程序会显示图像,例如交通标志、河流或建筑物的图片,以进一步显示点、线或面要素。这些图像可以具有空间参考,也可以不具有空间参考。可使用 SQL 创建包含非空间栅格列的表。
以下工作流描述了创建并填充栅格列以及为 ArcGIS 访问而进行准备的方法。
创建并填充包含栅格列的表
-
从 SQL 编辑器连接到数据库。
例如,从 SQL*Plus 连接到 Oracle、通过 pgAdminIII 或 psql 命令提示符连接到 PostgreSQL,或者从 Management Studio 连接到 Microsoft SQL Server。
- 创建包含 ST_Raster 列的表。
Oracle
CREATE TABLE real_estate (address nvarchar2(255), sde.st_raster picture);
PostgreSQL
CREATE TABLE real_estate (address varchar(255), sde.st_raster picture);
SQL Server
CREATE TABLE real_estate (address varchar(255), dbo.st_raster picture);
如果 SQL Server 中的地理数据库存储在 sde 用户的方案中,则函数以 sde 开头。
- 使用 ST_Raster_Util_Initialize 方法初始化栅格列。
在这些示例中,projectID 参数为空,因为数据没有空间参考。
Oracle
BEGIN SDE.ST_RASTER_UTIL.INITALIZE ('real_estate','picture',NULL,'defaults'); END; /
PostgreSQL
SELECT st_raster_util_initialize ('real_estate','address',4326,'DEFAULTS');
SQL Server
EXEC dbo.st_raster_util_initialize 'sde','bobby','real_estate','address',4326,NULL,'DEFAULTS'
执行此方法后,栅格列即注册到 ArcSDE,从而可用于其功能。
- 使用 ST_Raster 构造函数转化 TIFF 图像。
在这些示例中,使用 ST_Raster 构造函数将 30551 Independence Ave 处建筑物的图像 转换为 TIFF 图像文件 30551_independence,从而输入到 real_estate 表中。
Oracle
INSERT INTO REAL_ESTATE (address, sde.st_raster) VAULES ('30551 Independence Ave', SDE.ST_RASTER('C:\30551_independence.tif','compression=lz77'));
PostgreSQL
INSERT INTO real_estate (address, sde.st_raster) VAULES ('30551 Independence Ave', sde.st_raster('C:\30551_independence.tif'));
SQL Server
INSERT INTO real_estate (address, dbo.st_raster) VALUES ('30551 Independence Ave', ST_Raster::construct('C:\30551_independence.tif'));
提示:确保到图像的路径是数据库服务器可访问的路径。
将注册的行 ID 添加到表中
要使游标穿过 ArcSDE 表的各行,ArcSDE 需要表中具有 ArcSDE 注册的行 ID 列(也称为 ObjectID)。可使用 sdetable 命令添加行 ID。
- 运行 sdetable 命令的 alter_reg 操作,将行 ID 列添加到注册到 ArcSDE 的表中。
Oracle
sdetable -o alter_reg -t real_estate -c objectid -C SDE -i sde:oracle11g -s myserver -u tblowner -p ulook.away -N
PostgreSQL
sdetable -o alter_reg -t real_estate -c objectid -C SDE -N -i sde:postgresql:myserver -s myserver -D pgdb -u tblowner -p ulook.away
SQL Server
sdetable -o alter_reg -t real_estate -c objectid -C SDE -N -i sde:sqlserver:myserver\ssinstance -D ssdb -u tblowner -p ulook.away
现在可通过 ArcGIS Desktop 用户界面查看该表的栅格。
如果希望能够在 ArcGIS 中编辑表,或希望表参与任何地理数据库功能(例如子类别或关系类),则必须将表注册到地理数据库。
将表注册到地理数据库
使用 ArcGIS Desktop 将表注册到地理数据库。
- 启动 ArcMap 并打开 Catalog 窗口,或启动 ArcCatalog。
-
连接到包含要注册的表的 ArcSDE 地理数据库。
此连接在 Catalog 目录树的“数据库连接”节点下进行。请确保以表所有者的身份进行连接。
- 右键单击 real_estate 表。
- 单击注册到地理数据库。
- 使用 sdetable 命令选择使用已添加的 objectID 字段。
- 单击确定。