例:SQL を使用して SQL Server で空間ビューを作成し、それを登録する

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

ビューの定義に空間列を含めることで、SQL を使用して ArcSDE ジオデータベースに空間ビューを作成できます。SQL を使用して空間ビューを作成する場合、空間ビューを ArcGIS で検索してフィーチャクラスとして表示するには、ビューを ArcSDE に登録する必要があります。

この例では、employees テーブルと region フィーチャクラスの間で空間ビューを作成します。

空間列を持つビューの作成

フィーチャクラスの空間列およびオブジェクト ID の両方と、ビューに含めるその他の属性列を含むように、ビューを定義します。

employees テーブルと regions フィーチャクラスの所有者は gdb ユーザであるため、ユーザはビューの作成に必要な権限をすでに持っています。

USE testdb;

CREATE VIEW emp_region_vw
AS SELECT (e.emp_name,e.emp_id,r.rname,r.reg_id,r.region) 
FROM employees e JOIN region r 
ON e.emp_id = r.emp_id;

GO

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

空間ビューに対する権限の付与

これでビューが作成されたので、ptolemy ドメイン ログインに SELECT 権限を付与します。ptolemy がビューに対する権限を他のユーザに付与できるように、WITH GRANT OPTION を含めます。

USE testdb;

GRANT SELECT 
ON emp.region.vw 
TO [ourdomain\ptolemy]
WITH GRANT OPTION;

GO
ヒントヒント:

ptolemy ドメイン ログインに権限を付与するには、SQL Server インスタンスと testdb データベースにそのドメイン ログインを追加する必要があります。

ビューをレイヤとして ArcSDE に登録する

ArcGIS を使って空間ビューを検索するには、ビューをレイヤとして ArcSDE に登録する必要があります。これによって、レコードは ArcSDE SDE_layers および SDE_geometry_columns システム テーブルに登録されます。

レイヤはビューの所有者が登録する必要があるため、-u および -p オプションを使用して gdb ユーザの名前とパスワードを指定する必要があります。

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

emp_region_vw の空間列は SQL Server のジオメトリ格納を使用し、ポリゴンを格納するため、–t および –k オプションでGEOMETRY を指定し、–e オプションでa(エリア)を指定します。これらのオプションや、–o を除くその他すべてのオプションに指定する値は、データによって異なります。

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


3/6/2012