工作流:创建 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'));
提示:
确保到图像的路径是数据库服务器可访问的路径。
可在该表中插入附加数据。
将表注册到地理数据库
使用 ArcGIS for Desktop 将表注册到地理数据库。
步骤:
- 启动 ArcMap 并打开 Catalog 窗口,或启动 ArcCatalog。
-
连接到包含要注册的表的企业级地理数据库。
此连接在目录树的“数据库连接”节点下进行。请确保以表所有者的身份进行连接。
- 右键单击 real_estate 表,然后单击注册到地理数据库。
ObjectID 字段即添加到 real_estate 表。ObjectID 字段可以使 ArcGIS 游标遍历表的各行。
相关主题
9/15/2013