前提条件:
リンク展開ルールを構成する前に、ルールの実行に必要なリンク スケマティック フィーチャクラスがスケマティック データセットにすでに存在し、ルールが指定されるスケマティック ダイアグラム テンプレートに関連付けられていることを確認する必要があります。
リンク展開ルールにより、特定の値に従って、指定のスケマティック フィーチャクラスにより実装されたすべてのリンクまたはいくつかの特定のリンクが複数のリンクに展開された後に、スケマティック ダイアグラムを生成することができます。これらの値は、元のリンク自体の値とすることも、ダイアグラムに含まれる他のスケマティック フィーチャからの属性値とすることもできます。
次の一般的な例では、電子データ モデルでフェーズを管理しています。
新しく作成されたリンクは、同じリンク スケマティック フィーチャクラスによって実装されるリンクです。そのスケマティック フィーチャクラスによって実装される元のすべてのリンクを展開することも、リンク スケマティック フィーチャクラスに関連付けられた実際のフィーチャクラス/オブジェクト テーブルで機能する SQL フィルターにより除外されたいくつかのリンクのみを展開することもできます。
元のリンクの展開に使用する特定の値は、次のいずれかになります。
- 指定されたリンク スケマティック フィーチャクラスに関連付けられたフィーチャ/オブジェクト クラスに格納される特定のフィールド
- 拡張条件、つまり、展開する必要のある元のリンクごとに特定の値を返すカスタム関数
元のスケマティック リンクの値が N 個の接続に対応することを示している場合、結果として生じるスケマティック ダイアグラムに N 個の展開されたリンクが表示されます。元のスケマティック リンクは保持され、同じリンク スケマティック フィーチャクラスに基づいて (N-1) 個の新しいスケマティック リンクが作成されます。元のスケマティック リンクに関連するプロパティはすべて、(N-1) 個の新しいスケマティック リンクでレポートされます。
以下の手順は、リンク展開ルールがすでに [ルール] タブに追加されている場合に、[ルール] タブ ツールバーの [ルール プロパティ] ボタンをクリックすると表示されるリンク展開ルール プロパティ ページの構成に重点を置いています。[ルール] タブに新しいルール アイテムを追加したり、[ルール プロパティ] ページを表示する方法については、「スケマティック ダイアグラム テンプレートでのスケマティック ルールの指定」をご参照ください。
[ルール] タブに追加されたばかりのリンク展開ルールの場合、[ルール] タブ ツールバーの [ルール プロパティ] ボタンをクリックすることにより、次のように [ルール プロパティ] ダイアログ ボックスが開かれます。
- [説明] フィールドにルールの説明を入力します。
この説明文字列は、関連するルール アイテムの [ルール] タブに表示されます。また、スケマティック ダイアグラムの生成および更新の間にも表示され、このルールが実行されていることをユーザーに通知します。
- ルールが連動するリンク スケマティック フィーチャクラスの名前を、[展開するリンク スケマティック フィーチャクラスを選択] ドロップダウン リストから選択します。
このドロップダウン リストには、スケマティック ダイアグラム テンプレートに関連付けられているすべてのリンク スケマティック フィーチャクラスが表示されます。
ルール構成のこの手順において、選択したスケマティック フィーチャクラスによって実装されるすべてのリンクが展開候補になります。
- 特定のリンクのみを展開するよう、指定したリンク スケマティック フィーチャクラスで SQL フィルターを指定する場合は、次の操作を実行します。
- [関連するフィーチャ/オブジェクト クラスに SQL フィルターを追加] エリアの右にある [編集] ボタンをクリックします。
[SQL クエリ] ダイアログ ボックスが表示されます。
- 必要な SQL 文を作成します。
フィルタリングは、指定されたリンク スケマティック フィーチャクラスに関連付けられているフィーチャクラスまたはオブジェクト クラスに格納されるフィールドで行われます。
- [OK] をクリックします。
[SQL クエリ] ダイアログ ボックスが閉じられ、指定した SQL フィルターが [関連するフィーチャ/オブジェクト クラスに SQL フィルターを追加] エリアに自動的に表示されます。
指定した SQL フィルターが、展開候補となるスケマティック リンクのサブセットの決定に使用されます。SQL フィルターを確認しない場合、ルール実行時に展開は行われません。
- [関連するフィーチャ/オブジェクト クラスに SQL フィルターを追加] エリアの右にある [編集] ボタンをクリックします。
- 展開するリンクが構成されたので、今度はこれらのリンクの展開方法を決定する値に注目する必要があります。この構成は、[値のソースを選択] セクションで行います。
- ルールの操作対象となる値が、指定されたリンク スケマティック フィーチャクラスに関連付けられているフィーチャクラス/オブジェクト テーブルのフィールドに格納されている場合、このフィールドを指定する必要があります。
- [フィールドを選択] オプションをオンにします。
- ドロップダウン リストから必要なフィールドを選択します。
選択したリンク スケマティック フィーチャクラスに関連付けられているフィーチャクラス/オブジェクト テーブル内のすべてのフィールドがこのリストに表示されます。
- 選択したフィールドにコード値ドメインがあり、直接フィールド値を使用する代わりにこれらのエンコードされた値で初期スケマティック リンクの展開方法を決定する場合は、[フィールドにコード値ドメインがある場合、コード名を使用] チェックボックスがオンになっていることを確認します。
- ルールの操作対象となる値が、その用途に作成された特定の拡張条件によって返される場合、次の操作を実行します。
- [拡張条件の使用] チェックボックスをオンにします。
- ドロップダウン リストから必要な拡張条件を選択します。
リンク展開ルールの拡張条件は、esriSchematic.ISchematicExpandLinksByAttributeExtended インターフェイスを実装するコンポーネントです。
拡張条件コンポーネントは、スケマティック リンクの展開候補から動作し、候補リンクごとに期待される値を返します。このような拡張条件は通常、ルールの操作対象となる値が指定されたリンク スケマティック フィーチャクラスに関連付けられたフィールドではなく別のフィーチャクラス/オブジェクト テーブルに格納されているフィールドの値である場合 (たとえば、リンク原点または端点のノード スケマティック フィーチャクラスのフィールドにこれらの値が格納されている場合) に作成されます。
- 次に、[値の形式] セクションで、ルールによって処理される値のタイプを指定する必要があります。
- 文字列値には、[文字を連結] を選択します。その場合、各値が 1 文字ずつデコードされ、この文字数によって、各初期リンクに対して作成されるリンクの数が決まります。
- 返された情報が値のリストに対応し、各値が特定の文字で区切られている場合、[区切り記号と文字 =] を選択し、右側のテキスト ゾーンで文字区切り記号を指定します。リスト内の値の数によって、展開されるリンクの数が決まります。
- 情報に 2 つの整数値が含まれ、各値が特定の文字で区切られている場合、[区切り記号と値の範囲 =] を選択し、右側のテキスト ゾーンで文字区切り記号を指定します。最初の値は 2 番目の値より小さな値にする必要があります。そうでない場合、関連するリンクは展開されません。
- 整数値には、[整数値] を選択します。この場合、これらの整数によって、各初期リンクから展開するリンクの数が決まります。
- 次に、[ターゲット属性] エリアで、作成された各リンクに関連するデコードされた値がルールによって保存されるように、スケマティック PropertySet 属性を指定できます。[名前] ボックスに、このスケマティック属性名を入力します。
たとえば、ルールが操作する値が文字の組み合わせまたは一連の文字である場合、デコードされた文字数によって作成されるリンクの数が決まり、デコードされた各文字がこれらのリンクのいずれかに対応します。デコードされた文字を保持して、展開されたリンクの特定のレイヤー プロパティの構成に使用できます。[名前] ボックスで PropertySet 属性を定義すると、後で使用できるように、デコードされた値がルールによって保存されます。
展開されたリンク スケマティック フィーチャクラスに対して、指定した属性がまだ存在しない場合、これはルール構成の整合チェック実行時に自動的に作成されます。
- ルールの操作対象となる値のないすべてのリンクを、操作結果であるダイアグラムに表示しないようにするには、[値のないリンクを表示] をオフにします。
この場合、リンク展開ルールで処理されたリンクのみがダイアグラムに表示されます。
- [OK] をクリックして [ルール プロパティ] ダイアログ ボックスを閉じます。