例:SQL を使用して Oracle で空間ビューを作成し、登録する
ビューの定義に空間列を含めることで、SQL を使用して ArcSDE ジオデータベースに空間ビューを作成できます。SQL を使用して空間ビューを作成する場合、空間ビューを ArcGIS で検索してフィーチャクラスとして表示するには、ビューを ArcSDE に登録する必要があります。
この例では、employees テーブルと region フィーチャクラスの間で空間ビューを作成します。
空間列を持つビューの作成
フィーチャクラスの空間列およびオブジェクト ID の両方と、ビューに含めるその他の属性列を含むように、ビューを定義します。
employees テーブルと regions フィーチャクラスの所有者は gdb ユーザであるため、ユーザはビューの作成に必要な権限をすでに持っています。
CREATE VIEW emp_region_vw AS SELECT (e.emp_name,e.emp_id,r.rname,r.reg_id,r.region) FROM employees e,region r WHERE e.emp_id = r.emp_id;
reg_id は regions フィーチャクラスからの非 NULL の数値列で、ビューを ArcSDE に登録する際に RowID として使用されます。region は、regions フィーチャクラスの空間列です。
空間ビューに関する権限の付与
ビューを作成したら、続いて dispatch1 ユーザに SELECT 権限を付与します。WITH GRANT OPTION を指定して、dispatch1 ユーザにビューの権限を他のユーザに付与することを許可します。
GRANT SELECT ON emp_region_vw TO dispatch1 WITH GRANT OPTION;
ビューをレイヤとして ArcSDE に登録する
空間ビューを ArcGIS で検索するには、ビューをレイヤとして ArcSDE に登録する必要があります。このために、ArcSDE の LAYERS および GEOMETRY_COLUMNS システム テーブルにレコードを追加します。
レイヤはビューの所有者が登録する必要があるため、-u および -p オプションを使用して gdb ユーザの名前とパスワードを指定する必要があります。
sdelayer -o register -l emp_region_vw,region -e a -t ST_GEOMETRY -C reg_id,USER -E 2.20,2.20,3.01,3.01 -R 1 -s myodbserver -i sde:oracle11g:ora1 -u gdb -p gdb.bdg
ビューの region 空間列は ST_GEOMETRY 格納を使用してポリゴンを格納しているため、–t オプションで ST_GEOMETRY が指定され、–e オプションで a(エリア) が指定されます。これらのオプションや、–o を除くその他すべてのオプションに指定する値は、データによって異なります。
sdelayer コマンドの詳細については、『コマンド リファレンス』をご参照ください。