ワークフロー: 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 引数が NULL になっています。

    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 コンストラクタで TIFF 画像ファイル 30551_independence を変換して、30551 Independence Ave に所在する物件の図が 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 のテーブルへの追加

ArcGIS では、ArcSDE テーブルの各行をカーソル移動できるようにするために、ArcSDE 登録済みの行 ID の列(ObjectID とも呼ばれます)をテーブルに設定する必要があります。行 ID の追加には sdetable コマンドを使用できます。

手順:
  1. alter_reg 操作で sdetable コマンドを実行して、ArcSDE に登録されたテーブルに行 ID の列を追加します。

    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 を起動してカタログ ウィンドウを開くか、ArcCatalog を起動します。
  2. 登録するテーブルを含む ArcSDE ジオデータベースに接続します。

    これで、カタログ ツリーの [Database Connections] ノードで、接続が確立されるようになりました。必ずテーブルの所有者として接続してください。

  3. real_estate テーブルを右クリックします。
  4. [ジオデータベースに登録] をクリックします。
  5. 既存の ObjectID フィールドを選択するか、新しいフィールドを作成するかを確認するメッセージが表示されます。
  6. sdetable コマンドで追加した ObjectID フィールドを使用するよう、選択します。
  7. [OK] をクリックします。

関連項目


3/6/2012