4.3 SDO_TOPO_MAP.ADD_LINEAR_GEOMETRY

構文

SDO_TOPO_MAP.ADD_LINEAR_GEOMETRY(     
  topology IN VARCHAR2,      
  curve    IN SDO_GEOMETRY      
) RETURN SDO_NUMBER_ARRAY;

または

SDO_TOPO_MAP.ADD_LINEAR_GEOMETRY(     
  topology IN VARCHAR2,      
  coords   IN SDO_NUMBER_ARRAY      
) RETURN SDO_NUMBER_ARRAY;

説明

トポロジに線形(線ストリングまたは複数の線で構成されるストリング)ジオメトリを追加し、必要に応じてエッジとノードを挿入します。この処理は、トポロジ・グラフ内におけるジオメトリとエッジおよびノードの完全交差と、挿入後に共有されているエッジのエッジIDの配列(ジオメトリの開始から終了までの順序で配列)に基づいて行われます。

パラメータ

topology

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

curve

追加するエッジを表すSDO_GEOMETRYオブジェクト(曲線または線ストリング・ジオメトリ)を指定します。

coords

追加するエッジの座標を指定するSDO_NUMBER_ARRAYオブジェクトを指定します。

使用上のノート

このファンクションは、少なくとも1つの新しいエッジを作成し、必要に応じて複数の新しいエッジを作成します。たとえば、線ストリング・ジオメトリが既存のエッジと交差している場合、追加された線ストリングに対して2つのエッジが作成され、既存のエッジ(交差されたエッジ)は2つのエッジに分割されます。topologyがNULLではない場合、Spatialは必要に応じて自動的に<topology-name>_EDGE$表を更新します。(topologyがNULLの場合は、SDO_TOPO_MAP.UPDATE_TOPO_MAPプロシージャをコールして、いつでもこの表を更新できます。)

このファンクションは、挿入後に共有されているエッジのエッジIDの配列を、ジオメトリの開始から終了までの順序で戻します。追加されたジオメトリのセグメントがトポロジ内の既存のエッジと重なった場合、戻されるエッジの符号は、追加されたセグメントと既存のエッジの方向によって決定されます。既存のエッジの方向が線形ジオメトリと同じである場合、戻されるエッジ要素は正になります。既存のエッジの方向が線形ジオメトリと反対である場合、戻されるエッジ要素は負になります。

curveパラメータまたはcoordsパラメータで指定されているオブジェクトで線セグメントが重なっている場合は、例外が発生します。ただし、線セグメントは1つ以上の点で交差できます。

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

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

次の例では、指定した線ストリング・ジオメトリを表すエッジを追加し、追加されたエッジのエッジIDを戻します。ここでは、現行の更新可能なTopoMapオブジェクトを使用します。(この例では、「トポロジ・データから作成したトポロジ」の定義およびデータを参照しています。)

SELECT SDO_TOPO_MAP.ADD_LINEAR_GEOMETRY(null,
  SDO_GEOMETRY(2002, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,2,1),
    SDO_ORDINATE_ARRAY(50,10, 55,10, 57,11)))
FROM DUAL;
 
SDO_TOPO_MAP.ADD_LINEAR_GEOMETRY(NULL,SDO_GEOMETRY(2002,NULL,NULL,SDO_ELEM_INFO_
--------------------------------------------------------------------------------
SDO_NUMBER_ARRAY(31)