1.3 トポロジ・ジオメトリおよびトポロジ・ジオメトリ・レイヤー
トポロジ ・ジオメトリ(フィーチャともいう)は、実際のオブジェクトの空間表現です。たとえば、Main Street(大通り)やWalden State Park(ウォールデン州立公園)というトポロジ・ジオメトリが存在する場合があります。
ジオメトリは、位相要素(ノード、エッジおよびフェイス)のセットとして格納され、位相要素はプリミティブとも呼ばれます。各トポロジ・ジオメトリには、(レコードのインポートまたはロード時にSpatialが割り当てた)一意のIDが関連付けられています。
トポロジ・ジオメトリ・レイヤーは、複数のトポロジ・ジオメトリ・タイプの集合で構成することもできますが、一般的には特定のタイプで構成されています(コレクション・レイヤーについては、「コレクション・レイヤー」を参照してください)。たとえば、Main Streetトポロジ・ジオメトリを含むトポロジ・ジオメトリ・レイヤーは、Streets (通り)とすることができます。また、Walden State Parkトポロジ・ジオメトリを含むトポロジ・ジオメトリ・レイヤーは、State Parks (州立公園)とすることができます。各トポロジ・ジオメトリ・レイヤーには、(Spatialが割り当てた)一意のIDが関連付けられています。各トポロジ・ジオメトリ・レイヤーのデータは、フィーチャ表に格納されます。たとえば、CITY_STREETSというフィーチャ表には、Streetsトポロジ・ジオメトリ・レイヤー内のすべてのトポロジ・ジオメトリ(個々の道路および通り)に関する情報が含まれています。
各トポロジ・ジオメトリ(フィーチャ)は、SDO_TOPO_GEOMETRY型のオブジェクト(「SDO_TOPO_GEOMETRY型」を参照)として定義します。このオブジェクトでは、トポロジのトポロジ・ジオメトリ・タイプ、トポロジ・ジオメトリID、トポロジ・ジオメトリ・レイヤーIDおよびトポロジIDを定義します。
トポロジ・メタデータは、Spatialによって自動的にUSER_SDO_TOPO_METADATAビューおよびALL_SDO_TOPO_METADATAビュー(「xxx_SDO_TOPO_METADATAビュー」を参照)に保持されます。USER_SDO_TOPO_INFOビューおよびALL_SDO_TOPO_INFOビュー(「xxx_SDO_TOPO_INFOビュー」を参照)には、このトポロジ・メタデータのサブセットが含まれます。
親トピック: トポロジ・データ・モデルの概要
1.3.1 フィーチャ
多くの場合、トポロジ内にはフィーチャより多くの位相要素(ノード、エッジおよびフェイス)が含まれます。たとえば、1つの道路フィーチャが多くのエッジで構成されたり、公園などの1つの領域フィーチャが多くのフェイスで構成される場合があります。また、点フィーチャにノードが関連付けられない場合もあります。図1-3に、「トポロジ・データ・モデルの概念」の図1-1に示したトポロジに関連付けられた点フィーチャ、線フィーチャおよび領域フィーチャを示します。
図1-3に示すトポロジ内のフィーチャの種類は次のとおりです。
-
点フィーチャ(道路標識): 黒い丸
S1
、S2
、S3
およびS4
として示しています。 -
線フィーチャ(道路または通り): 破線
R1
、R2
、R3
およびR4
として示しています。 -
領域フィーチャ(土地区画): 矩形
P1
、P2
、P3
、P4
およびP5
として示しています。土地区画
P5
の領域には、グレーの領域は含まれません。(つまり、P5
はフェイスF1
を含みますが、フェイスF9
は含みません。これらのフェイスは、「トポロジ・データ・モデルの概念」の図1-1に示しています。)
「トポロジ・データから作成したトポロジ」の例1-12では、これらのフィーチャを定義します。
親トピック: トポロジ・ジオメトリおよびトポロジ・ジオメトリ・レイヤー
1.3.2 コレクション・レイヤー
コレクション・レイヤーは、異なるトポロジ・ジオメトリ・タイプの位相要素を含めることのできるトポロジ・ジオメトリ・レイヤーです。たとえば、「トポロジの例(PL/SQL)」の例のCITY_DATA
トポロジを使用すると、特定の土地区画、通りおよび道路標識の要素を含むコレクション・レイヤーを作成できます。
コレクション・レイヤーを作成するには、基本的に他のタイプのレイヤーを作成するのと同じステップを実行します。次の例のように、レイヤーのフィーチャ表を作成します。
CREATE TABLE collected_features ( -- Selected heterogeneous features feature_name VARCHAR2(30) PRIMARY KEY, feature SDO_TOPO_GEOMETRY);
次の例のように、SDO_TOPO.ADD_TOPO_GEOMETRY_LAYERプロシージャのコール時に、topo_geometry_layer_type
パラメータにCOLLECTION
を指定して、フィーチャ表をトポロジに関連付けます。
EXECUTE SDO_TOPO.ADD_TOPO_GEOMETRY_LAYER('CITY_DATA', COLLECTED_FEATURES', 'FEATURE', 'COLLECTION');
コレクション・レイヤーのフィーチャ表をロードするには、例1-1に示すように、必要な行を挿入します。
例1-1 コレクション・レイヤーのフィーチャ表のロード
-- Take R5 from the CITY_STREETS layer. INSERT INTO collected_features VALUES( 'C_R5', SDO_TOPO_GEOMETRY('CITY_DATA', 2, -- tg_type = line/multiline 4, -- tg_layer_id SDO_TOPO_OBJECT_ARRAY( SDO_TOPO_OBJECT(20, 2), SDO_TOPO_OBJECT(-9, 2))) ); -- Take S3 from the TRAFFIC_SIGNS layer. INSERT INTO collected_features VALUES( 'C_S3', SDO_TOPO_GEOMETRY('CITY_DATA', 1, -- tg_type = point/multipoint 4, -- topo layer id SDO_TOPO_OBJECT_ARRAY( SDO_TOPO_OBJECT(6, 1))) ); -- Take P3 from the LAND_PARCELS layer. INSERT INTO collected_features VALUES( 'C_P3', SDO_TOPO_GEOMETRY('CITY_DATA', 3, -- tg_type = (multi)polygon 4, SDO_TOPO_OBJECT_ARRAY( SDO_TOPO_OBJECT(5, 3), SDO_TOPO_OBJECT(8, 3))) ); -- Create a collection from a polygon and a point. INSERT INTO collected_features VALUES( 'C1', SDO_TOPO_GEOMETRY('CITY_DATA', 4, -- tg_type = collection 4, SDO_TOPO_OBJECT_ARRAY( SDO_TOPO_OBJECT(5, 3), SDO_TOPO_OBJECT(6, 1))) ); -- Create a collection from a polygon and a line. INSERT INTO collected_features VALUES( 'C2', SDO_TOPO_GEOMETRY('CITY_DATA', 4, -- tg_type = collection 4, SDO_TOPO_OBJECT_ARRAY( SDO_TOPO_OBJECT(8, 3), SDO_TOPO_OBJECT(10, 2))) ); -- Create a collection from a line and a point. INSERT INTO collected_features VALUES( 'C3', SDO_TOPO_GEOMETRY('CITY_DATA', 4, -- tg_type = collection 4, SDO_TOPO_OBJECT_ARRAY( SDO_TOPO_OBJECT(-5, 2), SDO_TOPO_OBJECT(10, 1))) );
親トピック: トポロジ・ジオメトリおよびトポロジ・ジオメトリ・レイヤー