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

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

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.name,employees.emp_id,
hbear.regions.reg_id,hbear.regions.rname,hbear.regions.region"
-a "employee,eid,rid,region,area" -w "employees.emp_id = hbear.regions.emp_id"
-u gdb -p gdb.bdg -i sde:sqlserver:server1\ssinstance2 -D testdb

テーブルの所有者が接続ユーザでない場合は、名前を <所有者>.<テーブル> 形式で指定する必要があります。複数のテーブルを使用する場合は、-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 を使用して SQL Server で空間ビューを作成し、それを登録する」では、ビューに対する権限を付与するために SQL が使用されます。この例では、grant 操作を指定した sdetable コマンドが使用されます。

sdetable -o grant -t emp_region_view -U dispatch1 
-A SELECT -I -i sde:sqlserver:server1\ssinstance2  
-D testdb -u gdb -p gdb.bdg

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

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

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

sdelayer -o register -l emp_region_view,area -e a 
-C rid,USER -t GEOMETRY -k GEOMETRY -E 2.20,2.20,3.01,3.01 
-R 1 -i sde:sqlserver:server1\ssinstance2 -D testdb 
-u gdb -p gdb.bdg

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

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


3/6/2012