4.5 SDO_TOPO_MAP.ADD_NODE

構文

SDO_TOPO_MAP.ADD_NODE(     
  topology           IN VARCHAR2,      
  edge_id            IN NUMBER,      
  point              IN SDO_GEOMETRY,      
  coord_index        IN NUMBER,      
  is_new_shape_point IN VARCHAR2      
) RETURN NUMBER;

または

SDO_TOPO_MAP.ADD_NODE(     
  topology           IN VARCHAR2,      
  edge_id            IN NUMBER,      
  x                  IN NUMBER,      
  y                  IN NUMBER,      
  coord_index        IN NUMBER,      
  is_new_shape_point IN VARCHAR2      
) RETURN NUMBER;

説明

トポロジに連結ノードを追加して既存のエッジを分割し、追加したノードのノードIDを戻します。

パラメータ

topology

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

edge_id

ノードを追加するエッジのエッジIDを指定します。

point

追加するノードを表すSDO_GEOMETRYオブジェクト(点ジオメトリ)を指定します。点は、既存の形状点であるか、または2つの連続する形状点を結ぶ線セグメントを分割する新しい点である必要があります。

x

追加するノードを表す点のX軸値を指定します。点は、既存の形状点であるか、または2つの連続する形状点を結ぶ線セグメントを分割する新しい点である必要があります。

y

追加するノードを表す点のY軸値を指定します。点は、既存の形状点であるか、または2つの連続する形状点を結ぶ線セグメントを分割する新しい点である必要があります。

coord_index

エッジの座標配列内で、ノードがその位置またはその位置の後ろに追加される配列位置のインデックス(位置)を指定します。各頂点(ノードまたは形状点)の位置を、エッジの座標配列内に含めます。開始点(ノード)はインデックス(位置) 0、開始点の次の点は1のようになります。(ただし、coord_index値に最後の頂点のインデックスを指定することはできません。)たとえば、エッジ座標が(2,2, 5,2, 8,3)の場合、2つ目の頂点(5,2)のインデックスは1になります。

is_new_shape_point

追加したノードを、エッジのインデックス付けされた頂点(coord_index値)に続く新しい形状点にする場合はTRUE、インデックス付けされた頂点上に配置する場合はFALSEを指定します。

値にTRUEを指定すると、新しい点にノードを追加でき、pointパラメータまたはxyのパラメータの組合せにより指定した座標でエッジ・セグメントが分割されます。値にFALSEを指定すると、pointパラメータまたはxyのパラメータの組合せで指定した座標は無視され、coord_index値に関連付けられた既存の形状点にノードが追加されます。

使用上のノート

Spatialは、追加されたノードに自動的にノードIDを割り当て、新しいエッジを作成します。元のエッジの開始側にある分割されたエッジには、元のエッジのエッジIDが割り当てられます。topologyがNULLではない場合、適切なエントリが<topology-name>_NODE$表および<topology-name>_EDGE$表に挿入されます。(topologyがNULLの場合は、SDO_TOPO_MAP.UPDATE_TOPO_MAPプロシージャをコールして、いつでもこれらの表を更新できます。)

孤立ノードを追加するには、SDO_TOPO_MAP.ADD_ISOLATED_NODEファンクションを使用します。

ノードとエッジを追加および削除する方法の詳細は、「トポロジの編集」を参照してください。

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

次の例では、エッジE2上のノードN2の右に連結ノードを追加して、追加したノードのノードIDを戻します。ここでは、現行の更新可能なTopoMapオブジェクトを使用します。(この例では、「トポロジ・データから作成したトポロジ」の定義およびデータを参照しています。)

DECLARE
  result_num NUMBER;
BEGIN
result_num := SDO_TOPO_MAP.ADD_NODE(null, 2,
  SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(27,30,NULL), NULL, NULL),
  0, 'TRUE');
DBMS_OUTPUT.PUT_LINE('Result = ' || result_num);
END;
/
Result = 26                                                                     
 
PL/SQL procedure successfully completed.