7 SDO_NFEパッケージ・サブプログラム

MDSYS.SDO_NFEパッケージには、ネットワーク・フィーチャ編集を実行するためのサブプログラム(ファンクションおよびプロシージャ)が含まれています。

これらのサブプログラムを使用する場合は、概念(「ネットワーク・データ・モデル・グラフの概要」、特に「ネットワーク・フィーチャ編集(NFE)を使用したフィーチャ・モデリング」を参照)を理解しておく必要があります。

トピック:

7.1 SDO_NFE.APPLY_RULE

構文

SDO_NFE.APPLY_RULE(
     model_id  IN NUMBER,
     rule_type IN VARCHAR2,
     rule_id   IN NUMBER);

説明

指定されたNFEモデルに含まれるすべてのフィーチャに接続性ルールを適用します。

パラメータ

model_id

NFEモデルのID。

rule_type

適用する接続性ルールのタイプ: RULE_TYPE_LINEまたはRULE_TYPE_POINT

rule_id

接続性ルールのID。

使用上の注意

指定するルールは、指定するモデルに登録されている必要があります。モデル表で、またはJava APIを使用して接続性ルールを登録できます。

次の例では、ルールID 1で識別される接続性ルールに適合するNFEモデル内で相互作用線に線-線ルールを適用します。

DECLARE
  model_id  NUMBER := 1;
  rule_type VARCHAR2(1) := sdo_nfe.RULE_TYPE_LINE_LINE;
  rule_id   NUMBER := 1;
BEGIN
  sdo_nfe.apply_rule( model_id, rule_type, rule_id );
END;
/

7.2 SDO_NFE.CLASSIFY_LINES_BY_SIDE

構文

SDO_NFE.CLASSIFY_LINES_BY_SIDE(
     model_id    IN NUMBER,
     ll_rule_id  IN NUMBER,
     lines       IN NUMBER,
     lhs_indexes OUT DBMS_SQL,NUMBER_TABLE,
     rhs_indexes OUT DBMS_SQL,NUMBER_TABLE);

説明

線-線接続性ルールに合致する一連の線フィーチャが指定されると、このプロシージャでは、ルールの左辺にある線と右辺にある線を分類します。

パラメータ

model_id

NFEモデルのID。

ll_rule_id

線-線接続性ルールの識別子。

lines

ルールに適合する一連の線フィーチャ。

lhs_indexes

ルールの左辺にある線の索引が((索引, 索引)形式で)格納される連想配列。

rhs_indexes

ルールの右辺にある線の索引が格納される連想配列。

使用上の注意

指定するルールは、指定するモデルに登録されている必要があります。モデル表で、またはJava APIを使用して接続性ルールを登録できます。

次の例では、まずID 1のルールに適合する相互作用グループをすべて取得し、次に線を左辺、右辺に分類します。左辺の線がlhs_indexesに出力される一方、rhs_indexesにはルールの右辺の線が格納されます。

DECLARE
  model_id    NUMBER := 1;
  ll_rule_id  NUMBER := 1;
  lines       SDO_INTERACT_LINE_FEAT_ARRAY;
  lhs_indexes dbms_sql.NUMBER_TABLE;  
  rhs_indexes dbms_sql.NUMBER_TABLE;
  inter_grps  SDO_INTERACTION_ARRAY;
BEGIN

  -- Get the groups of interacting features that meet the L-L Rule
  inter_grps := sdo_nfe.get_interaction_groups( model_id, sdo_nfe.RULE_TYPE_LINE_LINE, ll_rule_id );

  FOR i IN 1..inter_grps.count loop
    lines := inter_grps(i).lines;

    -- For each group, classify the lines by rule side.
    sdo_nfe.classify_lines_by_side( model_id, ll_rule_id, lines, lhs_indexes, rhs_indexes );
  END loop;

END;

7.3 SDO_NFE.CREATE_MODEL_SEQUENCE

構文

SDO_NFE.CREATE_MODEL_SEQUENCE(
     model_id      IN NUMBER,
     owner_name    IN VARCHAR2,
     aequence_name IN VARCHAR2);

説明

モデルの順序を作成して登録します。

パラメータ

model_id

NFEモデルのID。

owner_name

順序の関連表。

aequence_name

作成する順序の名前。

使用上の注意

実表の順序はすべてSDO_NFE.CREATE_MODEL_STRUCTUREファンクションによって作成されますが、その他の順序(フィーチャ用など)の作成が必要になる場合があります。

NFEモデルおよび順序の関連表が存在する必要があります。

次の例では、ID 1で識別されるNFEモデルおよびFEATURESという名前の表について順序を作成します。

SDO_NFE.CREATE_MODEL_SEQUENCE(’1’,’features’,’features_seq’)

