工作流:创建 ArcObjects 栅格字段

复杂程度: 高级 数据要求: 使用自备的数据 目标: 创建并填充非空间栅格字段,以及为 ArcGIS 访问而进行准备。

一些应用程序会显示图像,例如交通标志、河流或建筑物的图片,以进一步显示点、线或面要素。这些图像可以具有空间参考,也可以不具有空间参考。可使用 SQL 创建包含非空间栅格列的表。

以下工作流描述了创建并填充栅格列以及为 ArcGIS 访问而进行准备的方法。

创建并填充包含栅格列的表

步骤:
  1. 从 SQL 编辑器连接到数据库。

    例如,从 SQL*Plus 连接到 Oracle、通过 pgAdminIII 或 psql 命令提示符连接到 PostgreSQL,或者从 Management Studio 连接到 Microsoft SQL Server。

  2. 创建包含 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 开头。

  3. 使用 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,从而可用于其功能。

  4. 使用 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'));
    提示提示:

    确保到图像的路径是数据库服务器可访问的路径。

  5. 可在该表中插入附加数据。

将注册的行 ID 添加到表中

要使游标穿过 ArcSDE 表的各行,ArcSDE 需要表中具有 ArcSDE 注册的行 ID 列(也称为 ObjectID)。可使用 sdetable 命令添加行 ID。

步骤:
  1. 运行 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 将表注册到地理数据库。

步骤:
  1. 启动 ArcMap 并打开 Catalog 窗口,或启动 ArcCatalog。
  2. 连接到包含要注册的表的 ArcSDE 地理数据库。

    此连接在 Catalog 目录树的“数据库连接”节点下进行。请确保以表所有者的身份进行连接。

  3. 右键单击 real_estate 表。
  4. 单击注册到地理数据库
  5. 系统将提示您选择现有 ObjectID 字段或创建新的 ObjectID 字段。
  6. 使用 sdetable 命令选择使用已添加的 objectID 字段。
  7. 单击确定

相关主题


7/10/2012