例:sdetable コマンドを使用して Oracle で空間ビューを作成する

難易度: 初級 データ要件 独自のデータを使用

sdetable コマンドの -c オプションで指定する列のリストに空間列を含めることにより、空間ビューを作成できます。sdetable コマンドを使用して空間ビューを作成する場合、ビューはテーブルとして ArcSDE に登録されます。ビューをレイヤとして登録するには、sdelayer コマンドを使用します。

この例では、sdetable コマンドを使用してフィーチャクラスと非空間テーブルの列を組み込んだ空間ビューを作成し、このビューの権限をユーザに与えます。その後、ビューをレイヤとして ArcSDE に登録します。

空間ビューの作成

次の例では、employees テーブルが regions フィーチャクラスと結合されています。2 つのテーブルは、どちらにも存在する emp_id で結合されます。

sdetable -o create_view -T emp_region_view -t "employees,world.regions" 
-c "employees.name,employees.emp_id,world.regions.reg_id,world.regions.rname,world.regions.region"
-a "employee,eid,rid,region,area" -w "employees.emp_id = world.regions.emp_id"
-s myodbserver -i sde:oracle11g:ora1 -u gdb -p gdb.bdg

テーブルの所有者が接続ユーザでない場合は、名前を <所有者>.<テーブル> 形式で指定する必要があります。複数のテーブルを使用する場合は、-c の後に記載される各列の名前を <テーブル>.<列> または <所有者>.<テーブル>.<列> 形式の名前にする必要があります。

ユーザ スキーマのジオデータベースに含まれているテーブルを使用するには、ユーザ所有のジオデータベースを -D オプションで指定します。

この例のビューには 2 つの異なるテーブルの列が含まれ、テーブル名によって列名が非常に長くなるため、-a オプションを使用して列にエイリアスを割り当てています。ただし、エイリアスが必要となるのは、ビューに含まれる列の名前が曖昧になる場合だけです。たとえば、2 つのテーブル間でビューを作成したときに、両方のテーブルの name 列が含まれる場合は、列のエイリアスを設定して 2 つの name 列を区別します。-a オプションを使用して列名のエイリアスを設定する場合は、指定する列とその順序を -c と -a のリストで同じにする必要があります。

reg_id は regions フィーチャクラスの NULL でない整数列で、ArcSDE で RowID として使用されます。region は、regions フィーチャクラスの空間列です。

ヒントヒント:

フィーチャクラスを emp_region_view 定義に含めるために、gdb ユーザには regions フィーチャクラスに少なくとも SELECT 権限が必要です。

ここで、ビューはテーブルとして ArcSDE に登録されます(TABLE_REGISTRY システム テーブルに、そのためのエントリがあります)。ArcGIS Desktop で表示すると、ビューはテーブルとして表示されます。

ビューに関する権限の付与

SQL または sdetable コマンドを使用して、ビューの権限を付与できます。

例: SQL を使用して Oracle に空間ビューを作成し、登録する」では、ビューに関する権限を付与するために SQL が使用されます。この例では、grant 操作を指定した sdetable コマンドが使用されます。

sdetable -o grant -t emp_region_view -U dispatch1 -A SELECT
-s myodbserver -i sde:oracle11g:ora1 -u gdb -p gdb.bdg -I

-I オプションを指定して、ユーザ dispatch1 にビューの権限を他のユーザに付与することを許可しています。

ビューのレイヤとしての登録

sdetable コマンドを使用してビューを作成したときに、ビューはテーブルとして ArcSDE に登録されました。ビューをレイヤとして表示するには、sdelayer コマンドを使用して登録する必要があります。

sdelayer -o register -l emp_region_view,region -e a 
-C reg_id,USER -t ST_GEOMETRY -E 2.20,2.20,3.01,3.01 -R 1 
-s myodbserver -i sde:oracle11g:ora1 -u gdb -p gdb.bdg

オプションに指定する値は、-o を除き、実際のデータによって異なります。

sdelayer および sdetable コマンドの詳細については、『コマンド リファレンス』をご参照ください。


3/6/2012