7.4 SDO_NFE.CREATE_MODEL_STRUCTURE

構文

SDO_NFE.CREATE_MODEL_STRUCTURE(
     model_name    IN VARCHAR2,
     edition_mode  IN NUMBER,
     versionable   IN VARCHAR2
) RETURN NUMBER;

説明

NFEモデルの表およびメタデータを作成します。

パラメータ

model_name

NFEモデルに付ける名前。

edition_mode

エディション・モード。SDO_NFE.FROM_SCRATCHまたはSDO_NFE.OVER_EXIST_NETWORKにする必要があります。

versionable

モデルがバージョニング可能である場合は文字列値Y、それ以外の場合はNです。

使用上の注意

このファンクションは、新しいモデルのID値を戻します。

次の例では、SDO_NFE.FROM_SCRATCHエディション・モードでMODEL01という名前のバージョニング可能なモデルを作成します。

DECLARE
  model_id      NUMBER;
  model_name    VARCHAR2(50) := 'MODEL01';
  edition_mode  NUMBER       := SDO_NFE.FROM_SCRATCH;
  versionable   VARCHAR2(1)  := 'Y';
BEGIN
  model_id := SDO_NFE.create_model_structure( model_name, edition_mode, versionable );
END;
/

7.5 SDO_NFE.CREATE_MODEL_UNDERLYING_NET

構文

SDO_NFE.CREATE_MODEL_UNDERLYING_NET(
     model_id             IN NUMBER,
     network_name         IN VARCHAR2,
     num_hierarchy_levels IN NUMBER,
     is_directed          IN BOOLDEAN,
     node_with_costs      IN BOOLEAN);

説明

空間ネットワークを作成し、指定されたNFEモデルに関連付けます。また、ノード、リンクおよびパスについて順序を作成し、モデルのメタデータに登録します。

パラメータ

model_id

NFEモデルのID。

network_name

作成するネットワークの名前。

num_hierarchy_levels

ネットワークの階層レベルの数。

is_directed

ネットワークが有向である場合は、TRUEです。

node_with_costs

ネットワークのノードにコスト値が含まれる場合は、TRUEです。

使用上の注意

指定したIDのNFEモデルが存在する必要があります。新たに作成されるネットワークのノード表およびリンク表のジオメトリ・メタデータを登録する必要があります。

次の例では、NFEモデルの基礎となるネットワークを作成し、ネットワークのリンク表およびノード表のジオメトリ・メタデータを登録します。

DECLARE
  model_id      	 NUMBER	:= 1;
  network_name          VARCHAR2(50) := 'MODEL01';
  num_hierarchy_levels  NUMBER := 1;
  is_directed           VARCHAR2(10) := 'TRUE';
  node_with_costs       VARCHAR2(10) := 'TRUE';
BEGIN
-- create underlying network
  SDO_NFE.create_model_underlying_net( model_id, network_name, num_hierarchy_levels, is_directed, node_with_costs );
-- register links and nodes tables geom metadata
  SDO_NET.insert_geom_metadata(network_name, SDO_DIM_ARRAY(SDO_DIM_ELEMENT('LONGITUDE', -180, 180, 0.5), SDO_DIM_ELEMENT('LATITUDE', -90, 90, 0.5)), 8307);
END;
/

7.6 SDO_NFE.CREATE_MODEL_WORKSPACE

構文

SDO_NFE.CREATE_MODEL_WORKSPACE(
     model_id              IN NUMBER,
     parent_workspace_name IN VARCHAR2,
     workspace_name        IN VARCHAR2,
     is_mbr    IN VARCHAR2,
     is_locked IN VARCHAR2,
     lower_x   IN NUMBER,
     lower_y   IN NUMBER,
     upper_x   IN NUMBER,
     upper_y   IN NUMBER);

説明

新しい作業領域を作成してNFEモデルに関連付けます。

パラメータ

model_id

NFEモデルのID。

parent_workspace_name

親作業領域の名前。

workspace_name

作業領域の名前。

is_mbr

モデルの最小境界矩形(MBR)矩形領域について作業領域が作成される場合は、文字列TRUEです。

is_locked

作業領域がロックされる場合は、文字列TRUEです。

lower_x

作業領域MBRの下方のx縦座標。

lower_y

作業領域MBRの下方のy縦座標。

upper_x

作業領域MBRの上方のx縦座標。

upper_y

作業領域MBRの上方のy縦座標。

使用上の注意

NFEモデルは、versionableオプションを有効にして作成しておく必要があります。

次の例では、NFEモデルの作業領域を作成します。

