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

概要

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

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

使用法

  • このツールを実行して、ネットワーク解析オブジェクトを同じサブレイヤーに繰り返し追加できます。たとえば、ルート レイヤーのストップを 2 つのフィーチャクラスから取得する場合、APPEND オプションを使用してツールを 2 回実行します。

  • 新しいオブジェクトを読み込む前に既存のネットワーク解析オブジェクトを削除するには、CLEAR オプションを使用します。

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

構文

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
(オプション)

ネットワーク解析オブジェクトのプロパティの値。プロパティは定数を設定するか、入力フィーチャクラスまたはテーブルのフィールドに割り当てることができます。

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

注意:

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

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

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

デフォルトは 5,000 メートルです。

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

Linear Unit
sort_field
(オプション)

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

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

ロケーション検索時に検索するネットワーク データセットのソース、および使用するジオメトリの部分 (スナップ タイプとも呼ばれます) です。

パラメーター値は、ネストされたリストとともにリストとして指定されます。ネストしたリストは各ネットワーク ソースの名前とスナップ タイプを示す 2 つの値で構成されます。スナップ タイプは SHAPEMIDDLEENDNONE キーワードを使用して指定されます。

  • SHAPE- 該当するネットワーク ソース内にあるエレメントの最近接点にポイントが配置されます。
  • MIDDLE- 該当するネットワーク ソース内にあるエレメントの最近接の中間点にポイントが配置されます。
  • END- 該当するネットワーク ソース内にあるエレメントの最近接の端点にポイントが配置されます。
  • NONE- 該当するネットワーク ソース内にあるエレメントにポイントが配置されません。
たとえば、ロケーション検索時には、パラメーター値 [["Streets","SHAPE"],["Streets_ND_Junctions","NONE"]] は、Streets ソースでなく Streets_ND_Junctions ソースの形状に基づいた検索が可能であることを示します。

1 つのネットワーク ソースに複数のスナップ タイプを指定するには、アンダースコアで区切ったスナップ タイプ キーワードの組み合わせを使用します。たとえば、MIDDLE_END はロケーションがネットワーク ソースの中間または端点にスナップされることを示します。

ラインまたはポリゴン ネットワーク ロケーションを追加する際、他のスナップ タイプが指定されていても SHAPE スナップ タイプのみが使用されます。

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

システム ジャンクションのデフォルト値は SHAPE で、システム ジャンクションを除くすべてのネットワーク ソースのデフォルト値は NONE です。

Value Table
match_type
(オプション)

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

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

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

Boolean
append
(オプション)

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

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

ネットワーク データセットに沿ってネットワーク ロケーションをスナップするか、ネットワーク データセットから指定したオフセットにネットワーク ロケーションをスナップするかどうかを指定します。

  • NO_SNAP ネットワーク ロケーションのジオメトリは入力フィーチャのジオメトリに基づきます。これはネットワーク ロケーションがエッジのどちら側にあるかを識別している必要があるカーブ アプローチを使用する場合に役立ちます。これがデフォルトです。
  • SNAPポイント フィーチャがある場合、ポイントはネットワークにスナップされ、カーブ アプローチを使用することはできません。これは車両がどのようにストップに近づくかを知る必要がある場合に役立ちます。入力フィーチャがラインまたはポリゴンの場合、このパラメーター値を使用します。

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

Boolean
snap_offset
(オプション)

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

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

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

Linear Unit
exclude_restricted_elements
(オプション)

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

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

検索をソース フィーチャクラス内のフィーチャのサブセットに制限するクエリ。この機能は、ネットワーク ロケーションとして適切でないフィーチャを除外する場合に有用です。たとえば、ポリゴンの重心を読み込む場合に、生活道路に配置したくない場合は、一般道路のみを検索するクエリを定義できます。

パラメーター値は、ネストされたリストとともにリストとして指定されます。ネストしたリストはすべてのネットワーク ソースの名前と SQL 式を示す 2 つの値で構成されます。SQL 式の構文はネットワーク ソース フィーチャクラスのタイプによって少し異なります。たとえば、クエリ対象がファイル ジオデータベース、エンタープライズ ジオデータベース、またはシェープファイルに格納されたソース フィーチャクラスの場合は、次のようにフィールド名を二重引用符で囲みます: "CFCC"

特定のソースに対してクエリを定義したくない場合、SQL 式に値として「"#"」を入力するか、またはパラメーター値からソース名と SQL 式を除外します。すべてのネットワーク ソースに対してクエリを定義したくない場合、パラメーター値として「"#"」を入力します。

たとえば、パラメーター値「[["Streets","\"CFCC\" = 'A15'"], ["Streets_ND_Junctions",""]]」では、Streets ソース フィーチャクラスに対する SQL 式を定義し、Streets_ND_Junctions ソース フィーチャクラスには SQL 式を定義しません。フィールド名 CFCC を囲むために使用される二重引用符は、Python インタープリターで構文解析エラーが発生しないようバックスラッシュ文字でエスケープされます。

デフォルトでは、クエリは使用されません。

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 コスト マトリックス レイヤーに読み込む方法を示しています。

# 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 = layer_object.listLayers(origins_layer_name)[0]
    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: はい

関連トピック