ロケーションの追加 (Add Locations) (Network Analyst)

サマリー

ネットワーク解析レイヤーに入力フィーチャやレコードを追加します。これらの入力は、ストップやバリアなどの特定のサブレイヤーに追加されます。

[ロケーションの追加 (Add Locations)] ツールがネットワーク上の解析の入力を検索する方法の詳細

使用法

  • このツールを実行して、ネットワーク解析オブジェクトを同じサブレイヤーに繰り返し追加できます。たとえば、ルート レイヤーのストップを 2 つのフィーチャクラスから取得する場合は、このツールを 2 回 (フィーチャクラスごとに 1 回) 実行します。2 回目の実行時には、[追加] パラメーター (Python の場合は append = "APPEND") をオンにします。

  • 新しいオブジェクトを読み込む前に既存のネットワーク解析オブジェクトを削除するには、[追加] パラメーター (Python の場合は append = "CLEAR") をオフにします。

  • 入力の配置時に、ネットワーク解析レイヤーの移動モードと既存のバリアが考慮されます。このため、他の解析の入力を読み込む前に、解析の移動モードの設定とバリアの読み込みを行っておくことをお勧めします。

  • ネットワーク データセットのネットワーク ソースとして使用されるフィーチャクラスが有効かつ最新の空間インデックスを保持している場合、このツールは非常に高速に実行されます。

  • 解析レイヤーがポータル サービスを参照する場合、ロケーション フィールドは、解析を実行するまでは計算されません。これらのレイヤーの場合、[ロケーションの追加 (Add Locations)] ツールは、ロケーション フィールドを計算せずに、解析レイヤーに入力を追加します。このため、一部のツール パラメーターはこれらのレイヤーに適用されず、ツール ダイアログ ボックスで非表示になるか、Python で無視されます。

パラメーター

ラベル説明データ タイプ
入力ネットワーク解析レイヤー

ネットワーク解析オブジェクトが追加されるネットワーク解析レイヤー。

Network Analyst Layer
サブ レイヤー

ネットワーク解析オブジェクトが追加されるネットワーク解析レイヤーのサブレイヤーの名前。

String
入力ロケーション

ネットワーク解析サブレイヤーに追加されるロケーションを含むフィーチャクラスまたはテーブル。

Table View
フィールド マッピング
(オプション)

入力データまたは指定された定数内の位置とフィールドを追加するネットワーク解析サブレイヤーの入力間でのマッピング。

ネットワーク解析レイヤーの入力サブレイヤーには、解析のニーズに従って変更または入力できる一連の入力フィールドがあります。 サブレイヤーに位置を追加すると、このパラメーターを使用して、入力テーブルのフィールド値をサブレイヤー内のそれらのフィールドにマッピングできます。 フィールド マッピングを使用して、プロパティごとにデフォルトの定数値を指定することもできます。

フィールドもデフォルト値もプロパティに設定されていない場合、作成されたネットワーク解析オブジェクトではこのプロパティに NULL 値が設定されます。

各ネットワーク解析レイヤーのサブレイヤーごとの入力フィールドの完全なリストは、各レイヤーのドキュメントに記載されています。 たとえば、ルート レイヤーのストップ サブレイヤーの入力フィールドを調べます

読み込むデータに、解析に使用するネットワーク データセットに基づくネットワーク ロケーションまたはロケーション範囲が含まれている場合は、ドロップダウン メニューから [ネットワーク ロケーション フィールドの使用] オプションを選択します。ネットワーク ロケーション フィールドを使用したネットワーク解析オブジェクトの追加は、ジオメトリによる読み込みより高速です。

ネットワーク ロケーション フィールドの詳細

Network Analyst Class FieldMap
検索許容値
(オプション)

入力フィーチャをネットワークに配置するために使用される検索許容値。 検索許容値の外側にあるフィーチャは配置されません。 パラメーターには許容値の値と単位が含まれます。

デフォルトは 5000 メートルです。

ライン バリアやポリゴン バリアなど、ラインまたはポリゴン ジオメトリを含むサブレイヤーに場所を追加する場合、このパラメーターは使用しません。