DECLARE
  model_id        NUMBER := 1;
  parent_ws_name  VARCHAR2(30) := 'LIVE';
  workspace_name  VARCHAR2(30) := 'PROJECT_V1';
  is_mbr          VARCHAR2(1) := 'Y';
  is_locked       VARCHAR2(1) := 'N';
  lower_x NUMBER := -15.575;
  lower_y       NUMBER :=  15.575;
  upper_x NUMBER := -12.825;
  upper_y NUMBER :=  28.975;
BEGIN
  SDO_NFE.create_model_workspace(model_id, parent_ws_name, workspace_name, is_mbr, is_locked, lower_x, lower_y, upper_x, upper_y);
END;
/

7.7 SDO_NFE.DELETE_ALL_FT_LAYERS

構文

SDO_NFE.DELETE_ALL_FT_LAYERS(
     model_id  IN NUMBER);

説明

指定されたNFEモデルの内容をすべて削除します。

パラメータ

model_id

NFEモデルのID。

使用上の注意

このプロシージャは主に、データベースからモデルとその構造を削除する前に使用します。

次の例では、ID値1のモデルから内容をすべて削除します。

EXECUTE SDO_NFE.DELETE_ALL_FT_LAYERS(1);

7.8 SDO_NFE.DELETE_ALL_WORKSPACES

構文

SDO_NFE.DELETE_ALL_WORKSPACES(
     model_id  IN NUMBER);

説明

指定されたNFEモデルに関連する作業領域をすべて、モデルとの関係とともに削除します。

パラメータ

model_id

NFEモデルのID。

使用上の注意

このプロシージャは主に、データベースからモデルとその構造を削除する前に使用します。

次の例では、ID値1のモデルに関連付けられた作業領域をすべて削除します。

EXECUTE SDO_NFE.DELETE_ALL_WORKSPACES(1);

7.9 SDO_NFE.DELETE_MODEL_STRUCTURE

構文

SDO_NFE.DELETE_MODEL_STRUCTURE(
     model_id  IN NUMBER);

説明

指定されたNFEモデル内の表をすべて削除し、モデルのメタデータ・レコードを削除します。

パラメータ

model_id

NFEモデルのID。

使用上の注意

このプロシージャを使用する前に、次の作業の実行が必要になる場合があります。

  • SDO_NFE.DELETE_ALL_WORKSPACESプロシージャを実行して、モデルの作業領域を削除します。

  • SDO_NFE.DELETE_ALL_FT_LAYERSプロシージャを実行して、モデルのフィーチャ・レイヤーを削除します。

  • モデルのエディション・モードがSDO_NFE.FROM_SCRATCHの場合は、基礎となるネットワークを削除します。

次の例では、ID値1のモデルの構造を削除します。

EXECUTE SDO_NFE.DELETE_MODEL_STRUCTURE(1);

7.10 SDO_NFE.DELETE_MODEL_WORKSPACE

構文

SDO_NFE.DELETE_MODEL_WORKSPACE(
     model_id       IN NUMBER,
     workspace_name IN VARCHAR2);

説明

指定されたNFEモデルとの関係とともに、作業領域を削除します。

パラメータ

model_id

NFEモデルのID。

workspace_name

作業領域の名前。

使用上の注意

workspace_nameは、指定したNFEモデルに既存する作業領域の名前にする必要があります。作業領域のブランチはすべて削除されます。

モデルとの関係は、xxx_SDO_NFE_MODEL_WORKSPACEビューから削除されます。

次の例では、ID値1のNFEモデルからPROJECT_V4という名前の作業領域を削除します

EXECUTE SDO_NFE.DELETE_MODEL_WORKSPACE(1, 'PROJECT_V4');

7.11 SDO_NFE.DROP_MODEL_SEQUENCE

構文

SDO_NFE.DROP_MODEL_SEQUENCE(
     model_id  IN NUMBER,
     seq_name  IN VARCHAR2);

説明

指定されたNFEモデルとの関係とともに、順序を削除します。

パラメータ

model_id

NFEモデルのID。

seq_name

順序の名前。

使用上の注意

モデルとの順序の関係は、xxx_SDO_NFE_MODEL_METADATAビューのSEQUENCE_REG_TABに登録されている表から削除されます。

次の例では、ID値1のNFEモデルからPIPES_FTLAY_ID_SEQという名前の順序を削除します。

EXECUTE SDO_NFE.DROP_MODEL_SEQUENCE(1, 'PIPES_FTLAY_ID_SEQ');

7.12 SDO_NFE.DROP_MODEL_UNDERLYING_NETWORK

構文

SDO_NFE.DROP_MODEL_UNDERLYING_NETWORK
     network_name  IN VARCHAR2);

説明

ネットワークを削除し、NFEモデルとの関係を削除します。

