4.42 SDO_TOPO_MAP.MOVE_NODE

構文

SDO_TOPO_MAP.MOVE_NODE(     
  topology     IN VARCHAR2,      
  node_id      IN NUMBER,      
  edges_coords IN SDO_EDGE_ARRAY);

または

SDO_TOPO_MAP.MOVE_NODE(     
  topology        IN VARCHAR2,      
  node_id         IN NUMBER,      
  edges_coords    IN SDO_EDGE_ARRAY,      
  moved_iso_nodes OUT SDO_NUMBER_ARRAY,      
  moved_iso_edges OUT SDO_NUMBER_ARRAY,      
  allow_iso_moves IN VARCHAR2);

説明

連結ノードおよびその連結ノードに接するエッジを移動します。

パラメータ

topology

ノードの移動先となるトポロジの名前を指定するか、更新可能なTopoMapオブジェクトを使用している場合はNULLを指定します(「トポロジ・パラメータの編集方法の指定」を参照)。名前は20文字以下である必要があります。

node_id

移動するノードのノードIDを指定します。

edges_coords

SDO_EDGE_ARRAY型(「SDO_EDGE_ARRAY型およびSDO_NUMBER_ARRAY型」を参照)の配列で使用する配列を指定します。各内部配列は、ノードに接する各エッジの移動先の開始点から終了点までの座標で構成されます。外部配列は、ノードに接するすべてのエッジの配列で構成され、その配列の順序は、移動するノードの開始エッジから時計回りの順(SDO_TOPO_MAP.GET_NODE_STARファンクションのコールで取得される順序)です。

各エッジの配列には、開始点および終了点を含める必要があります。移動されたノードに2回接続されているループは、配列で2回指定する必要があります。

moved_iso_nodes

allow_iso_movesパラメータ値がTRUEの場合、Spatialによって、このプロシージャの結果として別のフェイスに移動された孤立ノードのノードID値が格納される出力パラメータです。allow_iso_movesパラメータ値がFALSEの場合、Spatialによって、実際には移動されなかったが、allow_iso_movesパラメータ値がTRUEだった場合は別のフェイスに移動されていたはずの孤立ノードのノードID値が格納されます。

moved_iso_edges

allow_iso_movesパラメータ値がTRUEの場合、Spatialによって、このプロシージャの結果として別のフェイスに移動された孤立エッジのエッジID値が格納される出力パラメータです。allow_iso_movesパラメータ値がFALSEの場合、Spatialによって、実際には移動されなかったが、allow_iso_movesパラメータ値がTRUEだった場合は別のフェイスに移動されていたはずの孤立エッジのエッジID値が格納されます。

allow_iso_moves

TRUEを指定すると、Spatialで、孤立ノードまたは孤立エッジを別のフェイスに移動するノード移動操作を実行することや、これらの孤立ノードおよび孤立エッジを含むフェイスの情報を調整することができるようになります。FALSEを指定すると、Spatialで、孤立ノードまたは孤立エッジを別のフェイスに移動するノード移動操作を実行できなくなります。

allow_iso_movesパラメータを指定しない場合は、Spatialで、孤立ノードまたは孤立エッジを別のフェイスに移動するノードの移動操作を実行できます。また、これらの孤立ノードおよび孤立エッジを含むフェイスの情報が調整されます。

使用上のノート

ノードを移動する方法の詳細は、「ノードの移動」を参照してください。

このプロシージャの動作は、クライアント側のJava APIに含まれるTopoMapクラス(「トポロジ・データ・モデルのJavaインタフェース」を参照)のmoveNodeメソッドを使用する場合と同じです。

次の例では、ノードN3を移動して、このノードに接する唯一のエッジの座標を調整します。(この例では、「トポロジ・データから作成したトポロジ」の定義およびデータを参照しています。)

-- Move node N3 to right: from 25,35 to 26,35.
-- E3 is changed from 25,30 -> 25,35 to 25,30 -> 26,35.
CALL SDO_TOPO_MAP.MOVE_NODE(null, 3,
  SDO_EDGE_ARRAY(SDO_NUMBER_ARRAY(25,30, 26,35)));