入力ネットワーク解析レイヤーのネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。

Linear Unit
ソート フィールド
(オプション)

ネットワーク解析オブジェクトをネットワーク解析レイヤーに追加する際に、ネットワーク解析オブジェクトをソートする基準となるフィールド。デフォルトは入力フィーチャクラスまたはテーブル内の ObjectID フィールドです。

Field
検索基準
(オプション)

ネットワーク ロケーションの計算時に検索するネットワーク データセットのソース、および使用するジオメトリの部分 (スナップ タイプとも呼ばれます) です。 たとえば、ネットワーク データセットが道路と歩道を表す個別のフィーチャクラスを参照する場合、入力を道路上に配置できますが、歩道上に配置できません。

各ネットワーク ソースに使用できるスナップ タイプ オプションは、次のとおりです。

  • SHAPE - 該当するネットワーク ソース内にあるエレメントの最近接点にポイントが配置されます。
  • MIDDLE - 該当するネットワーク ソース内にあるエレメントの最近接の中間点にポイントが配置されます。
  • END - 該当するネットワーク ソース内にあるエレメントの最近接の端点にポイントが配置されます。
  • NONE - 該当するネットワーク ソース内にあるエレメントにポイントが配置されません。

MIDDLE オプションと END オプションは下位互換性のために維持されています。 特定のネットワーク ソースに入力を配置する場合は、SHAPE オプションを使用します。それ以外の場合は、NONE を使用します。

ラインまたはポリゴン フィーチャのロケーションを計算する際、他のスナップ タイプが指定されていても SHAPE スナップ タイプのみが使用されます。

[ネットワークのディゾルブ (Dissolve Network)] ツールを実行して作成されたオーバーライド ジャンクションとシステム ジャンクションのデフォルト値は NONE であり、これらのジャンクションを除くすべてのネットワーク ソースのデフォルト値は SHAPE です。

ネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。

Value Table
すべてのクラスの最近接を検索
(オプション)

注意:

このパラメーターは Python でのみ使用できます。

Boolean
既存のロケーションに追加
(オプション)

新しいネットワーク解析オブジェクトを既存のオブジェクトに追加するかどうかを指定します。

  • オン - 選択されたサブレイヤー内に存在する一連のオブジェクトに新しいネットワーク解析オブジェクトが付加されます。これがデフォルトです。
  • オフ - 既存のネットワーク解析オブジェクトが削除され、新規のオブジェクトに置き換えられます。
Boolean
ネットワークへスナップ
(オプション)

入力内容を計算済みのネットワーク ロケーションにスナップするか、元の地理的位置に表示するかを指定します。

解析でアプローチ制限を使用して、ロケーションにアプローチするために車両が道路のどちら側を走行する必要があるかを制御する場合は、入力内容をネットワーク ロケーションにスナップしないか、スナップ オフセットを使用して、道路の片側にポイントがはっきりと表示されたままになるようにします。

ライン バリアやポリゴン バリアなど、ラインまたはポリゴン ジオメトリを含むサブレイヤーに場所を追加する場合、このパラメーターは使用しません。

入力ネットワーク解析レイヤーのネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。

注意:

ロケーションを追加した後で、ネットワーク解析レイヤーの移動モードを変更するか、バリアを追加/削除すると、影響を受けるポイントのネットワーク ロケーションが解析時に自動的に再計算され、その有効性が維持されます。この自動再計算処理では、これまでにネットワーク ロケーションの計算で使用された設定 (検索クエリなど) が考慮されません。代わりに、入力フィーチャのジオメトリおよびネットワーク解析レイヤーの移動モードとバリアだけが使用されます。ポイントのネットワーク ロケーションを自動的に再計算する場合に同じネットワーク ロケーションが選択される可能性を高くするには、このパラメーターを使用して、このツールの実行時に算出されたネットワーク ロケーションに入力内容をスナップします。これにより、入力ポイントのジオメトリで目的のネットワーク ロケーションが維持されます。

  • オン - ネットワーク ロケーションのジオメトリがそのネットワーク ロケーションにスナップされます。
  • オフ - ネットワーク ロケーションのジオメトリが入力フィーチャのジオメトリに基づきます。これがデフォルトです。
