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
パラメータまたはx
とy
のパラメータの組合せにより指定した座標でエッジ・セグメントが分割されます。値にFALSE
を指定すると、point
パラメータまたはx
とy
のパラメータの組合せで指定した座標は無視され、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.
親トピック: SDO_TOPO_MAPパッケージ・サブプログラム