ST_Geometry 列を持つテーブルでの空間ビューの使用
空間ビューは、空間列を含むデータベース ビューです。
ArcSDE でデータを表示できるように余分な空間列を削除するというのも空間ビューの 1 つの使用法です。2 つ以上の空間列で構成される空間テーブルを登録することはできないので、ArcSDE クライアント アプリケーションでデータを操作する場合は、テーブルの空間ビューを使用する必要があります。
ビューを定義する際には、ビューに含める空間列を 1 つだけ選択します。
SQL を使用して空間ビューを作成する例を以下に示します。
1 つの空間列を持つビューを作成します。
CREATE VIEW quake_v
AS SELECT objectid,shape
FROM quakes4;
この例では、空間ビューを作成し、そのビューに空間結合を作成します。
CREATE VIEW san_berdoo_quakes_v
AS SELECT a.objectid, a.location, b.name
FROM quakes4 a, st_counties b
WHERE b.name = 'San Bernardino'
AND st_intersects(a.location,b.boundary)=1;
次も同じ例で、これは Informix のジオデータベースの場合のものです。
CREATE VIEW san_berdoo_quakes_v
AS SELECT a.objectid, a.location, b.name
FROM quakes4 a, st_counties b
WHERE b.name = 'San Bernardino'
AND st_intersects(a.location,b.boundary);
マテリアライズド空間ビューの作成
マテリアライズド ビューはクエリの結果が含まれたデータベース オブジェクトです。これらのオブジェクトは通常 Oracle Materialized View(または Snapshot)の高度なレプリケーションで使用されます。マテリアライズド ビューは、DB2 では MQT(Materialized Query Tables)として知られています。
CREATE MATERIALIZED VIEW quake_mv
AS SELECT objectid,shape
FROM quakes4;
DB2
CREATE TABLE quake_mv as (SELECT objectid,shape FROM quakes4)
DATA INITIALLY DEFERRED REFRESH DEFERRED
MAINTAINED BY USER
SET INTEGRITY FOR quake_mv MATERIALIZED QUERY IMMEDIATE UNCHECKED
マテリアライズド ビューから選択します。
SELECT COUNT(*)
FROM quake_mv a, st_counties b
WHERE b.name = 'San Bernardino'
AND st_intersects(a.shape,b.shape)=1;
Informix ではこのようなマテリアライズド ビューを作成できません。マテリアライズド ビューは、表示するときに一時テーブルの作成が必要なビューに過ぎません。たとえば、多数のテーブルのユニオン(和)を使用してビューを作成する場合は、このビューをクエリしたときに Informix によって一時テーブルが作成される必要があります。Informix にはこれに対応する機能がありません。
LOB 格納形式で格納された ArcSDE フィーチャクラスの場合と同様に、空間タイプのレイヤも Oracle Materialized View レプリケーションでサポートされています。空間データのレプリケーションは DB2 レプリケーション スイートでも許容されていますが、Oracle Materialized View のレプリケーションに相当するものはありません。