Boolean
スナップ オフセット
(オプション)

ポイントをネットワークにスナップする際、オフセット距離を適用できます。 オフセット距離がゼロだと、ポイントはネットワーク フィーチャ (一般的にライン) と一致します。 ネットワーク フィーチャからポイントをオフセットする場合、オフセット距離を入力します。 オフセットは、元のポイントの場所に関連しています。つまり、元のポイントが左側にあった場合、新しい場所は左にオフセットされます。 元のポイントが右側にあれば、新しいロケーションも右側にオフセットされます。

デフォルトは 5 メートルです。ただし、[ネットワークへスナップ] がオフの場合、このパラメーターは無視されます。

ライン バリアやポリゴン バリアなど、ラインまたはポリゴン ジオメトリを含むサブレイヤーに場所を追加する場合、このパラメーターは使用しません。

入力ネットワーク解析レイヤーのネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。

Linear Unit
ネットワークの規制部分を除外
(オプション)

注意:

このパラメーターは Python でしか利用できません。

Boolean
検索クエリ
(オプション)

検索をソース フィーチャクラス内のフィーチャのサブセットに制限するクエリを定義します。 この機能は、解析に適していないフィーチャで検索したくない場合に有用です。 たとえば、クエリを使用し、特定の道路クラスがあるフィーチャをすべて除外できます。

ネットワーク データセットのソース フィーチャクラスごとに個別の SQL 式を指定できます。 デフォルトでは、ソースにクエリは使用されません。

ネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。

[名前] 列のソース名を選択し [クエリ] 列で SQL 式ビルダーを使用することで、指定されたネットワーク ソースに対する SQL 式を指定します。 SQL 構文の詳細については、「ArcGIS で使用されるクエリ式への SQL リファレンス」をご参照ください。

ツールのダイアログ ボックスで明示的に指定されていないネットワーク ソースには、クエリは適用されません。

Value Table

派生した出力

ラベル説明データ タイプ
更新された入力ネットワーク解析レイヤー

更新されたネットワーク解析レイヤー。

Network Analyst レイヤー

arcpy.na.AddLocations(in_network_analysis_layer, sub_layer, in_table, {field_mappings}, {search_tolerance}, {sort_field}, {search_criteria}, {match_type}, {append}, {snap_to_position_along_network}, {snap_offset}, {exclude_restricted_elements}, {search_query})
名前説明データ タイプ
in_network_analysis_layer

ネットワーク解析オブジェクトが追加されるネットワーク解析レイヤー。

Network Analyst Layer
sub_layer

ネットワーク解析オブジェクトが追加されるネットワーク解析レイヤーのサブレイヤーの名前。

String
in_table

ネットワーク解析サブレイヤーに追加されるロケーションを含むフィーチャクラスまたはテーブル。

Table View
field_mappings
(オプション)

入力データまたは指定された定数内の位置とフィールドを追加するネットワーク解析サブレイヤーの入力間でのマッピング。

ネットワーク解析レイヤーの入力サブレイヤーには、解析のニーズに従って変更または入力できる一連の入力フィールドがあります。 サブレイヤーに位置を追加すると、このパラメーターを使用して、入力テーブルのフィールド値をサブレイヤー内のそれらのフィールドにマッピングできます。 フィールド マッピングを使用して、プロパティごとにデフォルトの定数値を指定することもできます。

フィールドもデフォルト値もプロパティに設定されていない場合、作成されたネットワーク解析オブジェクトではこのプロパティに NULL 値が設定されます。

各ネットワーク解析レイヤーのサブレイヤーごとの入力フィールドの完全なリストは、各レイヤーのドキュメントに記載されています。 たとえば、ルート レイヤーのストップ サブレイヤーの入力フィールドを調べます