パラメータ

network_name

ネットワーク名です。

使用上の注意

ネットワークが1つ以上のNFEモデルにバインドされている必要があります。

次の例では、PIPESという名前のネットワークを削除し、既存のNFEモデルとの関係を削除します。

EXECUTE SDO_NFE.DROP_MODEL_UNDERLYING_NETWORK('PIPES');

7.13 SDO_NFE.GET_CONNECTION_POINT_GEOM

構文

SDO_NFE.GET_CONNECTION_POINT_GEOM(
     conn_intersection  IN SDO_INTERACTION
     ) RETURN SDO_GEOMETRY;

説明

相互作用フィーチャ(線または点)のグループが指定されると、それらに接続する必要がある点のジオメトリを計算して戻します。

パラメータ

conn_intersection

フィーチャの相互作用グループ。共通空間点で相互作用する一連の線フィーチャまたは点フィーチャ。(SDO_INTERACTION型の詳細は、「NFE接続性ルールに使用するデータ型」を参照してください。)

使用上の注意

このファンクションは主に、接続性ルールの要件(「NFEルール」を参照)のために、接続する必要があるフィーチャの有効なグループに使用します。そのフィーチャのグループを取得するには、SDO_NFE.GET_LP_CONN_INTERSECTIONS (線-点ルールの場合)またはSDO_NFE.GET_LL_CONN_INTERSECTIONS(線-線ルールの場合)を使用します。

次の例では、指定された線-点ルールに適合する相互作用グループごとに接続点ジオメトリを取得します。

DECLARE
  model_id        NUMBER := 1;
  lp_rule_id      NUMBER := 1;
  inter_grps          SDO_INTERACTION_ARRAY;
  conn_point_geom     SDO_GEOMETRY;
BEGIN
  -- Get the groups of interacting features that meet the L-P Rule in the model
 inter_grps := sdo_nfe.get_interaction_groups( model_id, sdo_nfe.RULE_TYPE_LINE_POINT, lp_rule_id ); 
  -- Iterate through the interacting groups
 FOR i IN 1..inter_grps.count loop
  -- Get the connection point geometry for each interacting group
   conn_point_geom := sdo_nfe.get_connection_point_geom( inter_groups(i));
 END loop;
END;
/

7.14 SDO_NFE.GET_INTERACTION_GROUPS

構文

SDO_NFE.GET_INTERACTION_GROUPS(
     model_id   IN SDO_NUMBER,
     rule_type  IN VARCHAR2,
     rule_id    IN NUMBER
     ) RETURN SDO_INTERACTION_ARRAY;

説明

指定された接続性ルールに適合する空間点で相互作用している全フィーチャのグループの配列を戻します。

パラメータ

model_id

NFEモデルの識別子。

rule_type
接続性ルール・タイプ。使用可能な値: SDO_NFE.RULE_TYPE_LINE_LINEまたはSDO_NFE.RULE_TYPE_LINE_POINT
rule_id
ルールの識別子。LINE_LINE_RULE表またはLINE_POINT_RULE表の値である必要があります。

使用上の注意

このファンクションは、SDO_INTERACTION_ARRAY型(「NFE接続性ルールに使用するデータ型」を参照)のオブジェクトを戻します。

このファンクションによって戻される相互作用フィーチャの各グループは、指定したルールに適合する特定の空間点で相互作用するすべての線フィーチャと点フィーチャで構成されます。

このファンクションは、特定の点におけるすべての相互作用フィーチャのグループ全体を戻すので、他のどの(ルールに適合する、またはしない)フィーチャが指定の相互作用点に加わっているかに応じて、カスタマイズした接続フィーチャを作成する場合に役立ちます。(「NFEルール」のルール・デシジョン・ハンドラの説明を参照してください。)

次の例では、指定された線-点ルールに適合する相互作用グループを取得します。

DECLARE
  model_id        NUMBER := 1;
  lp_rule_id      NUMBER := 1;
  inter_grps          SDO_INTERACTION_ARRAY;
