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