NAClassFieldMappings クラスから取得された NAClassFieldMappings オブジェクトは、パラメーター値を指定するのに使用されます。NAClassFieldMappings オブジェクトは NAClassFieldMap オブジェクトのコレクションで、これを使用すると、ネットワーク解析オブジェクトのプロパティに対して、デフォルト値を指定したり、入力フィーチャからフィールド名をマップしたりできます。読み込むデータに、解析に使用するネットワーク データセットに基づくネットワーク ロケーションまたはネットワーク ロケーション範囲属性がある場合、入力フィーチャのネットワーク ロケーション フィールドをネットワーク ロケーション プロパティに割り当てます。フィールド マッピングでネットワーク ロケーション フィールドを指定することは、ツール ダイアログ ボックスで [ネットワーク ロケーション フィールドの使用] オプションを使用するのと同様です。

ネットワーク ロケーション フィールドの詳細

注意:

すべてのネットワーク ロケーション プロパティにフィールド マッピングを指定する場合、残りのネットワーク ロケーション プロパティのフィールド マッピングを指定して、ツール実行エラーを防ぐ必要があります。

Network Analyst Class FieldMap
search_tolerance
(オプション)

入力フィーチャをネットワークに配置するために使用される検索許容値。 検索許容値の外側にあるフィーチャは配置されません。 パラメーターには許容値の値と単位が含まれます。

デフォルトは 5000 メートルです。

ライン バリアやポリゴン バリアなど、ラインまたはポリゴン ジオメトリを含むサブレイヤーに場所を追加する場合、このパラメーターは使用しません。

入力ネットワーク解析レイヤーのネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。

Linear Unit
sort_field
(オプション)

ネットワーク解析オブジェクトをネットワーク解析レイヤーに追加する際に、ネットワーク解析オブジェクトをソートする基準となるフィールド。デフォルトは入力フィーチャクラスまたはテーブル内の ObjectID フィールドです。

Field
search_criteria
[[Source, SnapType],...]
(オプション)

ネットワーク ロケーションの計算時に検索するネットワーク データセットのソース、および使用するジオメトリの部分 (スナップ タイプとも呼ばれます) です。 たとえば、ネットワーク データセットが道路と歩道を表す個別のフィーチャクラスを参照する場合、入力を道路上に配置できますが、歩道上に配置できません。

各ネットワーク ソースに使用できるスナップ タイプ オプションは、次のとおりです。

  • SHAPE - 該当するネットワーク ソース内にあるエレメントの最近接点にポイントが配置されます。
  • MIDDLE - 該当するネットワーク ソース内にあるエレメントの最近接の中間点にポイントが配置されます。
  • END - 該当するネットワーク ソース内にあるエレメントの最近接の端点にポイントが配置されます。
  • NONE - 該当するネットワーク ソース内にあるエレメントにポイントが配置されません。

MIDDLE オプションと END オプションは下位互換性のために維持されています。 特定のネットワーク ソースに入力を配置する場合は、SHAPE オプションを使用します。それ以外の場合は、NONE を使用します。

ラインまたはポリゴン フィーチャのロケーションを計算する際、他のスナップ タイプが指定されていても SHAPE スナップ タイプのみが使用されます。

[ネットワークのディゾルブ (Dissolve Network)] ツールを実行して作成されたオーバーライド ジャンクションとシステム ジャンクションのデフォルト値は NONE であり、これらのジャンクションを除くすべてのネットワーク ソースのデフォルト値は SHAPE です。

ネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。

パラメーター値は、ネストされたリストとともにリストとして指定されます。 ネストしたリストは各ネットワーク ソースの名前とスナップ タイプを示す 2 つの値で構成されます。 たとえば、[["Streets","SHAPE"],["Streets_ND_Junctions","NONE"]] のパラメーター値は、Streets_ND_Junctions ソースでなく Streets ソースの形状に基づいた検索が可能であることを示します。

このリストに入っていないネットワーク ソースでは、デフォルト スナップ タイプが使用されます。 すべてのネットワーク ソースをリストに入れ、ネットワーク ソースごとにスナップ タイプを明示的に設定することをお勧めします。

