1.4 トポロジ・ジオメトリ・レイヤー階層
一部のトポロジには、トポロジ・ジオメトリ・レイヤー(フィーチャ・レイヤー)が1つ以上の親子関係を持つトポロジ階層が含まれます。つまり、最上位レベルのレイヤーは階層の1つ下のレベルの子レイヤーのフィーチャで構成され、その子レイヤーはさらに1つ下のレベルの子レイヤーのフィーチャで構成されます(以降のレイヤーも同様です)。
たとえば、土地利用トポロジには、次のトポロジ・ジオメトリ・レイヤーが階層の個別のレベルとして含まれる場合があります。
-
最上位レベルは州です。このレベルは、その子レイヤーである郡のフィーチャで構成されます。
-
州の1つ下のレベルは郡です。このレベルは、その子レイヤーである地域のフィーチャで構成されます。
-
郡の1つ下のレベルは地域です。このレベルは、その子レイヤーである区域のフィーチャで構成されます。
-
地域の1つ下のレベルは区域です。このレベルは、その子レイヤーである土地区画のフィーチャで構成されます。
-
土地区画は、階層の最下位レベルです。
トポロジ内のトポロジ・ジオメトリ・レイヤーがこの階層関係を持つ場合、すべてのトポロジ・ジオメトリ・レイヤーを単一レベルで(階層を使用せずに)指定するより、それらのレイヤーを階層としてモデル化する方が大幅に効率的です。たとえば、郡のSDO_TOPO_GEOMETRYオブジェクトを構成する場合、郡内のすべての地域のすべての区域のすべての土地区画を指定するよりも、郡内の地域のみを指定する方がより効率的です。
階層内の最も低いレベル(最も小さい種類のフィーチャを含むトポロジ・ジオメトリ・レイヤー)はレベル0 (ゼロ)で、これより高いレベルは順にレベル1、レベル2のように番号が付けられます。階層内で隣接するレベルのトポロジ・ジオメトリ・レイヤーには、親子関係があります。上位レベルの各トポロジ・ジオメトリ・レイヤーは、1つ下のレベルのレイヤーに対する親レイヤーになります。1つ下のレベルのレイヤーは、上位レベルのレイヤーの子レイヤーになります。親レイヤーは子レイヤーを1つのみ持つことができますが、子レイヤーは1つ以上の親レイヤーを持つことができます。前述の例では、郡レイヤーは子レイヤーとして地域のみを持つことができますが、地域レイヤーは親レイヤーとして郡および水道地域を持つことができます。
ノート:
トポロジ・ジオメトリ・レイヤーの階層は、「ネットワーク階層」に示すネットワーク階層に類似しています。ただし、これらの階層には大きな違いがあるため、混同しないように注意してください。たとえば、トポロジ・ジオメトリ・レイヤー階層の最下位レベルは0 (ゼロ)ですが、ネットワーク階層の最下位レベルは1です。また、トポロジ・ジオメトリ・レイヤー階層内の1つの親が持つ子は常に1つで、1つの子は複数の親を持つことができますが、ネットワーク階層では、1つの親は複数の子を持つことができ、1つの子が持つ親は常に1つです。
図1-4に、前述の例のトポロジ・ジオメトリ・レイヤー階層を示します。階層の各レベルには、レベル番号と、そのレベルのトポロジ・ジオメトリ・レイヤーを示しています。
例1-2 トポロジ・ジオメトリ・レイヤー階層のモデル化
トポロジ・ジオメトリ・レイヤーを階層としてモデル化するには、SDO_TOPO.ADD_TOPO_GEOMETRY_LAYERプロシージャをコールして、親トポロジ・ジオメトリ・レイヤーをトポロジに追加するときに、child_layer_id
パラメータに子レイヤーを指定します。最初に最下位レベル(レベル0 (ゼロ))のトポロジ・ジオメトリ・レイヤーを追加し、次にレベル1のレイヤーを追加してレベル0のレイヤーをその子として指定します。次に、レベル2のレイヤーを追加してレベル1のレイヤーをその子として指定します。他のレイヤーも同様に指定します。例1-2に、5つのトポロジ・ジオメトリ・レイヤーを追加して、5レベルの階層を作成する例を示します。
-- Create the topology. (Null SRID in this example.) EXECUTE SDO_TOPO.CREATE_TOPOLOGY('LAND_USE_HIER', 0.00005); -- Create feature tables. CREATE TABLE land_parcels ( -- Land parcels (selected faces) feature_name VARCHAR2(30) PRIMARY KEY, feature SDO_TOPO_GEOMETRY); CREATE TABLE block_groups ( feature_name VARCHAR2(30) PRIMARY KEY, feature SDO_TOPO_GEOMETRY); CREATE TABLE tracts ( feature_name VARCHAR2(30) PRIMARY KEY, feature SDO_TOPO_GEOMETRY); CREATE TABLE counties ( feature_name VARCHAR2(30) PRIMARY KEY, feature SDO_TOPO_GEOMETRY); CREATE TABLE states ( feature_name VARCHAR2(30) PRIMARY KEY, feature SDO_TOPO_GEOMETRY); -- (Other steps not shown here, such as populating the feature tables -- and initializing the metadata.) . . . -- Associate feature tables with the topology; include hierarchy information. DECLARE land_parcels_id NUMBER; block_groups_id NUMBER; tracts_id NUMBER; counties_id NUMBER; BEGIN SDO_TOPO.ADD_TOPO_GEOMETRY_LAYER('LAND_USE_HIER', 'LAND_PARCELS', 'FEATURE','POLYGON'); SELECT tg_layer_id INTO land_parcels_id FROM user_sdo_topo_info WHERE topology = 'LAND_USE_HIER' AND table_name = 'LAND_PARCELS'; SDO_TOPO.ADD_TOPO_GEOMETRY_LAYER('LAND_USE_HIER', 'BLOCK_GROUPS', 'FEATURE','POLYGON', NULL, land_parcels_id); SELECT tg_layer_id INTO block_groups_id FROM user_sdo_topo_info WHERE topology = 'LAND_USE_HIER' AND table_name = 'BLOCK_GROUPS'; SDO_TOPO.ADD_TOPO_GEOMETRY_LAYER('LAND_USE_HIER', 'TRACTS', 'FEATURE','POLYGON', NULL, block_groups_id); SELECT tg_layer_id INTO tracts_id FROM user_sdo_topo_info WHERE topology = 'LAND_USE_HIER' AND table_name = 'TRACTS'; SDO_TOPO.ADD_TOPO_GEOMETRY_LAYER('LAND_USE_HIER', 'COUNTIES', 'FEATURE','POLYGON', NULL, tracts_id); SELECT tg_layer_id INTO counties_id FROM user_sdo_topo_info WHERE topology = 'LAND_USE_HIER' AND table_name = 'COUNTIES'; SDO_TOPO.ADD_TOPO_GEOMETRY_LAYER('LAND_USE_HIER', 'STATES', 'FEATURE','POLYGON', NULL, counties_id); END;/
レベル0(ゼロ)より上の各レベル内では、各レイヤーに、(例1-2で作成したような)1つ下のレベルのフィーチャから作成されたフィーチャ、位相要素(フェイス、ノードおよびエッジ)から作成されたフィーチャまたはこれらの組合せを含めることができます。たとえば、地域レイヤーには、区域から作成した地域またはフェイスから作成した地域、あるいはその両方を含めることができます。ただし、レイヤー内の各フィーチャは、1つ下のレベルのフィーチャまたは位相要素のいずれかのみから作成されている必要があります。たとえば、特定の地域を区域から構成することもフェイスから構成することもできますが、区域とフェイスを組み合せて構成することはできません。
階層内のレベルのフィーチャ表に対してトポロジ・ジオメトリ・オブジェクトの挿入または更新を行うには、SDO_TOPO_GEOMETRYコンストラクタの適切な形式を使用します。フィーチャ表については、「トポロジ・ジオメトリおよびトポロジ・ジオメトリ・レイヤー」を参照してください。SDO_TOPO_GEOMETRYのコンストラクタについては、「SDO_TOPO_GEOMETRYのコンストラクタ」を参照してください。
関係情報表内のTOPO_ID属性およびTOPO_TYPE属性は、トポロジ・ジオメトリ・レイヤー階層を持つトポロジ内の親レイヤーに適用される場合、特別な意味を持つことに注意してください。これらの属性については、「関係情報表」の表1-5を参照してください。
親トピック: トポロジ・データ・モデルの概要