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;
/