ジオデータベースのネットワーク データセットでは、ネットワーク ソースの各サブタイプにスナップ タイプを指定することができます。 たとえば、ネットワークに Streets というソースがあり、そのソースに Local Streets というサブタイプがある場合、["Streets : Local Streets", "SHAPE"] を使用して一般道路のスナップ タイプを指定します。

Value Table
match_type
(オプション)

ネットワーク ロケーションの一致方法を指定します。

  • MATCH_TO_CLOSEST検索条件に指定されたスナップ タイプを保持するすべてのソースのうちの最寄りのネットワーク ソースが、新しいネットワーク ロケーションと照合されます。 これがデフォルトです。
  • PRIORITY検索条件に指定されたスナップ タイプを保持する最初のネットワーク ソースが、新しいネットワーク ロケーションと照合されます。 ロケーションが検索許容値内で検出される場合、ソースは優先度順に検索しているストップの中から検索されます。

ライン バリアやポリゴン バリアなど、ラインまたはポリゴン ジオメトリを含むサブレイヤーに場所を追加する場合、このパラメーターは使用しません。

入力ネットワーク解析レイヤーのネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。

Boolean
append
(オプション)

新しいネットワーク解析オブジェクトを既存のオブジェクトに追加するかどうかを指定します。

  • APPEND選択されたサブレイヤー内に存在する一連のオブジェクトに新しいネットワーク解析オブジェクトが付加されます。これがデフォルトです。
  • CLEAR既存のネットワーク解析オブジェクトが削除され、新規のオブジェクトに置き換えられます。
Boolean
snap_to_position_along_network
(オプション)

入力内容を計算済みのネットワーク ロケーションにスナップするか、元の地理的位置に表示するかを指定します。

解析でアプローチ制限を使用して、ロケーションにアプローチするために車両が道路のどちら側を走行する必要があるかを制御する場合は、入力内容をネットワーク ロケーションにスナップしないか、スナップ オフセットを使用して、道路の片側にポイントがはっきりと表示されたままになるようにします。

ライン バリアやポリゴン バリアなど、ラインまたはポリゴン ジオメトリを含むサブレイヤーに場所を追加する場合、このパラメーターは使用しません。

入力ネットワーク解析レイヤーのネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。

注意:

ロケーションを追加した後で、ネットワーク解析レイヤーの移動モードを変更するか、バリアを追加/削除すると、影響を受けるポイントのネットワーク ロケーションが解析時に自動的に再計算され、その有効性が維持されます。この自動再計算処理では、これまでにネットワーク ロケーションの計算で使用された設定 (検索クエリなど) が考慮されません。代わりに、入力フィーチャのジオメトリおよびネットワーク解析レイヤーの移動モードとバリアだけが使用されます。ポイントのネットワーク ロケーションを自動的に再計算する場合に同じネットワーク ロケーションが選択される可能性を高くするには、このパラメーターを使用して、このツールの実行時に算出されたネットワーク ロケーションに入力内容をスナップします。これにより、入力ポイントのジオメトリで目的のネットワーク ロケーションが維持されます。

  • NO_SNAP ネットワーク ロケーションのジオメトリが入力フィーチャのジオメトリに基づきます。これがデフォルトです。
  • SNAPネットワーク ロケーションのジオメトリがそのネットワーク ロケーションにスナップされます。
Boolean
snap_offset
(オプション)

ポイントをネットワークにスナップする際、オフセット距離を適用できます。 オフセット距離がゼロだと、ポイントはネットワーク フィーチャ (一般的にライン) と一致します。 ネットワーク フィーチャからポイントをオフセットする場合、オフセット距離を入力します。 オフセットは、元のポイントの場所に関連しています。つまり、元のポイントが左側にあった場合、新しい場所は左にオフセットされます。 元のポイントが右側にあれば、新しいロケーションも右側にオフセットされます。

ライン バリアやポリゴン バリアなど、ラインまたはポリゴン ジオメトリを含むサブレイヤーに場所を追加する場合、このパラメーターは使用しません。

