例:sdetable コマンドを使用した PostgreSQL での空間ビューの作成

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

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

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

空間ビューの作成

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

sdetable –o create_view -T emp_region_view -t employees,hbear.regions
–c "employees.emp_id,employees.name,hbear.regions.reg_id,hbear.regions.rname,hbear.regions.region"
-a "eid,employee,rid,region,area" –w "employees.emp_id = hbear.regions.emp_id" 
-s mypgdbserver -i sde:postgresql:mypgdbserver -D testdb –u gdb –p gdb.bdg

テーブルの所有者が接続ユーザでない場合は、名前を <所有者>.<テーブル> 形式で指定する必要があります。複数のテーブルを使用する場合は、-c の後に記載される各列の名前を <テーブル>.<列> または <所有者>.<テーブル>.<列> 形式の名前にする必要があります。ビューを作成するユーザには、テーブルとフィーチャクラスの両方への SELECT 権限が最低限必要です。

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

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

ヒントヒント:

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

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

ビューの権限の付与

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

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

sdetable -o grant -t emp_region_view -U dispatch1 
-A SELECT -s mypgdbserver -i sde:postgresql:mypgdbserver 
-D testdb -u gdb -p gdb.bdg -I

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

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

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

sdelayer -o register -l emp_region_view,area -e a 
-C rid,USER -t ST_GEOMETRY -E 2.20,2.20,3.01,3.01 
-R 1 -s mypgdbserver -i sde:postgresql:mypgdbserver 
-D testdb -u gdb -p gdb.bdg

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

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


3/6/2012