4.8 SDO_TOPO_MAP.CHANGE_EDGE_COORDS

構文

SDO_TOPO_MAP.CHANGE_EDGE_COORDS(     
  topology  IN VARCHAR2,      
  edge_id   IN NUMBER,      
  geom      IN SDO_GEOMETRY);

または

SDO_TOPO_MAP.CHANGE_EDGE_COORDS(     
  topology         IN VARCHAR2,      
  edge_id          IN NUMBER,      
  geom             IN SDO_GEOMETRY,      
  moved_iso_nodes  OUT SDO_NUMBER_ARRAY,      
  moved_iso_edges  OUT SDO_NUMBER_ARRAY,      
  allow_iso_moves  IN VARCHAR2);

説明

エッジの座標、およびその関連情報を変更します。

パラメータ

topology

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

edge_id

座標を変更するエッジのエッジIDを指定します。

geom

変更されたエッジを表すSDO_GEOMETRYオブジェクト(線または連続線ストリング・ジオメトリ)を指定します。変更されたエッジの開始点および終了点は、元のエッジの開始点および終了点と同じである必要があります。

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で、孤立ノードまたは孤立エッジを別のフェイスに移動するエッジの移動操作を実行できます。また、これらの孤立ノードおよび孤立エッジを含むフェイスの情報が調整されます。

使用上のノート

このプロシージャによってフェイス間の境界が変更される場合、Spatialは、自動的に、孤立ノードおよび孤立フェイスを再度割り当て、両側のフェイスのMBRを調整し、必要に応じてトポロジ・データ・モデル表を更新します。

topologyがNULLではない場合、このプロシージャは、<topology-name>_EDGE$表(「エッジ情報表」を参照)の指定されたエッジに関する情報を変更します。(topologyがNULLの場合は、SDO_TOPO_MAP.UPDATE_TOPO_MAPプロシージャをコールして、いつでもこの表を更新できます。)

このプロシージャを使用して、指定したエッジの開始点または終了点(あるいはその両方)を変更することはできません。これらの操作を実行するには、エッジを削除して、変更する開始点または終了点(あるいはその両方)のノードを削除してから、必要な新しいノードを追加し、エッジを追加する必要があります。

位相要素を編集する方法の詳細は、「トポロジの編集」を参照してください。

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

次の例では、エッジE1の座標を変更します。(3つ目の点のみを、16,38から16,39に変更します。)ここでは、現行の更新可能なTopoMapオブジェクトを使用します。(この例では、「トポロジ・データから作成したトポロジ」の定義およびデータを参照しています。)

CALL SDO_TOPO_MAP.CHANGE_EDGE_COORDS(null, 1,
  SDO_GEOMETRY(2002, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1),
    SDO_ORDINATE_ARRAY(8,30, 16,30, 16,39, 3,38, 3,30, 8,30)));