ワークフロー: 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 引数が 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 に登録されて、ラスタ列の機能が利用できるようになります。
- 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'));
ヒント:画像へのパスは、必ずデータベース サーバがアクセスできるものにしてください。
登録済みの行 ID のテーブルへの追加
ArcGIS では、ArcSDE テーブルの各行をカーソル移動できるようにするために、ArcSDE 登録済みの行 ID の列(ObjectID とも呼ばれます)をテーブルに設定する必要があります。行 ID の追加には sdetable コマンドを使用できます。
- 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 を使用します。
- ArcMap を起動してカタログ ウィンドウを開くか、ArcCatalog を起動します。
-
登録するテーブルを含む ArcSDE ジオデータベースに接続します。
これで、カタログ ツリーの [Database Connections] ノードで、接続が確立されるようになりました。必ずテーブルの所有者として接続してください。
- real_estate テーブルを右クリックします。
- [ジオデータベースに登録] をクリックします。
- sdetable コマンドで追加した ObjectID フィールドを使用するよう、選択します。
- [OK] をクリックします。