5.8 ネットワーク・フィーチャ編集(NFE)を使用したフィーチャ・モデリング
ネットワーク・フィーチャ編集(NFE)を使用すると、NFEモデルを作成および管理できます。NFEモデルにより、フィーチャ・モデリング機能が拡張され、Java SwingコンポーネントおよびPL/SQL APIを使用してフィーチャをビジュアル化し、操作できるようになります。
NFEを使用すると、既存のネットワークの上にフィーチャを定義できます。たとえば、レストランやホテルをフィーチャとして道路ネットワーク上に定義できます。また、フィーチャのみで構成され(ネットワーク要素はユーザーに非表示)、接続性をルールによって制限できるモデルを定義することもできます。このような接続性の制限は通常、ライフライン・ネットワーク(電気、水道、ガスのネットワークなど)で、ネットワーク装置をモデル化して接続性を制限するために使用します。接続性の制限の使用例の1つとして、電気ネットワークにおける高圧装置と低圧装置間の接続回避があります
NFEには、フィーチャ・クラスやルールといった概念が含まれており、これらはモデルに組み込むことができます。メタデータ表とメタデータ・ビューは、NFEモデルを作成して使用すると、自動的に作成および管理されます。
NFEフィーチャの使用に必要な最小権限は、CREATE TABLE
、CREATE VIEW
、CREATE SEQUENCE
およびCREATE SESSION
です。これらの権限は、特にNFEに関連しない操作を実行するのに必要となる他の権限に付加されます。
5.8.1 NFEモデルの作成モード
ネットワーク・フィーチャ編集(NFE)モデルは、"最初から"と"既存のネットワーク・モデルの上に"という2つのモードのいずれかで作成できます。
-
最初から: このモードでは、NFEモデルの作成時にネットワークが自動的に生成され、それがモデルに割り当てられます。フィーチャのみを使用し、基礎となるネットワーク要素は表示されません。このモードでは、どの種類のフィーチャ(フィーチャ・クラス)が他の各種フィーチャと接続できるかを文が指定するルールがサポートされます。このモードの典型的な使用方法の1つは、ネットワーク内の特定のコンポーネント間で接続を制限する必要があるライフライン・ネットワーク(電気や水道のネットワークなど)のモデル化です。
-
既存のネットワーク・モデルの上に: このモードでは、NFEモデルの作成時に既存のネットワークが使用されます。ネットワークはユーザーに表示され、ネットワーク要素にフィーチャを追加できます。このモードでは、ルールはサポートされません。
フィーチャ・クラス関係表には、フィーチャとフィーチャ・クラス間の関係(どのフィーチャがどのフィーチャ・クラスに属するか)に関する情報が含まれます。
5.8.2 NFEフィーチャ・クラス
フィーチャ・クラスは、属性値、形状および形式に基づいたフィーチャのグループを表します。各フィーチャ・クラスは1つのフィーチャ・レイヤーにしか属さないため、フィーチャ・クラス内のフィーチャのグループも同じフィーチャ・レイヤーに属します。
たとえば、電気ネットワークに変圧器と導体という2つのフィーチャ・レイヤーがあるとします。これらのフィーチャ・レイヤーにはそれぞれ、次の2つのフィーチャ・クラスを含めることができます。
-
変圧器フィーチャ・レイヤーには、HT変圧器(高圧変圧器)とLT変圧器(低圧変圧器)を含めることができ、各フィーチャ・タイプ内の変圧器は入力電圧、出力電圧および電圧タイプを指定しています。どちらのフィーチャ・タイプも点(形状)に関連付けられます。フィーチャ・タイプには、図で使用するためにそれぞれ異なるアイコンが関連付けられています。
-
導体フィーチャ・レイヤーには、HT導体(高圧導体)とLT導体(低圧導体)を含めることができ、各フィーチャ・タイプ内の導体は属性値を指定しています。どちらのフィーチャ・タイプも線(形状)に関連付けられます。フィーチャ・タイプには、図で使用するためにそれぞれ異なるアイコンが関連付けられています。
次の表に、フィーチャ・クラスに関連付けることができる形状と、NFEモデルに使用する作成モードに応じた要件および制約を示します。
表5-3 NFEフィーチャ・クラスの形状
形状タイプ(番号) | 形状名 | 最初から作成されるモデル | 既存のネットワークの上に作成されるモデル |
---|---|---|---|
1 | 点 | フィーチャが保持できるのは、1つのPointOnNodeフィーチャ要素のみです。 | フィーチャは、1つ以上のPointOnNodeタイプおよびPointOnLineタイプのフィーチャ要素を保持できます。 |
2 | 線 | フィーチャが保持できるのは、1つの線フィーチャ要素のみです。線では、開始点と終了点でのみ接続がサポートされます。 | フィーチャには、1つ以上の線フィーチャ要素を含めることができます。線が隣接するかどうかは問題ではありません。 |
3 | 複雑な線 | フィーチャは、複数の隣接する(接続された)線フィーチャ要素を保持できます。複雑な線では、中間点での接続がサポートされています。その場合、複雑な線は2つの線フィーチャ要素に分割されます。 | (複雑な線は、この作成モードではサポートされません。) |
4 | パス | パスを表すフィーチャです。このタイプのフィーチャ・クラスは通常、分析の実行時に使用します。 | パスを表すフィーチャです。このタイプのフィーチャ・クラスは通常、分析の実行時に使用します。 |
5.8.3 NFEルール
NFEモデルでのルールとは、フィーチャ接続に関連する制約です。ルールが使用できるのは、最初から作成されるモデルに対してのみで、既存のネットワークの上に作成されるモデルには使用できません。ルールは、カスタマイズでき、あらゆる接続制約に対応できます。
ルールは通常、カーディナリティ・ルールと接続性ルールに分けられます。
-
カーディナリティ・ルールは、特定の特性を持つ(同じフィーチャ・クラスに属する)点フィーチャに対して、点フィーチャで受け入れられる入出力接続の最大数および最小数を指定するために使用します。
-
接続性ルールは、2つのフィーチャが特定の特性(フィーチャ・レイヤー、フィーチャ・クラス、属性)をいくつか持ち、固有の相互作用がある場合に、それらを接続できるかどうかを示すのに使用します。接続性ルールは、関連するカーディナリティ・ルールによって決められたとおり、必要な対応する入出力接続のサポートに使用可能な空間が点フィーチャにあれば、点フィーチャとの接続を許可します。
接続性ルールは、NFE内のフィーチャに接続するための唯一の方法であり、常に肯定(接続を許可)であり、否定はできません。要素間に接続性ルールが存在しない場合、その要素は接続できないことを意味します。
線-点接続性ルール
線-点接続性ルールは、線フィーチャと点フィーチャが一定の方法で相互作用するときは常に、接続できることを示します。
線-点接続性ルールは、カーディナリティ・ルールとともに、次のように表現できます: "フィーチャ・クラスC1が条件P1に合致するフィーチャ・レイヤーL1の線フィーチャはいずれも、フィーチャ・クラスC2が条件P2に合致するフィーチャ・レイヤーL2の点フィーチャに接続できます。点フィーチャのカーディナリティは、X入力接続の最大数とY出力接続の最大数が許可されることを示します。"
次の表に、線-点接続性ルールの例を示します。
表5-4 線-点接続性ルールの例
線の条件 | 点の条件 | カーディナリティ | 説明 |
---|---|---|---|
導体レイヤーのHT導体クラス | 変圧器レイヤーのHT変圧器クラス | 制限なし | 任意の数の高圧導体が1つの高圧変圧器に接続できます。 |
導体レイヤーのHT導体クラス | 変圧器レイヤーのLT変圧器クラス | 入力: 制限なし、出力: 0 | 任意の数の入力高圧導体が1つの低圧変圧器に接続できますが、出力高圧導体は低圧変圧器から接続できません。
低圧変圧器は、高圧導体から低圧導体に電圧を下げます。 |
導体レイヤーのLT導体クラス | 変圧器レイヤーのLT変圧器クラス | 制限なし | 任意の数の低圧導体が1つの低圧変圧器に接続できます。 |
線-線接続性ルール
線-線接続性ルールは、2つの線フィーチャが一定の方法で相互作用するとき、特定の1つの点フィーチャを通して接続できることを示します。このルールは、線フィーチャ間で相互作用が発生したときに、接続点がまだ存在しない場合は自動的に作成するように指定することもできます。別の見方をすると、線-線ルールは同じ点フィーチャ制約を共通に持つ2つの線-点ルールであるため、そういう意味では、線-線ルールとは同じ点フィーチャ条件を持つ2つ線-点ルールのことを指します。
線-線接続性ルールの例を次のように表すことができます: "(フィーチャ・クラスC1が条件P1に合致するフィーチャ・レイヤーL1の線フィーチャ1)と(フィーチャ・クラスC2が条件P2に合致するフィーチャ・レイヤーL2の線フィーチャ2)の間で相互作用Iが真である場合、線は(点フィーチャP1)を使用して接続できます(オプション: 点フィーチャP1が存在しない場合は自動的に作成します)。"
線-線接続性ルールの左辺と右辺
線-線接続性ルールは、線フィーチャ1と線フィーチャ2という2つの線フィーチャ間の相互作用を指定します。これらの2つの線フィーチャはそれぞれ、ルールの左辺(LHS)とルールの右辺(RHS)と呼ばれます。線フィーチャ1のフィーチャはいずれもルールのLHSにあるとみなされ、線フィーチャ2のフィーチャはいずれもルールのRHSにあるとみなされます。
次の表に、ルールのLHSおよびRHSの線フィーチャ・グループを識別して、電気ネットワーク・モデルに適した線-線ルールの例を示します。表の各行は、1つの線-線ルールを表します。
表5-5 サンプルの線-線ルールのLHSとRHS
LHSの線フィーチャ・グループ | 相互作用タイプ | RHSの線フィーチャ・グループ | 共通の点 | 説明 |
---|---|---|---|---|
導体レイヤーのHT導体クラス | 終了点に接触 | 導体レイヤーのHT導体クラス | 変圧器レイヤーのHT変圧器クラス | 高圧導体は、終了点に接触すると高圧変圧器によって自動的に相互接続されます。 |
導体レイヤーのLT導体クラス | 終了点に接触 | 導体レイヤーのLT導体クラス | 変圧器レイヤーのLT変圧器クラス | 低圧導体は、終了点に接触すると低圧変圧器によって自動的に相互接続されます。 |
導体レイヤーのHT導体クラス | 終了点に接触 | 導体レイヤーのLT導体クラス | 変圧器レイヤーのLT変圧器クラス | 高圧導体は、終了点に接触すると低圧変圧器によって自動的に低圧導体に接続されます。 |
ルール・デシジョン・ハンドラ
ルールはルール・デシジョン・ハンドラを使用してカスタマイズでき、ルール・デシジョン・ハンドラは線-点ルールと線-線ルールの両方に適用できます。デシジョン・ハンドラは、相互作用において接続する必要がある要素と接続方法をユーザーが決定できるメカニズムです。
ルールの実装では常にデシジョン・ハンドラを使用してフィーチャ間の接続を管理します。NFEには、線-点ルールおよび線-線ルール用にフィーチャを接続するためのデフォルト実装が用意されています。ルールを実行すると、デフォルトのデシジョン・ハンドラの実装は、ルールに合致する要素をできるだけ多く接続しようとしますが、デフォルトで提供されるルールよりも詳細に接続を制御する必要があるシナリオも考えられ、その場合、デフォルトのデシジョン・ハンドラの実装を変更する必要があります。
水道ネットワークの例を使用して、2つのバルブが空間点でパイプと相互作用できるとします。各バルブには、4つの排出口があります。(A) 4つすべてのパイプの端が1つのバルブの4つ排出口に接続できるか、または(B) 2つのパイプの端があるバルブの向かい合う2つの排出口に接続でき、残りの2つのパイプの端は別のバルブの向かい合う2つの排出口に接続できます。デフォルトのデシジョン・ハンドラの実装は、最初の(4つすべてのパイプの端を1つのバルブに接続する)方式を試みます。しかし、2つの使用可能なバルブで4つのパイプを分散する場合は、2番目の(2つのパイプの端を1つ目のバルブに接続し、残りの2つのパイプの端を2つ目のバルブに接続する)方式を採用するカスタム・デシジョン・ハンドラを実装できます。
ルール・インスタンス
特定のルールの適用によってフィーチャが接続される場合、接続されるフィーチャのグループはルール・インスタンス(接続を許可したルールのインスタンス)と呼ばれます。ルール・インスタンスは、ルール・インスタンス表に保持されます。
ルール定義は、依存するルール・インスタンスが存在しない(既存のルール・インスタンスに依存する接続がない)場合のみ削除または変更できます
ルール・インスタンスに含まれるフィーチャ要素を削除した場合、ルール・インスタンスは自動的に削除されるとはかぎりません。フィーチャ要素の削除によって要素の数がルール・インスタンスに対する最小数(ルールのタイプに応じて異なる)を下回った場合、ルール・インスタンスは削除されます。しかし、フィーチャ要素の削除によって要素の数がルール・インスタンスに対する最小数を下回らない場合、フィーチャ要素はルール・インスタンスから削除されますが、ルール・インスタンス自体は削除されません(ただし変更されます)。
5.8.4 NFE接続性ルールに使用するデータ型
この項では、ネットワーク・フィーチャ編集(NFE)に関連する一部のSDO_NFEパッケージ・サブプログラムのパラメータおよび戻り値に使用される、次のPL/SQLデータ型について説明します。
-
SDO_INTERACT_POINT_FEAT_ARRAY
-
SDO_INTERACT_POINT_FEAT
-
SDO_INTERACT_LINE_FEAT_ARRAY
-
SDO_INTERACT_LINE_FEAT
-
SDO_INTERACTION_ARRAY
-
SDO_INTERACTION
SDO_INTERACT_POINT_FEAT_ARRAYは、VARRAY(1024) OF MDSYS.SDO_INTERACT_POINT_FEAT
として定義されます。
SDO_INTERACT_POINT_FEATは次のとおり定義されます。
FEATURE_LAYER_ID NUMBER FEATURE_ID NUMBER FEATURE_CLASS_ID NUMBER NODE_ID NUMBER NODE_GEOM SDO_GEOMETRY AVAILABLE_IN_CONN SDO_NUMBER_ARRAYSET AVAILABLE_OUT_CONN SDO_NUMBER_ARRAYSET RUNTIME_CREATED CHAR(1)
SDO_INTERACT_LINE_FEAT_ARRAYは、VARRAY(1024) OF MDSYS.SDO_INTERACT_LINE_FEAT
として定義されます。
SDO_NET_LAYER_FEATは次のとおり定義されます。
FEATURE_LAYER_ID NUMBER FEATURE_ID NUMBER FEATURE_CLASS_ID NUMBER LINK_ID NUMBER LINK_GEOM SDO_GEOMETRY START_NODE SDO_INTERACT_POINT_FEAT END_NODE SDO_INTERACT_POINT_FEAT BIDIRECTED CHAR(1) INTERSECTION_LOCATION NUMBER RULE_SIDE CHAR(1)
SDO_INTERACTION_ARRAY は、VARRAY (1048576) OF MDSYS.SDO_INTERACTION
として定義されます。
SDO_INTERACTIONは次のとおり定義されます。
LINES SDO_INTERACT_LINE_FEAT_ARRAY POINTS SDO_INTERACT_POINT_FEAT_ARRAY INTERSECT_PT_GEOM SDO_GEOMETRY