ネットワーク属性でのパラメータの使用
ネットワーク属性の値は変動する条件に依存する場合があります。たとえば、車両の車高を使用して、低い歩道橋が設置された道路部分を通過できるかを判定できます。現在の気象条件により移動速度が遅くなると、ネットワークの時間コストに影響をおよぼす場合があります。車両の車高に基づく規制やスケール ファクタに基づく移動コストなどのネットワーク解析における変動する要素を、下記の 2 つの方法の内のいずれかを使用してモデリングすることができます。1 つの方法は、高さまたは気象条件に変動があるたびにネットワーク属性を作成するというものです。しかし、この方法は、変更する属性の数が増えるにつれて扱いにくくなります。もう 1 つの方法は、ネットワーク属性を、この属性の変動的な要素を含むパラメータと一緒に使用するというもので、汎用性があります。
パラメータとは、特定の解析について変更できる値のプレースホルダです。それぞれに意味のあるデフォルト値が設定されていますが、必要に応じてユーザが無効にすることができます。ArcCatalog では、パラメータは、ネットワーク属性に追加され、属性のエバリュエータによって参照されます。ArcMap では、ネットワーク解析の設定をするときに、パラメータ値を変更できます。これにより、実行時には式と現在のパラメータ値を使用してネットワーク属性の値を求めることができます。
パラメータ化されたネットワーク属性のしくみ
パラメータ化されたネットワーク属性にはエバリュエータが含まれています。エバリュエータは、パラメータをそのネットワーク属性だけでなく別のネットワーク属性にも適用して、値の判断に役立てます。
パラメータの値は実行時に変動する場合があるため、ネットワーク属性の値はデータベースに書き込まれず、必要なときに算出されるだけです。したがって、パラメータ値が変化しても、ネットワーク データセットを再構築する必要はありません。
規制属性のパラメータ
規制の使用法のデフォルト パラメータ
規制属性を作成すると、[規制の使用法] というパラメータが自動的に追加されます。このパラメータは、規制を使用するエレメント上の移動が、規制属性によって禁止されるか、回避されるか、優先されるかを指定します。エレメントを回避または優先する場合は、回避または優先するレベルも指定します。具体的には、[規制の使用法] には以下の値のいずれかを割り当てることができます(括弧内の数値については、リストの下で説明しています)。
- 禁止 -(-1)関連付けられたネットワーク エレメント上の移動は完全に禁止されます。これは、最も一般的な規制の使用法です。
- 回避: 高 - (5)規制に関連付けられたネットワーク エレメントが解析で使用される可能性は非常に低くなります。
- 回避: 中 - (2)規制に関連付けられたネットワーク エレメントが解析で使用される可能性は低くなります。
- 回避: 低 - (1.3)規制に関連付けられたネットワーク エレメントが解析で使用される可能性はやや低くなります。
- 優先: 低 - (0.8)規制に関連付けられたネットワーク エレメントが解析で使用される可能性はやや高くなります。
- 優先: 中 - (0.5)規制に関連付けられたネットワーク エレメントが解析で使用される可能性は高くなります。
- 優先: 高 - (0.2)規制に関連付けられたネットワーク エレメントが解析で使用される可能性は非常に高くなります。
上記 7 つのテキストの値は、それぞれが内部的には固定数値で表現されます。各数値はリストに括弧で示しています。指定されているテキストの選択肢と、それが基づく数値は、ほぼすべてのユーザにとって十分です。それでもなおエレメントを回避または優先するレベルを微調整する必要がある場合は、独自に数値を入力することができます。
カスタム値を入力するかどうかを判断するには、この値が解析に与える影響を知っておく必要があります。一般に、制限のあるエレメントのコストは、これらの数値で乗算されて増減します。この結果により、解析中に、エレメントがより適していると見なされるか、適していないと見なされるかが決まります。たとえば、優先されるエレメントは、0 よりも大きく 1 よりも小さいパラメータ値で乗算されるため、コストが小さくなり、解析の結果にエレメントが含まれる可能性が高くなります。[優先: 高] の値は 0 に近く、[優先: 低] の値は 1 に近くなります。(0 の値は入力できないことに注意してください。解析時にエラーが発生します)回避するエレメントの場合は、[規制の使用法] の数値が 1 よりも大きく設定されます。この値で乗算するとコストが大きくなるからです。エレメントを禁止する場合は、[規制の使用法] の値が内部的に -1 に設定されます。わかりやすく言えば、Network Analyst では負のコスト値は通過不可能と解釈されると考えることができます。ただし、内部プロセスはこれよりも複雑です。
解析では、これらの増減されたコストが一時的に使用されるだけであることに注意してください。解析の出力やターンごとの案内に含まれることはありません。
カスタム値を入力するには、指定されているテキストの選択肢(規制、優先: 高など)を数字で置き換えるだけです。テキスト値で使われている数値と同じ数値を入力した場合は、そのテキスト値が表示されます。
ArcGIS 10.1 よりも前のバージョンのネットワーク データセットを使用している場合、[規制の使用法] パラメータはどの規制属性にもありません。この場合、規制ではネットワーク エレメントが常に禁止されます。エレメントを回避または優先するために制限を変更するオプションを有効にするには、ネットワーク データセットをアップグレードしてください。
車両特性をモデリングするパラメータ
Network Analyst では、デフォルトのパラメータである [規制の使用法] が常にすべての規制属性に追加されます。車両特性を設定して、特定の車両が通過できるネットワーク エレメントをより正確に指定するためのパラメータを追加することもできます。
たとえば、規制属性を車高パラメータとともに追加して、車両の車高を、高架の下またはトンネルの中の高さ制限を保持する記述子属性と比較することができます。車高が高さ制限を超えている場合は、エッジが禁止されます。これにより、車両に応じて異なるルートが生成されます。下図に示すように、車高が低い車両は、低い高架橋を通るルートをそのままたどることになります。一方、車高が高い車両は高さ制限が低い高架橋を避けて別のルートをとることになります。
規制属性が車両特性パラメータに依存するときは、ほとんどの場合、[規制の使用法] が [禁止] に設定されます。したがって、このサブセクションでは、規制属性でエレメントが禁止されていることを想定しています。
このようなシナリオでは、記述子属性と規制属性を作成するとよいでしょう。記述子属性には MaxHeight という名前を付け、規制属性には HeightRestriction という名前を付けることにします。MaxHeight はソース データから高さ制限値を取り込み、HeightRestriction は MaxHeight から値を読み取り、読み取った値を現在の車高を保持するパラメータと比較することになります。下図は、このプロセスの概要を示したものです。
コスト属性のパラメータ
別のコスト属性を参照してスケーリングすることができる、パラメータ化されたコスト属性を必要とする場合もあります。これは、凍結、霧、豪雨などの荒れ模様の天候が調査エリアを襲い、通常の車の流れが妨げられている場合に有用です。コスト属性にあらかじめパラメータを用意しておくことにより、移動時間の予想を、走行速度の変化に応じて調整することができます。
2 つのネットワーク属性を作成することが可能です。1 つは DriveTime です。これには、通常の運転時間インピーダンスが格納され、値はソース データ内のフィールドから得られます。もう 1 つは DriveTime_scaled です。これは DriveTime の属性値をとり、その値は、現在のスケール ファクタを保持する DriveTime_scaled 属性のパラメータによってスケーリングされます。
パラメータ化属性の設定
必要なネットワーク属性を作成したら、パラメータ化属性を設定することができます。このための主要な 2 つの手順は次のとおりです。
- パラメータをネットワーク属性に追加
- パラメータを使用するように属性のエバリュエータを設定します。
この 2 つの手順は、[ネットワーク データセット プロパティ] ダイアログ ボックスの [属性] タブを使用して ArcCatalog で実行します。
パラメータの追加
パラメータを作成するには、次の手順に従います。以下に示す例は、規制属性 [HeightRestriction] に合わせてありますが、コスト属性に対しても同じ手順が有効です。
[HeightRestriction] 属性に新しいパラメータ [Vehicle Height] を追加し、デフォルト値として 0 を割り当てます(車高が 0 の場合、車両は一切の高さ制限を受けないと見なされます)。ArcMap でネットワーク解析を実行する際は、パラメータの値をデフォルトから別の値に変更することができます。
エバリュエータの設定
パラメータが追加されたら、エバリュエータを設計する必要があります。エバリュエータは、パラメータを取り込み、さらに定数または別のネットワーク属性(パラメータに関係する情報を格納)のいずれかを取り込むものとします。下に示す例では、パラメータ化された規制属性 [HeightRestriction] にはエバリュエータが割り当てられています。このエバリュエータは、[Vehicle Height] パラメータを、ネットワーク エレメントの高さ制限計測値を含む記述子ネットワーク属性 [MaxHeight] と比較します。
スクリプト エバリュエータは、解析時に VBScript または Python 環境を使用して値を計算するので、このエバリュエータを指定すると解析のパフォーマンスに悪影響がおよぶ傾向があります。Esri では、解析時に最適なパフォーマンスを得るために、可能な限りスクリプト エバリュエータではなく関数エバリュエータを使用することを強く推奨しています。
この例では関数エバリュエータが選択されています。以下に示す [関数エバリュエータ] ダイアログ ボックスには、道路ごとに評価される式が表示されています。関数エバリュエータが [True] を返すときは必ず、ネットワーク エレメントが規制されています。[False] を返すとき、ネットワーク エレメントは規制されないため、解析で使用できます。
比較するために、パラメータ化されたコスト属性 [DriveTime_scaled] は、[DriveTime Factor] パラメータを使用する関数エバリュエータ(下図参照)で設定されています。エバリュエータは [DriveTime] コスト属性から運転時間を読み取り、読み取った値を実行時に指定される [DriveTime Factor] の値と掛け算します。
パラメータの値は実行時にデフォルトの 1 から変更することができます。値を 1.5 に設定すると、運転時間が通常の運転時間より 50 パーセント遅くなります。[DriveTime] の値が 5 分であるネットワーク エレメントの場合、[DriveTime_scaled] の値は 7.5 分になります。
ネットワーク データセットの再構築
関数エバリュエータは、値をデータベースに格納するのでなく実行時に計算するので、関数エバリュエータまたは ArcCatalog 内の対応する属性パラメータを追加または変更した後でネットワーク データセットを再構築する必要はありません。しかし、フィールド エバリュエータに基づいて関連する属性に変更を加える場合、ネットワーク データセットを再構築して新しい値を使用する必要があります。
ArcCatalog でパラメータ化属性が提供されている場合、ArcMap では属性を使用してネットワーク問題の解析を開始することができます。パラメータの値をデフォルトから別の値に変更しても、ネットワークを再構築する必要はありません。