優先度によるノード削減ルールの操作
優先度によるノード削減ルールを構成する前に、ルールの実行に必要なノード スケマティック フィーチャクラスがスケマティック データセットにすでに存在し、ルールが指定されるスケマティック ダイアグラム テンプレートに関連付けられていることを確認する必要があります。
優先度によるノード削減のルール構成について説明する前に、このルールに固有の次の用語についても知っておく必要があります。
- 削減ノードは、結果として生じる最終的なダイアグラムには表示されなくなるノードです。
- ターゲット ノードは、削減ノードが削減される前に接続されていたノードで、削減後にネットワーク トポロジが保持されるようにこれらの削減ノードに接続されていたリンクを再接続するために使用されます。
- N 個の接続を持つ削減ノードの場合、ターゲット ノードを接続するために(N - 1)個のリンクが作成されます。これらのリンクをスーパー スパンと呼びます。削減ノードをターゲット ノードに接続していたリンクは、生成されるダイアグラムで削減されるリンクです。このリンクは物理的にダイアグラムに表示されることはありませんが、これに関連するプロパティは、(N - 1)個のスーパー スパン リンクのそれぞれでレポートされます。
優先度によるノード削減ルールでは、特定のノード スケマティック フィーチャクラスによって実装されるすべてのノードまたは特定のノードが削除され、これらの削除されたノードを接続していたリンクが、トポロジが保持されるようにターゲット ノードに再接続された後に、スケマティック ダイアグラムを生成できます。
削減ノードは、結果として生じる最終的なダイアグラムには含まれない、特定のノード スケマティック フィーチャクラスによって実装されるノードです。指定されたノード スケマティック フィーチャクラスによって実装されたすべてのノードを削減することも、以下に従って除外されたノードのみを削減することもできます。
- そのノード スケマティック フィーチャクラスに関連付けられた実際のフィーチャクラス/オブジェクト テーブルで機能する SQL フィルタ
- 接続数に基づく制約(つまり、これらのノードを接続するリンクの数に基づく制約)
- 削減するノードを決定するために特に作成された拡張条件
- 削減されるノードのスケマティック リンクで期待される特定のスケマティック属性、またはノードを削減候補として接続するリンクを実装するリンク スケマティック フィーチャクラスに関連付けられた実際のフィーチャクラスで期待されるフィールド
たとえば、ルールでは以下のものを削減できます。
- 指定されたスケマティック フィーチャクラスに対して 2 つの接続があるノード
- このスケマティック フィーチャクラスによって実装され、特定のフィールド値に一致するノード
- 接続されるリンクが拡張条件によって検出された特定のプロパティ値に一致するノード
- 関連付けられた実際のフィーチャに対して接続されるすべてのリンクが同じ特定の属性を持ち、その属性が関連付けられたこれらすべてのフィーチャに対して同じ値を持つノード
- これら 4 種類の条件を同時に確認するノード
以下の手順は、優先度によるノード削減ルールがすでに [ルール] タブに追加されている場合に [ルール] タブ ツールバーの [ルール プロパティ] ボタンをクリックすると表示される [優先度によるノード削減] ルール プロパティ ページの構成に重点を置いています。[ルール] タブに新しいルール アイテムを追加したり、[ルール プロパティ] ページを表示する方法については、「スケマティック ダイアグラム テンプレートでのスケマティック ルールの指定」をご参照ください。
[ルール] タブに追加されたばかりの優先度によるノード削減ルールの場合、[ルール] タブ ツールバーの [ルール プロパティ] ボタンをクリックすることにより、次のように [ルール プロパティ] ダイアログ ボックスが開かれます。
-
[説明] フィールドにルールの説明を入力します。
この説明文字列は、関連するルール アイテムの [ルール] タブに表示されます。また、スケマティック ダイアグラムの生成および更新の間にも表示され、このルールが実行されていることをユーザに通知します。
-
[削減するノード スケマティック フィーチャクラスを選択] ドロップダウン リストから、削減するノード スケマティック フィーチャクラスの名前を選択します。
このドロップダウン リストには、スケマティック ダイアグラム テンプレートに関連付けられているすべてのノード スケマティック フィーチャクラスが表示されます。
ルール構成のこの手順において、選択したノード スケマティック フィーチャクラスに基づくすべてのスケマティック ノードが削減対象として構成されます。
-
削減ノードに接続するリンク上の頂点が、ノードの削減後も保持されるようにするには、[頂点を保持する] チェックボックスをオンにします。
このボックスがオンになっている場合、削減されたノードがあった場所にも頂点が表示されます。
注意:このオプションは、レイアウトされていないダイアグラム、スケマティック フィーチャがその地理座標で表示するダイアグラム、およびスケマティック リンクが初期状態の頂点で表示されるダイアグラムで役に立ちます。ネットワーク ルートのノード削減ルールの構成後にレイアウトおよび更新されるダイアグラムの場合、保存されたレイアウトを保持するため、削減されたノードの場所に頂点は追加されません。
-
特定のノードのみを削減するよう、指定したノード スケマティック フィーチャクラスで SQL フィルタを指定する場合は、次の操作を実行します。
-
[関連するフィーチャ/オブジェクト クラスに SQL フィルタを追加] エリアの右にある [編集] ボタンをクリックします。
[SQL クエリ] ダイアログ ボックスが表示されます。
-
必要な SQL 文を作成します。
フィルタリングは、指定されたノード スケマティック フィーチャクラスに関連付けられているフィーチャクラスまたはオブジェクト クラスに格納されるフィールドで行われます。
-
[OK] をクリックします。
[SQL クエリ] ダイアログ ボックスが閉じられ、指定した SQL フィルタが [関連するフィーチャ/オブジェクト クラスに SQL フィルタを追加] エリアに自動的に表示されます。
指定した SQL フィルタが、削減候補となるスケマティック ノードのサブセットの決定に使用されます。SQL フィルタを確認しない場合、ルール実行時に削減は行われません。
-
[関連するフィーチャ/オブジェクト クラスに SQL フィルタを追加] エリアの右にある [編集] ボタンをクリックします。
-
[ノードの接続制限] セクションでは、接続されるリンクの数に応じて、スケマティック ノードの削減候補のすべてを削減するか、一部のみを削減するかを指定します。
- スケマティック ノードのすべての削減候補を削減する場合は、[接続制限なし] を選択します。
- スケマティック ノードの削減候補を接続数、つまり、このノードを接続するリンクの数に従って削減する場合は、[接続制限] を選択します。
- 接続されるリンクのないすべてのノードを削減する場合は、[接続数 0 のノードを削減] ボックスをオンにします。
- 接続されるリンクが 1 つだけのノードをすべて削減する場合は、[接続数 1 のノードを削減] ボックスをオンにします。
- 接続されるリンクが 2 つだけのノードをすべて削減する場合は、[接続数 2 のノードを削減] ボックスをオンにします。
- 接続されるリンクが少なくとも 3 つあるノードをすべて削減する場合は、[接続数 2 より大きいノードを削減] ボックスをオンにします。
注意:複数のボックスをオンにすることができます。たとえば、[接続数 0 のノードを削減] と [接続数 2 のノードを削減] の両方のボックスをオンにすると、同じルールの実行で、接続されていないノードと接続されるリンクが 2 つのノードを削除できます。
-
削減するノードを決定するには、削減されるノードのスケマティック リンクで構成されたスケマティック属性、または削減されるノードのスケマティック リンクに関連付けられている実際のフィーチャ/オブジェクトに格納されるフィールドに基づく制約を指定することもできます。この制約は、[接続リンク属性] セクションで指定する必要があります。
- [属性名を使用] チェックボックスをオンにします。
-
使用するスケマティック属性またはフィールドの名前を入力します。
ノードの削減候補に接続する各スケマティック リンクに対し、ルールはまずスケマティック リンクでこの名前を持つスケマティック属性を検索します。この名前のスケマティック属性が検出されない場合、ルールはそのスケマティック リンクに関連付けられた GIS フィーチャで同じ名前のフィールドを検索します。これで、検出された属性またはフィールドが接続されているすべてのリンクに対して同じ値で存在する場合にのみ、ノードが削減されます。
-
特定の拡張条件を指定して削減候補のノードを除外することもできます。このような条件を使用するには、[拡張条件] セクションでパラメータを構成する必要があります。
- [拡張条件の使用] チェックボックスをオンにします。
- ドロップダウン リストから必要な拡張条件を選択します。
優先度によるノード削減ルールの拡張条件は、esriSchematic.ISchematicNodeReductionExtended インタフェースを実装するコンポーネントです。
注意:[優先度によるノード削減ルール属性] ダイアログ ボックスの [拡張条件の使用] ドロップダウン リストおよび [拡張条件の使用] チェックボックスは、コンピュータにカスタムの拡張削減条件が登録されていない場合には使用できません。
拡張条件コンポーネントは、その他すべての指定された削減オプションに従って、ノードの削減候補で動作します。これによって、ルールの実行後に各ノードが最終的に削減されるかどうかが決まります。このコンポーネントでは、削減ノードに接続されていたすべてのリンクの再接続に使用されるターゲット ノードを決定することもできます。
-
指定したノードが削減された後で、ネットワークのトポロジを保持する方法を定義します。つまり、削減ノードに接続されていたリンクの再接続に使用されるターゲット ノードを指定します。
- 削減ノードに接続している最も近いノードをターゲット ノードにする場合は、[最近隣のノードを選択] を選択します。この場合、ターゲットの検出は、削減ノードとそれに接続されるノードとの距離のみで決まります。最近隣のノードがターゲット ノードになります。そのプロセスは、このターゲット ノードが基づいているスケマティック フィーチャクラスとは無関係です。注意:
ノード間の距離は、その地理的位置に従って計算されます。新しい優先度によるノード削減ルールを指定した後にダイアグラムを更新する場合、更新前のダイアグラムに表示されるノードの位置は地理的位置ではない場合があることに留意してください。この場合、スケマティック ダイアグラムに含まれるノードがそれらの地理座標で表示されないと、検出されるターゲットは最近隣のノードとして表示されません。
- 削減ノードに接続されていたリンクを接続するターゲット ノードを、ノード スケマティック フィーチャクラスに設定された優先度に従って検出する場合は、[優先度の高いノードを選択] を選択します。
この場合、削減ノードに接続されていたノードごとに、削減ルールが [対象ノード優先度オプション] セクションで指定されたオプションを解析してから、正しいターゲット ノードを検出します。
- 削減ノードを接続するすべてのノードのうち、優先度が最も高いスケマティック フィーチャクラスに 1 つのノードだけが属している場合、そのノードがターゲット ノードになります。
- 削減ノードを接続するすべてのノードの中に、優先度が最も高いスケマティック フィーチャクラスに属しているノードがない場合、優先度が 2 番目のスケマティック フィーチャクラスに属している接続されたノードがあるかチェックされ、ノードが検出されるまで優先度を 1 つずつ下げてチェックが行われます。
- 削減ノードを接続するすべてのノードのうち、優先度が最も高いスケマティック フィーチャクラスに複数のノードが属している場合、[多重選択の解決法] サブセクションに指定されているオプションの設定に従ってターゲット ノードが検出されます。
[対象ノード優先度オプション] セクションのパラメータは高度なパラメータです。
- [削減優先度順のスケマティック フィーチャクラス リスト] エリアには、ダイアグラム テンプレートに関連付けられたすべてのスケマティック フィーチャクラスが、優先度順、つまり優先度の最も高いスケマティック フィーチャクラスから優先度の最も低いスケマティック フィーチャクラスの順にリストされます。スケマティック フィーチャクラスの優先度を変更するには、リスト内でスケマティック フィーチャクラスをクリックして別の場所にドラッグ アンド ドロップします。注意:
リンク スケマティック フィーチャクラスの優先度が高い場合、削減ノードに接続されているノードではなく、削減ノードを接続しているリンクが考慮されます。ターゲット ノードは、削減ノードに接続するリンク スケマティック フィーチャクラスによって実装されるリンクの原点ノードまたは端点ノードです。
- [多重選択の解決法] サブセクションでは、いくつかのターゲット ノード候補で競合が発生した場合、つまり優先度が最も高いスケマティック フィーチャクラスに複数のノードが属している場合に、ターゲット ノードを選択する方法を指定することができます。
[優先度が同じ 2 つのノードが競合した場合、より近いノードを選択する] チェックボックスをオンにすると、[ノードが競合する場合、以下のチェックボックスで指定したスケマティック フィーチャクラスに対して、より近いノードが選択されます。] セクションで競合するこれらのノードに関連するスケマティック フィーチャクラスがオンになっていれば、削減ノードに最も近いノードがこのターゲット ノードになります。
注意:競合するノードを実装するスケマティック フィーチャクラスが [ノードが競合する場合、以下のチェックボックスで指定したスケマティック フィーチャクラスに対して、より近いノードが選択されます。] セクションでオンになっていない場合、その削減対象のノードは削減されません。
たとえば、優先度が最も高いスケマティック フィーチャクラス X の 2 つのノードが、削減される同じノードに接続している場合、これらの X ノードはどちらもターゲット ノードの候補となります。この場合、[優先度が同じ 2 つのノードが競合した場合、より近いノードを選択する] チェックボックスがオンで、[ノードが競合する場合、以下のチェックボックスで指定したスケマティック フィーチャクラスに対して、より近いノードが選択されます。] リストで X 関連のスケマティック フィーチャクラスのチェックボックスもオンであれば、削減ノードに最も近い X ノードがターゲット ノードになります。[優先度が同じ 2 つのノードが競合した場合、より近いノードを選択する] オプションがオンであっても、[ノードが競合する場合、以下のチェックボックスで指定したスケマティック フィーチャクラスに対して、より近いノードが選択されます。] リストで X 関連のスケマティック フィーチャクラスのチェックボックスがオンでなければ、優先度による削減ルールでは、ターゲット ノードとなる X ノード候補の競合の解決を試みず、削減対象のノードは削減されません。
- 削減ノードに接続している最も近いノードをターゲット ノードにする場合は、[最近隣のノードを選択] を選択します。この場合、ターゲットの検出は、削減ノードとそれに接続されるノードとの距離のみで決まります。最近隣のノードがターゲット ノードになります。そのプロセスは、このターゲット ノードが基づいているスケマティック フィーチャクラスとは無関係です。
- [OK] をクリックして [ルール プロパティ] ダイアログ ボックスを閉じます。