デフォルトは 5 メートルです。ただし、このパラメーターは、snap_to_position_along_networkNO_SNAP に設定すると無視されます。

ライン バリアやポリゴン バリアなど、ラインまたはポリゴン ジオメトリを含むサブレイヤーに場所を追加する場合、このパラメーターは使用しません。

入力ネットワーク解析レイヤーのネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。

Linear Unit
exclude_restricted_elements
(オプション)

規制されているネットワーク エレメントを除外するかどうかを指定します。

  • EXCLUDEネットワーク ロケーションがネットワークの通過可能な部分にのみ配置されます。これにより、規制またはバリアが原因で到達できないエレメントにネットワーク ロケーションが配置されなくなります。このオプションを使用してネットワーク ロケーションを追加する前に、期待している結果を得るためにすべての規制バリアを入力ネットワーク解析レイヤーに追加していることを確認してください。このパラメーターはバリア オブジェクトの追加時には適用できません。この場合、「"#"」をパラメーター値として使用します。これがデフォルトです。
  • INCLUDEネットワーク ロケーションがネットワークのすべてのエレメントに配置されます。このパラメーターで追加されるネットワーク ロケーションは、規制が適用されたエレメント上に位置している場合、解析プロセスにおいて到達不能になる可能性があります。

入力ネットワーク解析レイヤーのネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。

Boolean
search_query
[[Source, Expression],...]
(オプション)

検索をソース フィーチャクラス内のフィーチャのサブセットに制限するクエリを定義します。 この機能は、解析に適していないフィーチャで検索したくない場合に有用です。 たとえば、クエリを使用し、特定の道路クラスがあるフィーチャをすべて除外できます。

ネットワーク データセットのソース フィーチャクラスごとに個別の SQL 式を指定できます。 デフォルトでは、ソースにクエリは使用されません。

ネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。

パラメーター値は、ネストされたリストのリストとして指定されます。 ネストしたリストはすべてのネットワーク ソースの名前と SQL 式を示す 2 つの値で構成されます。 SQL 構文の詳細については、「ArcGIS で使用されるクエリ式への SQL リファレンス」をご参照ください。

このリストに入っていないネットワーク ソースには、クエリは適用されません。 同様に、空の文字列として指定された式もクエリなしとして解釈されます。

たとえば、パラメーター値 [["Streets", "\"CFCC\" = 'A15'"], ["Streets_ND_Junctions", ""]] では、Streets ソース フィーチャクラスのクエリを指定して、CFCC フィールドの値が「A15」である道路上にのみ入力を配置します。 Streets_ND_Junctions ソース フィーチャクラスにはクエリが適用されません。

Value Table

派生した出力

名前説明データ タイプ
output_layer

更新されたネットワーク解析レイヤー。

Network Analyst レイヤー

コードのサンプル

AddLocations (ロケーションの追加) の例 1 (Python ウィンドウ)

必須パラメーターのみを使用してツールを実行します。

hospitals = "C:/Data/SanFrancisco.gdb/Analysis/Hospitals"
arcpy.na.AddLocations("Route", "Stops", hospitals, "", "")
AddLocations (ロケーションの追加) の例 2 (Python ウィンドウ)

すべてのパラメーターを使用してツールを実行します。

hospitals = "C:/Data/SanFrancisco.gdb/Analysis/Hospitals"
arcpy.na.AddLocations("Route", "Stops", hospitals,
                      "Name Name #;Attr_Minutes VisitTime 0;CurbApproach # 0",
                      "2 Miles", "FID",
                      [["Streets", "SHAPE"], ["Streets_ND_Junctions", "NONE"]],
                      "MATCH_TO_CLOSEST", "CLEAR", "SNAP", "10 Feet", "EXCLUDE",
                      [["Streets", '"FREEWAY" = 0'],
                      ["Streets_ND_Junctions", ""]])
AddLocations (ロケーションの追加) の例 3 (ワークフロー)

次のスタンドアロン Python スクリプトは、AddLocations (ロケーションの追加) ツールを使用して起点と終点を OD コスト マトリックス レイヤーに読み込む方法を示しています。

