エバリュエータの割り当て
ネットワーク エレメントはソース フィーチャから作成されます。コスト属性や階層属性などのネットワーク属性はネットワーク エレメントの値を保持しています。エバリュエータは特定のソース フィーチャクラスから作成されるエレメントの属性値を計算します。これは、1 つのネットワーク エレメントが複数のエバリュエータを持つことを意味しています。たとえば、マルチモーダル ネットワークの 1 つのコスト属性が道路、鉄道、歩道、ターン、ジャンクションなどの各ソース フィーチャクラスのエバリュエータを持つことができます。
このトピックでは、エバリュエータの設定方法について説明します。
- [ネットワーク データセット プロパティ] ダイアログ ボックスを開きます。
-
[属性] タブをクリックします。
次の図に示されたネットワーク データセットには、「RoadClass」、「Oneway」、「Minutes」、および「Meters」という 4 つのネットワーク属性があります。
-
エバリュエータを変更する必要がある属性を選択して、[エバリュエータ] をクリックします。
[エバリュエータ] ダイアログ ボックスが表示されます。
-
ソースにフィールド エバリュエータを割り当てるには、以下の手順に従います。フィールド エバリュエータに式を追加する方法の説明は、この次のステップに進んでください。
- [種類] 列でソース行をクリックし、[フィールド] をクリックします。
- [値] 列でソース行をクリックし、リストから適切なフィールドを選択します。
次の図は、ソース フィーチャを To-From 方向にデジタイズした道路のフィーチャクラスのフィールド エバリュエータを示しています。
ヒント:[種類] 列と [値] 列に同時に値を割り当てることができます。[種類] の値を割り当てるには、Ctrl キーまたは Shift キーを押しながら [属性値] テーブルの列をクリックします。選択した列のうち 1 つの列を右クリックし、[種類] をクリックして、必要なエバリュエータの種類を選択します。
同様に、複数の行に対して [値] 列に同じ値を割り当てることができます。そのためには 2 行以上を選択し、選択した行のうち 1 行を右クリックし、[値] をポイントしてから [プロパティ] をクリックします。開いたダイアログ ボックスで指定した設定は、[エバリュエータ] ダイアログ ボックスの [属性値] テーブルで選択したすべての行に割り当てられます。
-
ソースにフィールド式エバリュエータを割り当てるには、以下の手順に従います。他のエバリュエータに関する説明は、この次のステップに進んでください。
- [種類] 列でソース行をクリックし、[フィールド] をクリックします。
- [エバリュエータ プロパティ] ボタン をクリックします。
- [フィールド エバリュエータ] ダイアログ ボックスで、式を VBScript と Python のどちらで書くかを選択します。パフォーマンスを向上させるには VBScript の使用をお勧めします。ただし、ArcGIS for Server(Linux)でネットワーク データセットを構築する予定の場合は、Python の使用が必要になります。
- 式を入力します。
- [OK] をクリックします。
-
ソースに定数エバリュエータを割り当てるには、以下の手順に従います。他のエバリュエータに関する説明は、この次のステップに進んでください。
- [種類] 列でソース行をクリックし、ドロップダウン リストから [定数] をクリックします。
-
[値] 列でソース行をクリックし、規制属性に [規制を無視] または [規制を使用] を選択するか、コスト属性、記述子属性、階層属性に数値を入力します。
次の図は、ターンのソース フィーチャクラスに対する規制属性の定数エバリュエータを示しています。
-
ソースに スクリプト エバリュエータを割り当てるには、以下の手順に従います。他のエバリュエータに関する説明は、この次のステップに進んでください。
- [種類] 列でソース行をクリックし、[スクリプト] をクリックします。
- [エバリュエータ プロパティ] ボタン をクリックします。
- [スクリプト エバリュエータ] ダイアログ ボックスで、スクリプトを VBScript と Python のどちらで書くかを選択します。パフォーマンスを向上させるには VBScript の使用をお勧めします。ただし、ArcGIS for Server(Linux)でネットワーク解析を実行する予定の場合は、Python の使用が必要になります。
- スクリプトを入力します。
- [OK] をクリックします。
この例では、規制ネットワーク属性は VBScript エバリュエータを使用して、ルートおよび他のネットワーク解析を交差する橋からブロックしています。
以下に、同様のスクリプトを Python で作成した場合のスクリーン キャプチャを示します。関数は [事前に作成したスクリプト コード] 内で定義され、def キーワードで開始されています。関数は [Value =] から呼び出されます。
-
ソースに関数エバリュエータを割り当てるには、以下の手順に従います。他のエバリュエータに関する説明は、この次のステップに進んでください。
- [種類] 列でソース行をクリックし、[関数] をクリックします。
- [エバリュエータ プロパティ] ボタン をクリックします。
- [関数エバリュエータ] ダイアログ ボックスに関数を入力します。
- [OK] をクリックします。
この例では、規制属性(HeightRestriction)が記述子属性(MaxHeight)とパラメータ(車高)を参照して、車高制限が車両の車高より低い道路を禁止しています。
- グローバル ターン遅延エバリュエータを割り当てるには、トピック「グローバル ターンの確立」をご参照ください。
- エッジ交通量エバリュエータを割り当てるには、トピック「交通量データとは」をご参照ください。
エッジ交通量エバリュエータは、ネットワーク データセット上で交通量のプロパティを設定すると自動的に作成されます。
-
[OK] をクリックします。
[ネットワーク データセット プロパティ] ダイアログ ボックスが閉じます。
- カタログ ウィンドウでネットワーク データセットを右クリックし、[ビルド] をクリックします。
ネットワーク属性のエバリュエータを設定した後、残りのダイアログ ボックスを閉じて、必要に応じてネットワークを構築することができます。
加えた変更によりネットワーク データセットがソース フィーチャクラスにアクセスする必要が生じた場合のみ、ネットワーク データセットを再構築する必要があります。たとえば、ソース フィーチャクラスから時間コストを取得するフィールド エバリュエータを作成した場合、ネットワークを再構築する必要があります。ソース フィーチャのジオメトリを変更した場合、ネットワーク データセットを再構築する必要があります。ただし、関数エバリュエータ、スクリプト エバリュエータ、またはグローバル ターン遅延エバリュエータはソース フィーチャクラスから直接情報を取得しないため、これらのエバリュエータの作成時にネットワークを再構築する必要はありません。