概要
ネットワーク解析レイヤーに入力フィーチャやレコードを追加します。これらの入力は、ストップやバリアなどの特定のサブレイヤーに追加されます。
使用法
このツールを実行して、ネットワーク解析オブジェクトを同じサブレイヤーに繰り返し追加できます。たとえば、ルート レイヤーのストップを 2 つのフィーチャクラスから取得する場合は、このツールを 2 回 (フィーチャクラスごとに 1 回) 実行します。2 回目の実行時には、[追加] パラメーター (Python の場合は append = "APPEND") をオンにします。
新しいオブジェクトを読み込む前に既存のネットワーク解析オブジェクトを削除するには、[追加] パラメーター (Python の場合は append = "CLEAR") をオフにします。
入力の配置時に、ネットワーク解析レイヤーの移動モードと既存のバリアが考慮されます。このため、他の解析の入力を読み込む前に、解析の移動モードの設定とバリアの読み込みを行っておくことをお勧めします。
ネットワーク データセットのネットワーク ソースとして使用されるフィーチャクラスが有効かつ最新の空間インデックスを保持している場合、このツールは非常に高速に実行されます。
解析レイヤーがポータル サービスを参照する場合、ロケーション フィールドは、解析を実行するまでは計算されません。これらのレイヤーの場合、[ロケーションの追加 (Add Locations)] ツールは、ロケーション フィールドを計算せずに、解析レイヤーに入力を追加します。このため、一部のツール パラメーターはこれらのレイヤーに適用されず、ツール ダイアログ ボックスで非表示になるか、Python で無視されます。
構文
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 (オプション) | 入力フィーチャをネットワークに配置するために使用される検索許容値。検索許容値の外側にあるフィーチャは配置されません。パラメーターには許容値の値と単位が含まれます。 デフォルトは 5,000 メートルです。 ライン バリアやポリゴン バリアなど、ラインまたはポリゴン ジオメトリを含むサブレイヤーに場所を追加する場合、このパラメーターは使用しません。 入力ネットワーク解析レイヤーのネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。 | Linear Unit |
sort_field (オプション) | ネットワーク解析オブジェクトをネットワーク解析レイヤーに追加する際に、ネットワーク解析オブジェクトをソートする基準となるフィールド。デフォルトは入力フィーチャクラスまたはテーブル内の ObjectID フィールドです。 | Field |
search_criteria [[Source, SnapType],...] (オプション) | ネットワーク ロケーションの計算時に検索するネットワーク データセットのソース、および使用するジオメトリの部分 (スナップ タイプとも呼ばれます) です。たとえば、ネットワーク データセットが道路と歩道を表す個別のフィーチャクラスを参照する場合、入力を道路上に配置できますが、歩道上に配置できません。 各ネットワーク ソースに使用できるスナップ タイプ オプションは、次のとおりです。
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 (オプション) | ネットワーク ロケーションの一致方法を指定します。
ライン バリアやポリゴン バリアなど、ラインまたはポリゴン ジオメトリを含むサブレイヤーに場所を追加する場合、このパラメーターは使用しません。 入力ネットワーク解析レイヤーのネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。 | Boolean |
append (オプション) | 新しいネットワーク解析オブジェクトを既存のオブジェクトに追加するかどうかを指定します。
| Boolean |
snap_to_position_along_network (オプション) | 入力内容を計算済みのネットワーク ロケーションにスナップするか、元の地理的位置に表示するかを指定します。 解析でアプローチ制限を使用して、ロケーションにアプローチするために車両が道路のどちら側を走行する必要があるかを制御する場合は、入力内容をネットワーク ロケーションにスナップしないか、スナップ オフセットを使用して、道路の片側にポイントがはっきりと表示されたままになるようにします。 ライン バリアやポリゴン バリアなど、ラインまたはポリゴン ジオメトリを含むサブレイヤーに場所を追加する場合、このパラメーターは使用しません。 入力ネットワーク解析レイヤーのネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。 メモ:ロケーションを追加した後で、ネットワーク解析レイヤーの移動モードを変更するか、バリアを追加/削除すると、影響を受けるポイントのネットワーク ロケーションが解析時に自動的に再計算され、その有効性が維持されます。この自動再計算処理では、これまでにネットワーク ロケーションの計算で使用された設定 (検索クエリなど) が考慮されません。代わりに、入力フィーチャのジオメトリおよびネットワーク解析レイヤーの移動モードとバリアだけが使用されます。ポイントのネットワーク ロケーションを自動的に再計算する場合に同じネットワーク ロケーションが選択される可能性を高くするには、このパラメーターを使用して、このツールの実行時に算出されたネットワーク ロケーションに入力内容をスナップします。これにより、入力ポイントのジオメトリで目的のネットワーク ロケーションが維持されます。
| Boolean |
snap_offset (オプション) | ポイントをネットワークにスナップする際、オフセット距離を適用できます。オフセット距離が 0 だと、ポイントはネットワーク フィーチャ (一般的にライン) と一致します。ネットワーク フィーチャからポイントをオフセットする場合、オフセット距離を入力します。オフセットは、元のポイントの場所に関連しています。つまり、元のポイントが左側にあった場合、新しい場所は左にオフセットされます。元のポイントが右側にあれば、新しいロケーションも右側にオフセットされます。 ライン バリアやポリゴン バリアなど、ラインまたはポリゴン ジオメトリを含むサブレイヤーに場所を追加する場合、このパラメーターは使用しません。 デフォルトは 5 メートルです。ただし、このパラメーターは、snap_to_position_along_network を NO_SNAP に設定すると無視されます。 ライン バリアやポリゴン バリアなど、ラインまたはポリゴン ジオメトリを含むサブレイヤーに場所を追加する場合、このパラメーターは使用しません。 入力ネットワーク解析レイヤーのネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。 | Linear Unit |
exclude_restricted_elements (オプション) | 規制されているネットワーク エレメントを除外するかどうかを指定します。
入力ネットワーク解析レイヤーのネットワーク データ ソースがポータル サービスの場合、このパラメーターは使用されません。 | 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 レイヤー |
コードのサンプル
必須パラメーターのみを使用してツールを実行します。
hospitals = "C:/Data/SanFrancisco.gdb/Analysis/Hospitals"
arcpy.na.AddLocations("Route", "Stops", hospitals, "", "")
すべてのパラメーターを使用してツールを実行します。
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", ""]])
次のスタンドアロン 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: はい
- Standard: はい
- Advanced: はい