レガシー:

GetNASublayer 関数を使用して、ネットワーク解析レイヤーのサブレイヤーを取得できます。 これは ArcGIS Pro 2.7 で導入されました。 以前のソフトウェア バージョンでは、サブレイヤー名をワイルドカードとして使用するネットワーク解析の Layer オブジェクトの listLayers メソッドを使用することがネットワーク解析レイヤーのサブレイヤー オブジェクトを取得する最適な方法でした。

# Name: AddLocations_Workflow.py
# Description: Calculate a travel time matrix between stores. Use the Add
#               Locations tool to load origins and destinations into an OD Cost
#               Matrix layer. Since the origins and destinations are the same in
#               this case, the origins are first loaded from the stores feature
#               class using geometry, and the destinations are loaded from the
#               origins using network location fields in order to speed up the
#               load times.
# Requirements: Network Analyst Extension

# Import system modules
import arcpy
from arcpy import env
import os

try:
    # Check out Network Analyst license if available. Fail if the Network Analyst license is not available.
    if arcpy.CheckExtension("network") == "Available":
        arcpy.CheckOutExtension("network")
    else:
        raise arcpy.ExecuteError("Network Analyst Extension license is not available.")
    
    # Set environment settings
    output_dir = "C:/Data"
    # The NA layer's data will be saved to the workspace specified here
    env.workspace = os.path.join(output_dir, "Output.gdb")
    env.overwriteOutput = True

    # Set inputs and outputs
    input_gdb = "C:/Data/SanFrancisco.gdb"
    network = os.path.join(input_gdb, "Transportation", "Streets_ND")
    layer_name = "StoreTravelTimeMatrix"
    travel_mode = "Driving Time"
    stores = os.path.join(input_gdb, "Analysis", "Stores")
    search_tolerance = "500 Meters"
    search_query = [["Streets", '"FREEWAY" = 0'], ["Streets_ND_Junctions", ""]]
    output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")

    # Create a new OD cost matrix analysis layer. For this scenario, the default
    # value for all the remaining parameters statisfies the analysis requirements
    result_object = arcpy.na.MakeODCostMatrixAnalysisLayer(network, layer_name,
                                                    travel_mode)

    # Get the layer object from the result object. The OD cost matrix layer can
    # now be referenced using the layer object.
    layer_object = result_object.getOutput(0)

    # Get the names of all the sublayers within the OD layer.
    sublayer_names = arcpy.na.GetNAClassNames(layer_object)
    # Store the layer names for later use
    origins_layer_name = sublayer_names["Origins"]
    destinations_layer_name = sublayer_names["Destinations"]

    # Load store features as origins using the geometry of store features.
    # Ensure that the stores are not located on freeways by using a search query.
    arcpy.na.AddLocations(layer_object, origins_layer_name, stores, "",
                          search_tolerance,
                          exclude_restricted_elements="EXCLUDE",
                          search_query=search_query)

    # Because we want our origins and destinations to be the same, load the
    # origins as destinations using the network locations fields. Loading using
    # existing network location fields is much faster than loading using geometry
    # because the network locations have already been calculated.
    # Create a field mappings object that supports network location fields using
    # the candidate fields from origins
    origins_sublayer = arcpy.na.GetNASublayer(layer_object, "Origins")
    candidate_fields = arcpy.ListFields(origins_sublayer)
    field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
                                                  destinations_layer_name, True,
                                                  candidate_fields)
    arcpy.na.AddLocations(layer_object, destinations_layer_name,
                            origins_sublayer, field_mappings, "")

    # Solve the od cost matrix layer. Halt the execution if there is an
    # invalid location
    arcpy.na.Solve(layer_object, "HALT")

    # Save the solved OD cost matrix layer as a layer file on disk
    layer_object.saveACopy(output_layer_file)

    print("Script completed successfully")

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print("An error occurred on line %i" % tb.tb_lineno)
    print(str(e))

環境

特殊なケース

ライセンス情報

  • Basic: Yes
  • Standard: Yes
  • Advanced: Yes

関連トピック