ネットワーク ロケーションの事前計算

ネットワーク解析を正常に実行するために、解析の入力は「解析に使用されているネットワーク上に配置する」必要があります。 多数の入力のネットワーク ロケーションを計算すると、膨大な時間がかかることがあります。 同じネットワーク データセットと解析設定を使用する複数の解析で、同じ入力データを使用する場合は、ネットワーク ロケーションを事前に計算することで処理時間を短縮できます。

ネットワーク ロケーションを事前計算するには、[ロケーション フィールドの計算 (Calculate Locations)] ツールを使用します。

[ロケーション フィールドの計算 (Calculate Locations)] ツールは、入力フィーチャクラスのネットワーク ロケーションを計算して、フィーチャクラスに追加される「ネットワーク ロケーション フィールド」に情報を格納します。 フィーチャクラスがネットワーク解析の入力として使用されるときに、これらのフィールドを使用できます。

注意:

[ロケーション フィールドの計算 (Calculate Locations)] ツールは、ネットワーク解析サービス URL を入力ネットワークとして使用できません。 サービスのネットワーク ロケーションを直接事前計算することはできません。

ArcGIS Online サービスが使用するネットワーク データは頻繁に更新され、顧客がアクセスできないため、そのサービスのネットワークを事前計算して使用することはできません。 ただし、サービスの公開時に使用されたネットワーク データセットにアクセスできる場合、「ArcGIS Enterprise ルート検索サービス」を使用して、ネットワーク ロケーションを事前計算して解析に使用できます。 このネットワーク データセットを [ロケーション フィールドの計算 (Calculate Locations)] ツールへの入力としてローカル コンピューター上で使用して、ネットワーク ロケーションを事前計算できます。 このツールで計算されたネットワーク ロケーション フィールドはサービスを参照する解析で使用できます。

計算済みのネットワーク ロケーション フィールドの妥当性

計算済みのロケーション フィールドは、計算の対象となったネットワーク データセットと移動モードに対してのみ有効です。 これらのポイントを別のネットワークまたは移動モードで使用する場合は、ロケーション フィールドの再計算が必要です。 さらに、ネットワーク データセットを編集して再構築した場合にも、編集内容が入力の配置に影響する場合には、保存されたロケーション フィールドを再計算する必要があります。

計算済みのネットワーク ロケーションを解析で使用

計算済みのネットワーク ロケーション フィールドは、フィールド マッピングを使用して入力解析サブレイヤーまたはクラスに転送されます。 ワークフローは、ネットワーク解析レイヤーを使用しているか、Network AnalystPython モジュールを使用しているかにより異なります。ワークフローについては、以下のサブセクションで説明します。

解析にネットワーク ロケーション フィールドをマッピングする場合は、SourceIDSourceOIDPosAlongSideOfEdge フィールドのみをマッピングします。 SnapXSnapYSnapZDistanceToNetworkInMeters フィールドは情報目的でのみ使用されるため、解析のロケーションの指定には必要ありません。

レイヤーベースのネットワーク解析ワークフローに計算済みのネットワーク ロケーションを使用

ネットワーク解析レイヤーを使用して解析を実行する場合、「ロケーションの追加」ツールを使用して解析レイヤーに入力を追加するときに、事前計算済みのロケーション フィールドをマッピングできます。 これを行うには、[フィールド マッピング] パラメーターを使用し、入力フィーチャからネットワーク ロケーションのプロパティに、ネットワーク ロケーション フィールドをマッピングします。 ツール ダイアログ ボックスを使用する場合、[フィールド マッピング] パラメーターを [ネットワーク ロケーション フィールドの使用] に設定し、このマッピングを有効にします。

Network Analyst モジュールを使用して Python ベースのワークフローに事前計算済みのネットワーク ロケーションを使用

Network Analyst モジュールを使用して Python で解析を実行する場合、load メソッドか insertCursor メソッドを使用して入力を追加するときに、ネットワーク ロケーション フィールドを使用できます。 insertCursor メソッドを使用すると、他のフィールドと同じ方法でネットワーク ロケーション フィールドを指定できます。 load メソッドを使用するワークフローでは、use_location_fields パラメーターを True に設定しておくと、fieldMappings メソッドを使用して、入力から入力クラスのフィールドにネットワーク ロケーション フィールドをマッピングできます。 ネットワーク ロケーション フィールドを使用したフィールド マッピングが作成されたら、そのフィールド マッピングを load メソッドの field_mappings パラメーターで使用できます。

これらの手順については、サンプル コードを含め、「解析の入力の設定」で詳しく説明します。

計算済みのネットワーク ロケーションと解析時の自動再配置

デフォルトでは、有効性と到達可能性を確認するために、解析時に既存のネットワーク ロケーション フィールドがチェックされます。 次の場合に、個々の入力のネットワーク ロケーション フィールドが解析時に自動的に再計算されることがあります。

  • 入力にネットワーク ロケーション フィールドがないか、ロケーション フィールドが無効または不完全です。
  • 入力の Status フィールドが、配置されていない、到達できない、または最も近いネットワーク ロケーションに配置されていないことを示しています。
  • 解析に使用されている移動モードによって制限されているネットワーク エレメント上に、入力が配置されています。
  • 入力がバリアによって遮られています。

さらに、ネットワーク解析レイヤーの場合、最後にネットワーク解析レイヤーが解析されてからネットワーク データセットが再構築されたか、レイヤーのプロパティ ページでロケーション設定が変更された場合、解析時にすべての入力が自動的に再配置されます。 この場合、すべての計算済みのネットワーク ロケーションが更新され、上書きされます。

多くの場合、特にネットワーク ロケーションの事前計算時に使用されないバリアが存在する場合、この自動再配置は望ましい動作です。 この場合、ネットワーク解析レイヤーまたは Python 解析オブジェクトが、ネットワーク ロケーションの事前計算時に使用されたものと同じロケーション設定で構成されることが重要です。 バリアの影響を受ける入力はバリアを回避するように再配置されます。さまざまな理由で再配置された他の入力のロケーション フィールドは、同じロケーション設定が適用されるため変更されません。

自動再配置の動作が有益な場合もありますが、このオプションをオフにしたほうがよい場合があります。 特に、解析にバリアを使用していない場合、この動作はほとんど役立ちません。 ネットワーク ロケーションの事前計算時に使用したロケーション設定と同じ設定を使用して解析を構成すると、自動再配置の動作は、同じネットワーク ロケーションを再度検出します。 また、自度再配置ステップをスキップすることでパフォーマンスの向上が小さくなる場合もあります。

レイヤーベースのワークフローを使用してネットワーク解析を実行する場合、「ロケーションの追加」ツールの [解析時の自動再配置を許可] パラメーターを使用するか、「ネットワーク解析レイヤーのプロパティ ページ」を使用して、この設定を調整できます。 Network Analyst モジュールを使用して Python で解析を実行する場合、allowAutoRelocate プロパティを使用してこの設定を調整できます。

この設定の値に関係なく、ネットワーク ロケーション フィールドがない、またはロケーション フィールドが不完全な入力は、解析時に解析用に構成されたロケーション設定を使用して配置されます。 同様に、ネットワーク データセットが再構築されたか、他のロケーション設定が変更された場合、既存のロケーション フィールドは無効と見なされ、設定の値に関係なく、解析時にすべてのロケーションが再計算されます。