BEGIN
 inter_grps := sdo_nfe.get_interaction_groups( model_id, 
END;
/

7.15 SDO_NFE.GET_LINES_MATCH_LP_RULE

構文

SDO_NFE.GET_LINES_MATCH_LP_RULE(
     model_id    IN SDO_NUMBER,
     lp_rule_id  IN NUMBER,
     lines       IN SDO_INTERACT_LINE_FEAT_ARRAY,
     ) RETURN DBMS_SQL.NUMBER_TABLE;

説明

一連の線フィーチャが指定されると、線-点接続性ルールに合致する線フィーチャのグループを計算します。線-点ルールに合致する入力配列内の線の索引とともに、DBMS_SQL.NUMBER_TABLEオブジェクトを戻します。

パラメータ

model_id

NFEモデルの識別子。

lp_rule_id
線-点接続性ルールの識別子。LINE_POINT_RULE表に存在する必要があります。
lines
検索が実行される線フィーチャの配列。(SDO_INTERACT_LINE_FEAT_ARRAY型の詳細は、「NFE接続性ルールに使用するデータ型」を参照してください。)

使用上の注意

このファンクションは主に、特定の接続性ルールに合致した線フィーチャもあれば、合致しなかったものもあるといった線フィーチャの混成グループを戻すSDO_NFE.GET_INTERACTION_GROUPSファンクションの後に使用します。

次の例では、線-点接続性ルールに適合する線を相互作用グループから検出します。

DECLARE
  model_id    NUMBER := 1;
  lp_rule_id  NUMBER := 1;
  lines       SDO_INTERACT_LINE_FEAT_ARRAY;
  match_lines dbms_sql.NUMBER_TABLE;
  inter_grps  SDO_INTERACTION_ARRAY;
BEGIN
  -- find interaction groups
  inter_grps := sdo_nfe.get_interaction_groups( model_id, sdo_nfe.RULE_TYPE_LINE_LINE, 1 );

  FOR i IN 1..inter_grps.count loop
    lines := inter_grps(i).lines;
    match_lines := sdo_nfe.get_lines_match_lp_rule( model_id, lp_rule_id, lines );
  END loop;

END;
/

7.16 SDO_NFE.GET_LL_CONN_INTERSECTIONS

構文

SDO_NFE.GET_LL_CONN_INTERSECTIONS(
     model_id               IN SDO_NUMBER,
     ll_rule_id             IN NUMBER,
     interaction_grp        IN OUT SDO_INTERACTION,
     rule_lhs_lines_indexes IN DBMS_SQL.NUMBER_TABLE,
     rule_rhs_lines_indexes IN DBMS_SQL.NUMBER_TABLE,
     rule_points_indexes    IN DBMS_SQL.NUMBER_TABLE,
     ) RETURN SDO_INTERACTION_ARRAY;

説明

相互作用フィーチャ(線または点)のグループが指定されると、このファンクションは、指定された線-線接続性ルールに応じて接続可能なフィーチャのサブグループを計算し、接続可能なフィーチャ・グループのセットを戻します。

パラメータ

model_id

NFEモデルの識別子。

ll_rule_id
線-線接続性ルールの識別子。LINE_LINE_RULE表に存在する必要があります。
interaction_grp
相互作用フィーチャのグループ。(SDO_INTERACTION型の詳細は、「NFE接続性ルールに使用するデータ型」を参照してください。)
rule_lhs_lines_indexes
相互作用グループ内の線フィーチャで、線-線ルールの左辺に合致する線の索引。
rule_rhs_lines_indexes
相互作用グループ内の線フィーチャで、線-線ルールの右辺に合致する線の索引。
rule_points_indexes
相互作用グループ内の点フィーチャで、線-線ルールでの点フィーチャの指定に合致する点の索引。このような点は、接続可能グールの構造に考慮される点です。

使用上の注意

このファンクションは、SDO_INTERACTION_ARRAYオブジェクトを戻します。(SDO_INTERACTION_ARRAY型の詳細は、「NFE接続性ルールに使用するデータ型」を参照してください。)

LHS線およびRHS線の索引は、SDO_NFE.CLASSIFY_LINES_BY_SIDEプロシージャを使用して取得できます。点の索引は、SDO_NFE.GET_POINTS_MATCH_LP_RULEファンクションを使用して取得できます。

このファンクションは、線-線ルールが(Java APIを使用して)モデルに作成されると、デフォルトでルール・デシジョン・ハンドラ表に登録されます。ただし、このファンクションは、接続可能なフィーチャのグループをカスタマイズされた方法で計算する他のユーザー・ファンクションで置き換えることができます。接続(ルール・デシジョン・ハンドラ)のカスタマイズの詳細は、「NFEルール」のルール・デシジョン・ハンドラの説明を参照してください。

次の例では、指定された線-線ルールに合致する相互作用グループごとに接続可能なフィーチャ・グループのセットを取得します。

DECLARE
  model_id    NUMBER := 1;
  ll_rule_id  NUMBER := 1;
  rule_lhs_lines_indexes  dbms_sql.NUMBER_TABLE;
  rule_rhs_lines_indexes  dbms_sql.NUMBER_TABLE;
  rule_points_indexes     dbms_sql.NUMBER_TABLE;
  conn_interacs           SDO_INTERACTION_ARRAY;
  inter_grps              SDO_INTERACTION_ARRAY;
BEGIN 
-- Get the groups of interacting features that meet the L-L Rule in the model
  inter_grps := sdo_nfe.get_interaction_groups( model_id, sdo_nfe.RULE_TYPE_LINE_LINE, ll_rule_id );
  FOR i IN 1..inter_grps.count loop
    -- Classify the line features by side in the L-L rule (LHS, RHS).
    sdo_nfe.classify_lines_by_side( model_id, ll_rule_id, inter_grps(i).lines, rule_lhs_lines_indexes, rule_rhs_lines_indexes );
    -- Get the specific point features that match the L-L rule.
    rule_points_indexes := sdo_nfe.get_points_match_lp_rule( model_id,  1, inter_grps(i).points );
    -- Get the group of features that can be connected according the L-L rule.
    conn_interacs := sdo_nfe.get_ll_conn_intersections( model_id, ll_rule_id, inter_grps(i), rule_lhs_lines_indexes, rule_rhs_lines_indexes, rule_points_indexes);
  END loop;
END; 
/

7.17 SDO_NFE.GET_LP_CONN_INTERSECTIONS

構文

SDO_NFE.GET_LP_CONN_INTERSECTIONS(
     model_id               IN SDO_NUMBER,
     lp_rule_id             IN NUMBER,
     interaction_grp        IN OUT SDO_INTERACTION,
     rule_lhs_lines_indexes IN DBMS_SQL.NUMBER_TABLE,
     rule_rhs_lines_indexes IN DBMS_SQL.NUMBER_TABLE,
     rule_points_indexes    IN DBMS_SQL.NUMBER_TABLE,
     ) RETURN SDO_INTERACTION_ARRAY;

説明

相互作用フィーチャ(線または点)のグループが指定されると、このファンクションは、指定された線-点接続性ルールに応じて接続可能なフィーチャのサブグループを計算し、接続可能なフィーチャ・グループのセットを戻します。

パラメータ

model_id

NFEモデルの識別子。

lp_rule_id
線-点接続性ルールの識別子。LINE_POINT_RULE表に存在する必要があります。
interaction_grp
相互作用フィーチャのグループ。(SDO_INTERACTION型の詳細は、「NFE接続性ルールに使用するデータ型」を参照してください。)
rule_lhs_lines_indexes
相互作用グループ内の線フィーチャで、線-点ルールの左辺に合致する線の索引。
rule_rhs_lines_indexes
相互作用グループ内の線フィーチャで、線-点ルールの右辺に合致する線の索引。
rule_points_indexes
相互作用グループ内の点フィーチャで、線-点ルールでの点フィーチャの指定に合致する点の索引。このような点は、接続可能グールの構造に考慮される点です。

使用上の注意

このファンクションは、SDO_INTERACTION_ARRAYオブジェクトを戻します。(SDO_INTERACTION_ARRAY型の詳細は、「NFE接続性ルールに使用するデータ型」を参照してください。)

LHS線およびRHS線の索引は、SDO_NFE.CLASSIFY_LINES_BY_SIDEプロシージャを使用して取得できます。点の索引は、SDO_NFE.GET_POINTS_MATCH_LP_RULEファンクションを使用して取得できます。

このファンクションは、線-点ルールが(Java APIを使用して)モデルに作成されると、デフォルトでルール・デシジョン・ハンドラ表に登録されます。ただし、このファンクションは、接続可能なフィーチャのグループをカスタマイズされた方法で計算する他のユーザー・ファンクションで置き換えることができます。接続(ルール・デシジョン・ハンドラ)のカスタマイズの詳細は、「NFEルール」のルール・デシジョン・ハンドラの説明を参照してください。

次の例では、相互作用グループごとに指定された線-点ルールに応じて接続可能なフィーチャのグループを取得します。

DECLARE
  model_id        NUMBER := 1;
  lp_rule_id      NUMBER := 1;
  rule_lines_indexes  dbms_sql.NUMBER_TABLE;
  rule_points_indexes dbms_sql.NUMBER_TABLE;
  conn_interacs       SDO_INTERACTION_ARRAY;
  inter_grps          SDO_INTERACTION_ARRAY;
BEGIN
  -- Get the groups of interacting features that meet the L-P Rule in the model
  inter_grps := sdo_nfe.get_interaction_groups( model_id, sdo_nfe.RULE_TYPE_LINE_POINT, lp_rule_id );

  -- For each group:
  FOR i IN 1..inter_grps.count loop
    -- Get the specific line features that match the L-P rule.
    rule_lines_indexes  := sdo_nfe.get_lines_match_lp_rule( model_id, lp_rule_id, inter_grps(i).lines );

    -- Get the specific point features that match the L-P rule.
    rule_points_indexes := sdo_nfe.get_points_match_lp_rule( model_id,  lp_rule_id, inter_grps(i).points );

    -- Get the group of features that can be connected according the L-P rule.
    conn_interacs := sdo_nfe.get_lp_conn_intersections( model_id, lp_rule_id, inter_grps(i), rule_lines_indexes, rule_points_indexes ); 
  END loop;
END;
/ 

7.18 SDO_NFE.GET_MODEL_SEQUENCE_NAME

構文

SDO_NFE.GET_MODEL_SEQUENCE_NAME(
     model_id  IN SDO_NUMBER,
     tab_name  IN VARCHAR2
     ) RETURN VARCHAR2;

説明

指定されたモデルの表の順序名を戻します。

パラメータ

model_id
NFEモデルの識別子。
tab_name
モデルの表名。

使用上の注意

表名はTABLE_REG_TAB表に存在する必要があり、その順序の名前はSEQUENCE_REG_TAB表に存在する必要があります。SDO_NFE.CREATE_MODEL_STRUCTUREを使用して新しいモデルを作成すると、モデルの表および順序はすべて適切なビューおよび表に自動的に登録されます。SDO_NFE.CREATE_MODEL_SEQUENCEを実行すると、モデルの表の順序が登録されます。

次の例では、IDが1のNFEモデルのフィーチャ・クラスを格納している表に定義された順序名を取得します。

SELECT SDO_NFE.GET_MODEL_SEQUENCE_NAME(1, sdo_nfe.get_model_table_name(1, SDO_NFE.FT_CLASS));

7.19 SDO_NFE.GET_MODEL_TABLE_NAME

構文

SDO_NFE.GET_MODEL_TABLE_NAME(
     model_id    IN SDO_NUMBER,
     table_type  IN VARCHAR2
     ) RETURN VARCHAR2;

説明

NFEモデルについて指定されたタイプの表の名前を戻します。

パラメータ

model_id
NFEモデルの識別子。
table_type
名前が戻される表のタイプ。たとえば、フィーチャ・クラス表の場合、値はSDO_NFE.FT_CLASSです。

使用上の注意

表名はTABLE_REG_TAB表に存在する必要があり、その順序の名前はSEQUENCE_REG_TAB表に存在する必要があります。SDO_NFE.CREATE_MODEL_STRUCTUREを使用して新しいモデルを作成すると、モデルのすべて表および順序の名前は適切なビューおよび表に自動的に登録されます。

次の例では、IDが1のNFEモデルのフィーチャ・クラスを格納している表の名前を取得します。

SELECT SDO_NFE.GET_MODEL_TABLE_NAME(1, SDO_NFE.FT_CLASS);

7.20 SDO_NFE.GET_MODEL_UNDERLYING_NETWORK

構文

SDO_NFE.GET_MODEL_UNDERLYING_NETWORK(
     model_id    IN SDO_NUMBER
     ) RETURN VARCHAR2;

説明

NFEモデルに関連付けられているネットワークの名前を戻します。

パラメータ

model_id

NFEモデルの識別子。

使用上の注意

ネットワークは、作成処理中に、SDO_NFE.FROM_SCRATCHモードのモデルにSDO_NFE.CREATE_MODEL_UNDERLYING_NETを使用するか、またはSDO_NFE.OVER_EXIST_NETWORKモードのモデルにSDO_NFE.SET_MODEL_UNDERLYING_NETWORKを使用すると、NFEモデルに関連付けられます。

次の例では、既存のNFEモデルに関連付けられた基礎となるネットワークを取得します。

SELECT SDO_NFE.get_model_underlying_network(1) FROM DUAL;

7.21 SDO_NFE.GET_NEXT_SEQUENCE_VALUE

構文

SDO_NFE.GET_NEXT_SEQUENCE_VALUE(
     sequence_name        IN VARCHAR2,
     seq_value_increment  IN NUMBER
     ) RETURN NUMBER;

説明

2番目のパラメータの値を指定された順序の現行値に加算した結果となる値を戻します。

パラメータ

sequence_name
順序の名前。
seq_value_increment
sequence_nameの現行値に加算される整数値。(指定された値が負である場合、現行値から減算されます。)

使用上の注意

このファンクションは、指定された順序のINCREMENT BY値またはその順序の現行値を変更しません。

このファンクションを使用して、一連の連続した順序番号を管理できます。

次の例では、MY_SEQという名前の順序の現行値に10を加算した結果となる値を戻します。

SELECT SDO_NFE.GET_NEXT_SEQUENCE_VALUE('my_seq', 10) FROM DUAL;

MY_SEQの現行値が100の場合、この例では値110 (100 + 10)を戻します。

7.22 SDO_NFE.GET_POINTS_MATCH_LP_RULE

構文

SDO_NFE.GET_POINTS_MATCH_LP_RULE(
     model_id    IN SDO_NUMBER,
     lp_rule_id  IN NUMBER,
     points      IN SDO_INTERACT_POINT_FEAT_ARRAY,
     ) RETURN DBMS_SQL.NUMBER_TABLE;

説明

一連の点フィーチャが指定されると、このファンクションは、線-点接続性ルールに合致する点フィーチャのグループを計算します。線-点ルールに合致する入力配列内の点の索引とともに、DBMS_SQL.NUMBER_TABLEオブジェクトを戻します。

パラメータ

model_id

NFEモデルの識別子。

lp_rule_id
線-点接続性ルールの識別子。LINE_POINT_RULE表に存在する必要があります。
points
検索が実行される点フィーチャの配列。(SDO_INTERACT_POINT_FEAT_ARRAY型の詳細は、「NFE接続性ルールに使用するデータ型」を参照してください。)

使用上の注意

このファンクションは主に、特定の接続性ルールに合致した線フィーチャもあれば、合致しなかったものもあるといった線フィーチャの混成グループを戻すSDO_NFE.GET_INTERACTION_GROUPSファンクションの後に使用します。

次の例では、線-点ルールに合致する特定の点フィーチャを取得します。

DECLARE
  model_id        NUMBER := 1;
  lp_rule_id      NUMBER := 1;
  rule_points_indexes dbms_sql.NUMBER_TABLE;
  inter_grps          SDO_INTERACTION_ARRAY;
BEGIN
  -- Get the groups of interacting features that meet the L-P Rule in the model
  inter_grps := sdo_nfe.get_interaction_groups( model_id, sdo_nfe.RULE_TYPE_LINE_POINT, lp_rule_id );

  -- For each group:
  FOR i IN 1..inter_grps.count loop
    -- Get the specific point features that match the L-P rule.
    rule_points_indexes := sdo_nfe.get_points_match_lp_rule( model_id,  lp_rule_id, inter_grps(i).points );
  END loop;
END;
/

7.23 SDO_NFE.IMPORT_NETWORK

構文

SDO_NFE.IMPORT_NETWORK(
     model_id          IN NUMBER,
     model_id          IN NUMBER, 
     network_from      IN VARCHAR2,
     line_ft_layer_id  IN NUMBER, 
     line_ft_class_id  IN NUMBER, 
     point_ft_layer_id IN NUMBER, 
     point_ft_class_id IN NUMBER);

説明

既存のネットワークからNFEモデル(SDO_NFE.FROM_SCRATCHモードで作成)の基礎となるネットワークに、線フィーチャ・クラス(line_ft_class_id)の線フィーチャ内の各リンクおよび点フィーチャ・クラス(point_ft_class_id)の点フィーチャ内の各ノードを変換して、ネットワーク要素をコピーします。

パラメータ

model_id
NFEモデルの識別子。
network_from
インポートするネットワークの名前。
line_ft_layer_id
新しく作成する線フィーチャ(リンク要素から作成)のフィーチャ・レイヤーID。
line_ft_class_id
新しく作成する線フィーチャのフィーチャ・クラスID。
point_ft_layer_id
新しく作成する点フィーチャ(ノード要素から作成)のフィーチャ・レイヤーID。
point_ft_class_id
新しく作成する点フィーチャのフィーチャ・クラスID。

使用上の注意

線フィーチャおよび点フィーチャのフィーチャ・クラスはNFEモデルにすでに存在している必要があります。

次の例では、NET01という名前のネットワークをID 1で識別されるモデルにインポートします。線フィーチャおよび点フィーチャは、リンクおよびノードのそれぞれにフィーチャ・レイヤーの10と11およびフィーチャ・クラスの5と6を使用して作成されます。

EXECUTE SDO_NFE.import_network(1, ‘NET01’, 10, 5, 11, 6);

7.24 SDO_NFE.SET_MODEL_UNDERLYING_NETWORK

構文

SDO_NFE.SET_MODEL_UNDERLYING_NETWORK(
     model_id     IN SDO_NUMBER
     network_name IN VARCHAR2);

説明

NFEモデルの基礎となるネットワークとしてネットワークを関連付けます。(モデルはSDO_NFE.OVER_EXIST_NETWORKモードで作成しておく必要があります。)

パラメータ

model_id

NFEモデルの識別子。

network_name
モデルに関連付けるネットワークの名前。

使用上の注意

SDO_NFE.GET_MODEL_UNDERLYING_NETWORKファンクションも参照してください。

次に例を示します。

EXECUTE ... ;