ネットワークで使用するエバリュエータの種類
ネットワークに定義されている各属性は、ネットワークに含まれる各ソースの値を持つ必要があります。エバリュエータは、各ソースの属性の値を割り当てます。ArcGIS の前段階(ArcView 3 と ARC/INFO)では、属性の値はシェープファイルまたはカバレッジのフィールドから割り当てられました。ArcGIS では、フィールド エバリュエータが各ネットワーク ソースのフィールドからネットワーク属性に値を割り当てます。さらに、ArcGIS では定数、フィールド式、関数、VBScript など、別の種類のエバリュエータも使用できます。
次に、エバリュエータについて説明します。
エバリュエータ |
説明 |
---|---|
フィールド エバリュエータ |
ネットワーク属性に値を割り当てる最も一般的な方法は、ネットワーク データセットの構築時にネットワーク属性の値となる 1 つのフィールドを指定する方法です。たとえば、値がメートルなどの測定単位を説明する場合にフィールド エバリュエータを使用できます。 |
フィールド式エバリュエータ |
[フィールド エバリュエータ] は、1 つのフィールドの代わりに、値としてフィールド式を指定することができます。この場合は、[フィールド エバリュエータ] ダイアログ ボックスで式を作成します。たとえば、ネットワーク属性の単位がメートルで、ソース データの単位がフィートの場合、ネットワーク データセットの構築時にフィートをメートルに変換する式を作成できます。 |
定数エバリュエータ |
属性には、定数を割り当てることができます。Cost(コスト)、Descriptor(記述子)、Hierarchy(階層)の属性では、値は数値(0、1、2)です。規制の属性では、値はブール式(Traversable(通過可能)、または Restricted(規制))となります。 |
関数エバリュエータ |
関数エバリュエータは属性値を計算するために、別の属性値またはパラメータ値で乗法関数または論理関数を実行します。数値属性の場合、別の属性の値と何らかの値とを乗算する式から値が導出されます。例を次に示します。「DriveTime * 1.25」という式が使用されます。属性タイプがブール値の場合は、別の属性値とパラメータ値を比較する式(MaxHeight < VehicleHeight など)から属性値が求められます。 レガシ: 関数エバリュエータは ArcGIS 9.3 の新機能です。このため、関数エバリュエータを使用した場合、9.3 以前の ArcGIS リリースでネットワーク データセットが使用できなくなります。 |
グローバル ターン遅延エバリュエータ |
グローバル ターン遅延エバリュエータは、2 つのエッジ エレメントの間を移動するためのデフォルトとなるコスト値を割り当てます。コストは 2 つのエッジ間の相対角度と通過するエッジの道路クラス(幹線道路、一般道路、生活道路)に基づきます。道路クラスは [階層範囲] ダイアログ ボックスと階層属性を使用して指定します。たとえば、グローバル ターン遅延エバリュエータを使用して、すべての左折(左折かどうかは相対角度によって決定されます)について、生活道路から一般道路への左折を生活道路間の左折に比べて時間を要する設定にすることができます。また、2 本の一般道路の交差点を直進する際に 10 秒間の遅延を追加するなど、他の移動に対して追加のコストを指定することもできます。 レガシ: グローバル ターン遅延エバリュエータは ArcGIS 9.3 の新機能です。このため、グローバル ターン遅延エバリュエータを使用した場合、9.3 以前の ArcGIS リリースでネットワーク データセットが使用できなくなります。 |
VBScript エバリュエータ |
VBScript の実行結果から属性を割り当てることもできます。これにより、複雑な属性をモデリングできます。その他のエバリュエータとは異なり、VBScript エバリュエータはネットワークの構築時に値を割り当てません。その代わりに、特定のネットワーク解析でその属性の使用が必要になった場合に値を割り当てます。属性の値が継続的に変化する場合、VBScript エバリュエータを使用することで、ネットワーク解析に更新された属性を使用できます。 注意: VB Script エバリュエータは解析時に値を計算するので、このエバリュエータは解析のパフォーマンスに悪影響をおよぼす傾向があります。 |
エッジ交通量エバリュエータ |
エッジ交通量エバリュエータは履歴交通量データを対象に設計されています。このエバリュエータは特定の曜日および時間の移動時間を提供します。特定の時間帯の移動時間が利用できない際に、平日および週末の移動時間を提供する代替のコスト属性を持っています。また、順序付きストップまたは履歴交通量データをサポートしないネットワーク解析レイヤの解析の実行時に Network Analyst が参照する、時間によって変化しないコスト属性も持っています。 |
すべてのジャンクション ソースとターン ソースは、1 つのエバリュエータを持つことができます。すべてのエッジ ソースは、エッジの方向ごとに 2 つのエバリュエータを持つことができます。
エッジ、ジャンクション、ターンには、デフォルトのエバリュエータを割り当てることができます。特定のソースに明示的にエバリュエータを指定しなかった場合、そのソースの値はデフォルトのエバリュエータによって割り当てられます。
次に、エバリュエータを割り当てる一般的なワークフローを説明します。
- エバリュエータの割り当てが必要なソースを選択します。
- [フィールド]、[定数]、[関数]、または [VBScript] など、エバリュエータの種類を選択します。
- ネットワーク属性に割り当てる値を指定します。
フィールドから値を得る場合は、ドロップダウン メニューから [フィールド] を選択します。フィールド式に基づいて値を計算する場合は、エバリュエータのタイプとして [フィールド] を選択し、キーボードの F12 キーを押して [フィールド エバリュエータ] ダイアログ ボックスを表示します。また、[エバリュエータ] ダイアログ ボックスでソースを右クリックし、[値] メニューから [プロパティ] を選択して [フィールド エバリュエータ] ダイアログ ボックスを表示することもできます。
エバリュエータの例
コスト属性への値の割り当て
ネットワーク属性 Drivetime において、道路網ソースのエバリュエータの種類はフィールドです。FT_Minutes フィールドには、道路網ソースの From-To 方向のネットワーク属性値が含まれます。同様に、TF_Minutes フィールドには、道路網ソースの To-From 方向の値が割り当てられます。
この例では、このネットワークのその他のエッジ ソースはトランジット エッジで、走行時間を持ちません。このため、これには -1 の定数が割り当てられます。
または、コスト属性を関数エバリュエータを使用して別のコスト属性から導出することができます。たとえば、遅い車両の移動時間をモデリングする属性は、関数エバリュエータを使用することで、標準の移動時間をモデリングする属性を参照し、属性を減速係数と乗算することができます。
規制属性への値の割り当て
規制属性の値のデータ タイプはブールです。ソース エレメントは規制か通過可能かのいずれかであるため、これには定数(規制(Restricted)または通過可能(Traversable))を割り当てることができます。
あるいは、規制属性は関数エバリュエータを使用し、別の属性をパラメータ値と比較することで導出できます。たとえば、車高規制をモデリングする属性は、関数エバリュエータを使用して、道路の高さ制限を属性パラメータに格納されている車両の実際の高さと比較することができます。式の評価結果が true である場合、道路は通過できません。式の評価結果が false である場合、道路は通過できます。この規則に対する例外として、オペランド(MaxHeight または Vehicle Height)のいずれかの値がゼロである場合は必ず、式の評価結果は false となります。
最後に、ソース フィーチャクラスのフィールドから規制属性の値を割り当てることもできます。たとえば、フィールド式エバリュエータを使用してブール結果を生成し、式の結果が true の場合にエレメントを規制し、true でない場合に通過を許可することができます。
ネットワーク データセットの作成時に、Network Analyst は Oneway(一方通行)のようにすべてのソースで共通して使用されるフィールドを検索します。いずれかのソースで Oneway フィールドが見つかった場合は Oneway ネットワーク属性が作成され、フィールド式に基づいて、関連するソースの値が割り当てられます。
以下の式は、From-To 方向の一方通行規制属性で使用されます。
以下の式は、From-To 方向の一方通行規制属性で使用されます。
これらの式は、Oneway フィールド内のテキスト値に基づいて許可される移動方向を決定します。
- FT または F = ライン フィーチャのデジタイズされた方向への移動のみが許可されます(From-To 方向)。
- TF または T = ライン フィーチャのデジタイズされた方向と反対向きの移動のみが許可されます(To-From 方向)。
- N = どちらの方向への移動も許可されません。
- 他の任意の値 = 両方への移動が許可されます。
階層の割り当て
ネットワーク データセットに階層を割り当てることで、エッジをさまざまな階層レベルに分類して解析時間を短縮することができます。ただし、階層を使用した解析の結果は階層を使用しない解析に比べて最適でない場合があります。階層の内容と使用する目的についてよく理解していただくために、「階層を使用したネットワーク解析について」をお読みいただくことをお勧めします。
階層レベルは 1 から始まる連続した整数で定義されます。一番小さい整数(1)が最も高い階層レベルを表します。整数値が大きくなるにつれて、階層レベルは低くなります。たとえば、ネットワークを 3 つの階層レベルに分割する場合は、幹線道路に 1 を割り当て、一般道路に 2 を割り当て、生活道路に 3 を割り当てます。幹線道路には高速道路が含まれ、生活道路には住宅街の道路が含まれます。
多くの場合、ネットワーク データセットの階層はフィールドまたはフィールド式エバリュエータによって割り当てられます。道路のフィーチャクラスに、それぞれ幹線道路、一般道路、生活道路を表す 1、2、3 という値の道路クラス属性(階層)が存在する場合、フィールド エバリュエータを使用するだけで階層属性を設定できます。
通常、3 つから 5 つの階層レベルが階層属性に割り当てられます。ただ、各レベルが 1 から始まる連続した整数で表されていれば、好きな数だけ階層レベルを割り当てることができます。ただし、非常に多くの階層レベルを割り当てるのは避けてください。残りの階層に対して接続されないエッジを残してしまうと、ネットワーク解析レイヤの解析を実行する際に失敗する原因となります。
ソースのフィーチャクラスの属性が求める階層レベルの数以上のグループ数に分類されている場合、フィールド式エバリュエータを使用して求める階層レベルの数を満たすようグループを分類することができます。たとえば、Streets フィーチャクラスが Func_Class という名前の整数フィールドを持ち、次に示す 6 種類の道路クラスを持っていると仮定します。
Func_Class |
道路の種類 |
---|---|
1 |
高速道路 |
2 |
有料道路 |
3 |
都市高速道路 |
4 |
主要な一般道路 |
5 |
各地方の道路 |
6 |
高速道路のランプ |
さらに、3 つの階層レベルを作成して Func_Class の値を以下に示すテーブルのように分類したいと仮定します。
階層レベル | Func_Class の値 |
---|---|
1 | 1(高速道路) 2(有料道路) 6(高速道路のランプ) |
2 | 3(都市高速道路) 4(主要な一般道路) |
3 | 5(各地方の道路) |
このシナリオをモデリングするには、階層属性のエバリュエータをフィールド式エバリュエータに変更します。これは、変数を使用した小規模なプリロジック VBScript コードを入力することで実現できます。たとえば、「level」という変数を作成し、3 に設定します(この例での一番低い階層レベル)。次に、Func_Class の値が 1、2、6 の場合に「level」に 1 を割り当て、3、4 の場合に「level」に 2 を割り当て、それ以外の場合は値を 3 のまま維持するような条件を設定します。フィールド式エバリュエータの [値] テキスト ボックスに「level」と入力します。
これにより、Func_Class 1、2、6 のすべてのエレメントには階層属性値 1 が割り当てられ、Func_Class 3、4 のすべてのエレメントには 2 が割り当てられます。それ以外のすべてのエレメント(つまり Func_Class 5 のエレメント)には階層属性値 3 が割り当てられます。
ArcGIS 10 以前では、[階層範囲] ダイアログ ボックスは複数のフィールド値を正確に 3 つの階層レベルに変換するために使用されていました。しかし現時点では、グローバル ターン遅延エバリュエータを操作する際に幹線道路、一般道路、生活道路を定義するだけの目的で使用されます。つまり、[階層範囲] ダイアログ ボックスはネットワーク データセットの階層属性には何の影響もおよぼさず、グローバル ターン遅延エバリュエータのみに影響します。
階層属性とともにグローバル ターン遅延エバリュエータが使用する場合、エッジを 3 つのクラス(生活道路、一般道路、幹線道路)に分類します。階層属性の階層レベルの数は自由に指定できるため、[階層範囲] ダイアログ ボックスによってこれらの階層レベルを正確に 3 つの道路クラスに分類します。これにより、道路クラスに基づいて、ターン操作に対してデフォルトで追加するコストを指定できます。たとえば、一般道路から生活道路へ左折するすべてのターンに対して 10 秒間の遅延を追加し、生活道路から生活道路へ左折するすべてのターンに対して 3 秒間の遅延を追加することができます。グローバル ターン遅延エバリュエータと道路クラスを使用する場合、他にも多くのターンの組み合わせがあります。