ダイアグラム フィーチャ間の距離が近すぎたり遠すぎたりするため、目的の縮尺でシンボルやラベルを表示できない場合、ネットワーク ダイアグラムは読みにくくなります。ダイアグラム レイアウトのセットを適用して、ネットワーク ダイアグラム内のフィーチャ間の間隔を明確化および正規化することができます。
ダイアグラム レイアウトの種類
ネットワーク ダイアグラムのコンテンツをレイアウトするためのさまざまなダイアグラム レイアウト アルゴリズムが提供されています。
レイアウトには、ツリー、調整、スケマティック、その他の 4 つのカテゴリがあります。
ツリー レイアウト
ツリー レイアウトは、ダイアグラム フィーチャを階層的に配置して、ツリー構造を表示します。ツリー レイアウトは次のとおりです。
- 主軸ツリー レイアウト
このレイアウト アルゴリズムは、入力ネットワーク ダイアグラム内のジャンクションとエッジを主軸に沿って階層的に整理し、その関連ブランチを主軸の左側、右側、または両側に配置します。
- 放射状ツリー レイアウト
このレイアウト アルゴリズムは、ダイアグラム フィーチャを階層的に整理し、指定された半径パラメーターに従って放射状ツリーに配置します。このアルゴリズムは、ジャンクションから処理を開始し、そのノードを始点として、各階層レベルを表す同心円上にサブツリーを配置します。
- スマート ツリー レイアウト
このレイアウト アルゴリズムは、ダイアグラム フィーチャを階層的に整理し、指定された方向と間隔距離に従ってスマート ツリーに配置します。
調整レイアウト
調整レイアウトには、ダイアグラム エッジを微調整する次の 3 つのダイアグラム レイアウトが含まれます。
- 角度方向レイアウト
このレイアウト アルゴリズムは、ダイアグラムのエッジを指定した整列方向に段階的に移動します。このレイアウトは、ダイアグラム エッジごとにその現在の方向を注目し、指定された方向のうち望ましい方向に最も近いものを検索し、その方向にエッジを移動します。
- 部分重複エッジ レイアウト
このレイアウト アルゴリズムは、指定されたサイズのバッファー ゾーン内にあると見なされる同一線上のエッジのセットまたは同一線上のエッジの部分 (エッジ セグメント) を検出します。
- ダイアグラム エッジ形状変更レイアウト
このレイアウトは、ネットワーク ダイアグラムのエッジに沿った頂点で簡単な操作を処理するために使用されます。次の操作ができます。
- ダイアグラム エッジに沿ってすべての頂点を削除します。
- ダイアグラム エッジに沿って一部の頂点を削減します。
- エッジ上に頂点を追加してダイアグラム エッジを直角化します。
- オーバーラップしているダイアグラム エッジを分離します。
- 直角に交差しているダイアグラム エッジを検出し、交差位置に円弧が表示されるようにエッジのジオメトリを形状変更します。
スケマティック レイアウト
スケマティック レイアウトには、複数の種類のレイアウトが含まれます。ほとんどは、ネットワーク ダイアグラム内で視覚的に近いフィーチャを、位置をできる限り維持しながら分離します (グリッド、線形配置、空間配置、エネルギー方向など)。その他のツリーの回転と圧縮の 2 つは、ダイアグラム内の空間を最適化するために使用されます。
- 圧縮レイアウト
このレイアウト アルゴリズムは、相対位置を維持しながら、ダイアグラムの中央に向かってダイアグラム フィーチャを圧縮します。このアルゴリズムは、ジャンクションのグループを構築できる距離から処理を開始し、それらのグループは、アルゴリズムの実行中に、スーパー ノードとして移動されます。
- エネルギー方向レイアウト
このレイアウト アルゴリズムは、物理的相似法を用いてエネルギーを局所的に最小化する力学系を識別して、グラフを描画します。力学系の平衡状態 (各ダイアグラム ジャンクション上で合力がゼロになる場所) が検索されます。
- グリッド レイアウト
このアルゴリズムは、セルの幅およびセルの高さのパラメーター値によって固定されたセル サイズを持つ磁気グリッドに対してダイアグラム ジャンクションの位置を決定します。
- 線形配置レイアウト
このレイアウト アルゴリズムは、視覚的に近すぎる、重なっている、または一致しているダイアグラム ジャンクションの間隔を空けます。接続されたエッジに沿ってジャンクションを移動します。エッジに沿った移動は、現在のジャンクションの相対位置およびレイアウト パラメーターによって決まります。
- メイン リング レイアウト
このレイアウト アルゴリズムは、メイン リングの周囲にダイアグラム フィーチャを配置し、メイン リングに沿って配置された各ダイアグラム ジャンクションに接続するダイアグラム フィーチャのサブセットを階層的にレイアウトします。
- 相対的な主軸レイアウト
このレイアウトでは、アクティブなダイアグラム内のネットワーク ダイアグラム フィーチャが、接続されるすべてのエッジが同じ属性値を持つ平行な直線に沿って配置されます。さらに、それらの直線からの分岐が、直線に対する分岐の方向と、初期距離に比例し、相互に相対的な距離を維持しながら、配置されます。
- ツリーの回転レイアウト
このレイアウト アルゴリズムは、指定された角度に従って、入力ネットワーク ダイアグラム レイヤーに設定されているピボット ジャンクションに関連するツリーを回転します。
- 空間配置レイアウト
このレイアウト アルゴリズムは、現在の位置と指定されたシフト ファクターに従って、ほぼオーバーラップしているように見えるダイアグラム ジャンクションを段階的に引き離します。
その他のレイアウト
このカテゴリには、次の特定のアルゴリズムが含まれます。
- テンプレート レイアウト
このレイアウトは、入力ネットワーク ダイアグラムの基準となるテンプレートに構成されているレイアウト アルゴリズムのリストを再実行するために使用されます。このツールは、ダイアグラムが編集された場合、そのダイアグラムが作成されたときのレイアウトを復元するときに役立ちます。
- 地理的位置レイアウト
このレイアウト アルゴリズムは、マップ ビューで、関連付けられたネットワーク フィーチャの割り当てられた地理的位置に一致するように各ダイアグラム ジャンクションとエッジ フィーチャを移動します。
ダイアグラム レイアウトの詳細
ダイアグラム レイアウト アルゴリズムは、ジオプロセシング ツールを使用して実行されます。各レイアウトには独自のパラメーターがあり、ダイアグラム フィーチャの間隔や、エッジ ジオメトリ、格納物フィーチャの位置の維持などを可能にします。一部のレイアウトは、レイアウトの実行前にダイアグラム内で配置されたダイアグラム フラグを考慮します。
ダイアグラム レイアウトの適用
ダイアグラム レイアウトは、ジオプロセシング ツールを使用して実行されます。
ダイアグラム レイアウトを適用するには、次の 2 つの方法があります。
- 手動
ダイアグラム マップ ビューに現在表示されている既存のネットワーク ダイアグラムに対してレイアウトを適用する場合、この方法を使用します。この場合、ネットワーク ダイアグラムのコンテンツ全体、またはその一部 (選択したダイアグラム フィーチャのサブセット) に対して、レイアウトを適用することができます。
- ダイアグラム生成時に自動
これは、ダイアグラム テンプレートに対して設定され、このテンプレートに基づくダイアグラムが動的にレイアウトされるようにします。レイアウトは、このテンプレートに基づくダイアグラムのコンテンツ全体に常に適用されます。その場合、複数のレイアウトをテンプレート上で構成できます。それらのレイアウトは、テンプレート上で構成された順序で連結されます。レイアウト #1 がダイアグラム内のネットワーク フィーチャの初期ジオメトリに対して実行され、レイアウト #N は、アルゴリズム #(N-1) の実行から生成されたジオメトリを受け取って動作します。
レイアウト パラメーター
ダイアグラム レイアウトは、各レイアウトに固有のパラメーターに従って実行されます。
各レイアウトのパラメーターには独自のデフォルト値があり、必要に応じて変更できます。これらのデフォルトのパラメーター値は、必要に応じてテンプレートごとに事前に設定できます。
レイアウト アルゴリズム ツールが [ジオプロセシング] ウィンドウに読み込まれると、ツールのデフォルト パラメーター値が使用されます。ただし、レイアウトが実行される入力ネットワーク ダイアグラムがテンプレートに基づいており、そのテンプレートに対して、他のパラメーター値を使用してレイアウト アルゴリズムが明示的に構成されている場合を除きます。
レイアウト アルゴリズムが Python スクリプトを使用してダイアグラムに対して実行されるときに、各アルゴリズムのパラメーター値を指定しなくてもよい場合があります。パラメーター値が指定されない場合、レイアウトは、アルゴリズム パラメーターのデフォルト値、またはこのアルゴリズムがテンプレートに追加された場合、入力ダイアグラムの基になるテンプレートに対して設定されたアルゴリズム パラメーター値のいずれかを使用して実行されます。
サーバーでの非同期モードでのダイアグラム レイアウトの実行
デフォルトでは、すべてのダイアグラム レイアウトはクライアントとサーバーの両方で同時に実行されます。ただし、ダイアグラムのサイズ、レイアウト アルゴリズムの複雑さ、サービスに対して指定されたタイムアウト (デフォルトでは 600 秒) によっては、レイアウトの実行がサービス タイムアウトを超過し、操作に失敗することがあります。このような場合は、レイアウトを非同期的に適用しなければならないこともあります。
ダイアグラム レイアウトに [サーバーでの非同期モードの実行] オプションを適用すると、編集済みのダイアグラムは、クライアント側では同期的に処理されます。つまり、レイアウトの実行が完了しなければ、他の操作をそのダイアグラムに対して行えません。ただし、サーバー側では、長めのタイムアウトを設定して、レイアウト アルゴリズムにサーバー リソースを集中的に投入することで、処理を非同期的に行います。このモードでは、非同期レイアウト操作が完了するまでは、クライアント側で他の操作がブロックされないため、この間に他のダイアグラムを作成したり、作業を行ったりできます。
メモ:
この非同期モードは、ユーティリティ ネットワーク 10.7.1 ArcGIS Server で公開されたEnterprise サービスを使用する場合にのみ実行できます。
格納物フィーチャのレイアウト
ほとんどのレイアウト アルゴリズムは、特定のオプション [格納器の維持] を使用して動作します。このオプションを使用して、格納物フィーチャに対するアルゴリズムの実行を制御できます。[格納器の維持] オプションを使用する際には、次の点に留意してください。
- このオプションがオンの場合、レイアウト アルゴリズムはダイアグラムの上位グラフに対して実行され、次の相対的位置を維持します。
- 構造物デバイスまたはアセンブリ ダイアグラム ポリゴン格納器内の、構造物ジャンクションまたはデバイス アセンブリに関連するすべての格納物フィーチャです。
- ダイアグラム線形格納器の周囲の線形格納器に関連するすべての格納物フィーチャ。これらは、線形格納器と並行して描画されます。
- このオプションがオンでない場合、レイアウト アルゴリズムが、ダイアグラム内の格納物フィーチャおよび格納物以外のフィーチャの両方に対して実行されます。
ダイアグラム フラグおよびレイアウト
実行前に、一部のレイアウトはダイアグラム内に存在する可能性があるダイアグラム フラグを考慮します。ダイアグラム内で使用できるダイアグラム フラグは、ルート ジャンクション フラグ、端点ジャンクション フラグ、ピボット ジャンクション フラグ、およびバリア フラグの 4 種類です。
ルート ジャンクション フラグ
ツリー レイアウト アルゴリズムは、ツリーのルートと見なされる特定のジャンクションから処理を開始します。ダイアグラムが切断されたネットワークの部分で構成されている場合、ツリー レイアウトは、それぞれ 1 つのルート ジャンクションから開始して、切断されたツリーを体系的に構築します。
ルート ジャンクション フラグは、ダイアグラムの基になるテンプレートがルート ジャンクションの設定ルールを実行するように構成されている場合、ダイアグラムの生成時または更新時に設定することができます。[ルート ジャンクションの設定] ツールを使用して、ジャンクションをルートとして設定し、ツリー レイアウトをそれらのジャンクションから処理させることもできます。
ダイアグラム内でルート ジャンクションが設定されていない場合、ツリー レイアウトは必要なジャンクションをランダムに設定します。
いずれの場合も、ツリー レイアウトは、ルート ジャンクションを次の位置に設定します。
- 放射状ツリー レイアウトは、ルート ジャンクションを円の中心に配置し、同心円内のこのルートから開始して、サブツリーを配置します。各円は、1 つの階層レベルに対応します。
- 主軸ツリー レイアウトは、その主軸を指定されたルート ジャンクションから構築します。
- スマート ツリー レイアウトは、ツリーの構築を指定したルート ジャンクションから開始します。
ダイアグラムが複数の切断されたグラフで構成されている場合、または複数のルート ジャンクションがダイアグラム内で指定されている場合、次の位置が使用されます。
- 放射状ツリー レイアウトは、仮想的な中心を持つ 1 番目の同心円の周囲に、ルート ジャンクションを配置します。
- 主軸ツリー レイアウトおよびスマート ツリー レイアウトは、ツリー方向に対して垂直な同じ軸に沿ってルート ジャンクションを揃え、それらのルート ジャンクションが、切断されたグラフごと、またはグラフの異なるツリーの分岐ごとの異なる始点として表示されるようにします。
端点ジャンクション フラグ
主軸ツリー レイアウトの場合、端点ジャンクション (主軸上の最後のジャンクション) も考慮されます。
ルート ジャンクションと同様に、これらの特定のジャンクションは、[端点ジャンクションの定義] ツールを使用して設定することができ、アルゴリズムが決定することもできます。アルゴリズムが決定する場合、各端点ジャンクションは、ルート ジャンクションから開始した最長の分岐 (つまり、その分岐に沿ったエッジの数を考慮した最長の分岐) の最後のジャンクションになります。
ピボット ジャンクションおよびバリア フラグ
ツリーの回転レイアウトを適用する前に、[ピボット ジャンクションの定義] ツールを使用して、回転動作の中心になるジャンクションにフラグを付ける必要があります。さらに、回転レイアウトを制御して、特定のダイアグラム フィーチャを超えて回転レイアウトを実行しないようにする場合、[バリアの設定] ツールを使用して、それらのフィーチャに対してバリア フラグを設定することが必要になることがあります。