2.3 エッジでの操作の実行
このトピックでは、エッジの追加、移動、削除および更新の影響と、PL/SQL APIを使用してこれらの操作を実行する方法について説明します。
2.3.1 エッジの追加
連結エッジを追加すると、フェイスにエッジが追加されます。また、元のフェイスが2つのフェイスに分割されます。Spatialによって元のフェイスの定義が自動的に調整され、新しいフェイスが作成されます(新しいエッジに、トポロジ内のフェイスで一意のID値が割り当てられます)。
エッジを追加するには、SDO_TOPO_MAP.ADD_EDGEプロシージャを使用します。既存のノードを、追加したエッジの開始ノードおよび終了ノードに指定する必要があります。
図2-11に、フェイスF3のノードN3とN5の間へのエッジ(E7)の追加を示します。
図2-11に示す操作の結果として、フェイスF3が再定義され、F1およびF3の2つのフェイスになります。(Spatialは、複雑な規則(このマニュアルでは説明していません)を適用して、結果として生成されるフェイスのID値を決定します。)
元のフェイスに定義されていたポリゴン・フィーチャは、結果として生成された両方のフェイスに自動的に再定義されます。たとえば、図2-11の元のフェイスF3にウォールデン州立公園という名前の公園が定義されていた場合、エッジE7の追加後にウォールデン州立公園がフェイスF1とF3の両方に定義されます。
親トピック: エッジでの操作の実行
2.3.2 エッジの移動
連結エッジを移動すると、エッジの開始点または終了点の一方は同じ位置に保持され、これらの2つの点のもう一方が、既存の別のノードの位置に移動されます。ソース・ノード(移動するノードの移動前の位置)、ターゲット・ノード(移動するノードの移動後の位置)および移動後のエッジの頂点を指定する必要があります。
エッジを移動するには、SDO_TOPO_MAP.MOVE_EDGEプロシージャを使用します。
図2-12に、元はノードN3とN5の間に存在したエッジE7の、ノードN2とN5の間への移動を示します。
図2-12に示す操作の結果として、フェイスF1およびF3が再定義され、それらのエッジの座標がエッジE7の新しい座標を含むように反映されます。
連結エッジの移動操作の結果、孤立ノードおよび孤立エッジは同じフェイス内に残るか、別のフェイスに移動します。SDO_TOPO_MAP.MOVE_EDGEプロシージャには、moved_iso_nodes
およびmoved_iso_edges
の2つの出力パラメータがあります。これらのパラメータには、操作の結果として別のフェイスに移動した孤立ノードおよび孤立エッジのID番号が格納されます。
移動の結果として次のことが発生する場合、エッジを移動できません。
親トピック: エッジでの操作の実行
2.3.3 エッジの削除
連結エッジを削除すると、そのエッジが削除され、エッジに隣接していたフェイスがマージされます。(Spatialは、複雑な規則(このマニュアルでは説明していません)を適用して、結果として生成されるフェイスのID値を決定します。)
エッジを削除するには、SDO_TOPO_MAP.REMOVE_EDGEプロシージャを使用します。
図2-13に、フェイスF1およびF3と隣接するエッジ(E7)の削除を示します。
図2-13に示す操作の結果は、次のとおりです。
-
フェイスF1が、元のフェイスF1およびF3の領域で構成されるように再定義されます。
-
フェイスF3が削除されます。
-
削除されたエッジの開始ノードおよび終了ノード(ノードN3およびN5)は削除されません。
元のフェイスに定義されていたポリゴン・フィーチャは、結果として生成されたフェイスに自動的に再定義されます。たとえば、図2-13の元のフェイスF1およびF3にアダムス公園という名前の公園が定義されていた場合、エッジE7の削除後にアダムス公園がフェイスF1に定義されます。
次の1つ以上の条件に該当する場合、連結エッジは削除できません。
親トピック: エッジでの操作の実行
2.3.4 エッジの更新
孤立エッジを更新すると、エッジの1つ以上の座標が変更されますが、開始点および終了点は変更されません。
エッジを更新するには、SDO_TOPO_MAP.CHANGE_EDGE_COORDSプロシージャを使用します。
連結エッジの更新操作の結果、孤立ノードおよび孤立エッジは同じフェイス内に残るか、別のフェイスに移動します。SDO_TOPO_MAP.CHANGE_EDGE_COORDSプロシージャには、moved_iso_nodes
およびmoved_iso_edges
の2つの出力パラメータがあります。これらのパラメータには、操作の結果として別のフェイスに移動した孤立ノードおよび孤立エッジのID番号が格納されます。
操作の結果としてエッジがその他のエッジと交差する場合、エッジは更新できません。エッジの更新の詳細は、SDO_TOPO_MAP.CHANGE_EDGE_COORDSプロシージャの「使用上のノート」を参照してください。
親トピック: エッジでの操作の実行