最寄り施設の検出解析レイヤーの作成 (Make Closest Facility Analysis Layer) (Network Analyst)

概要

最寄り施設の検出ネットワーク解析レイヤーを作成し、解析プロパティを設定します。最寄り施設の検出解析レイヤーは、指定した移動モードに基づいて、インシデントまでの最寄り施設を検出する際に役立ちます。レイヤーは、ローカル ネットワーク データセットや、オンラインでホストされたサービスまたはポータル内のサービスを使用して作成できます。

使用法

  • このツールで解析レイヤーを作成した後は、[ロケーションの追加 (Add Locations)] ツールを使用して解析レイヤーにネットワーク解析オブジェクトを追加し、[解析の実行 (Solve)] ツールを使用して解析を実行し、[レイヤー ファイルの保存 (Save To Layer File)] ツールを使用して結果をディスクに保存することができます。

  • このツールをジオプロセシング モデルに使用するときは、モデルをツールとして動作させる場合、出力ネットワーク解析レイヤーにモデル パラメーターを作成する必要があります。そうしないと、出力レイヤーはマップのコンテンツに追加されません。

  • ArcGIS Pro では、ネットワーク解析レイヤーのデータは、ディスク上のファイル ジオデータベースのフィーチャクラスに格納されます。プロジェクトでネットワーク解析レイヤーを作成する場合、レイヤーのデータは、現在のワークスペース環境の新しいフィーチャ データセット内に作成されます。Python スクリプトでネットワーク解析レイヤーを作成する場合、まず arcpy.env.workspace = "<path to file gdb>" を使用して、ワークスペース環境をレイヤーのデータを格納するファイル ジオデータベースに明示的に設定する必要があります。レイヤーが作成されるとき、適切なサブレイヤーのフィーチャクラスを含む新しいフィーチャ データセットがこのファイル ジオデータベースに追加されます。

構文

MakeClosestFacilityAnalysisLayer(network_data_source, {layer_name}, {travel_mode}, {travel_direction}, {cutoff}, {number_of_facilities_to_find}, {time_of_day}, {time_zone}, {time_of_day_usage}, {line_shape}, {accumulate_attributes}, {generate_directions_on_solve})
パラメーター説明データ タイプ
network_data_source

ネットワーク解析が実行されるネットワーク データセットまたはサービス。サービスのポータル URL を使用します。

Network Dataset Layer;String
layer_name
(オプション)

作成するネットワーク解析レイヤーの名前。

String
travel_mode
(オプション)

解析で使用する移動モードの名前。移動モードは、移動規制や U ターン ポリシーなど、歩行者、車、トラック、その他の交通手段がネットワークをどのように移動するかを決定するネットワーク設定のコレクションを表します。移動モードは、ネットワーク データ ソースに対して定義されます。

arcpy.na.TravelMode オブジェクトおよび移動モードの有効な JSON 表現を含む文字列もパラメーターの入力として使用できます。

String
travel_direction
(オプション)

施設とインシデントの間で移動する方向を指定します。

  • TO_FACILITIES移動する方向はインシデントから施設の方向になります。小売店の場合、買物客 (インシデント) が小売店に到達するまでの時間が重視されるため、通常はこの設定が使用されます。これがデフォルトです。
  • FROM_FACILITIES移動する方向は施設からインシデントの方向になります。消防署の場合、消防署 (施設) から緊急事態の場所 (インシデント) まで移動する時間が重視されるため、通常はこの設定が使用されます。

移動方向は、ネットワークに一方通行の道路や移動方向に基づくインピーダンスが含まれる場合、検出される施設に影響する可能性があります。たとえば、特定のインシデントから施設まで 10 分で移動できても、一方通行の道路や交通量の条件の違いから、施設からインシデントの方向では 15 分かかる場合があります。

String
cutoff
(オプション)

指定されたインシデントに対して施設の検索を停止するインピーダンス値。単位は、選択した travel_mode で使用されるインピーダンス属性の単位です。このカットオフは、travel_direction='TO_FACILITIES' の場合、インシデント サブレイヤーのカットオフ値を個別に指定することで、インシデントごとにオーバーライドできます。また、travel_direction='FROM_FACILITIES' の場合は、施設サブレイヤーのカットオフ値を個別に指定することで、施設ごとにオーバーライドできます。デフォルトでは、解析にカットオフは使用されません。

Double
number_of_facilities_to_find
(オプション)

インシデントごとに検出する最寄り施設の数。インシデント サブレイヤーの TargetFacilityCount プロパティの値を個別に指定することで、このデフォルトをオーバーライドすることができます。検出する施設のデフォルト数は 1 です。

Long
time_of_day
(オプション)

ルートの開始または終了の日時を指定します。この値の解釈は、time_of_day_usage をルートの開始時間に設定するか、終了時間に設定するかによって変わります。

交通量ベースのインピーダンス属性を選択した場合、ここで指定した時刻での動的な交通状況に対する解決策が生成されます。日時は、2012/05/14 10:30 のように指定できます。

特定の日付を使用する代わりに、次の日付を使用して曜日を指定することができます。

  • 今日 - 12/30/1899
  • 日曜 - 12/31/1899
  • 月曜 - 1/1/1900
  • 火曜 - 1/2/1900
  • 水曜 - 1/3/1900
  • 木曜 - 1/4/1900
  • 金曜 - 1/5/1900
  • 土曜 - 1/6/1900

Date
time_zone
(オプション)

time_of_day パラメーターのタイム ゾーンを指定します。

  • LOCAL_TIME_AT_LOCATIONStime_of_day パラメーターが、施設またはインシデントの場所のタイム ゾーンを参照します。これがデフォルトです。
    • time_of_day_usageSTART_TIME に、travel_directionFROM_FACILITIES に設定されている場合、これは施設のタイム ゾーンです。
    • time_of_day_usageSTART_TIME に、travel_directionTO_FACILITIES に設定されている場合、これはインシデントのタイム ゾーンです。
    • time_of_day_usageEND_TIME に、travel_directionFROM_FACILITIES に設定されている場合、これはインシデントのタイム ゾーンです。
    • time_of_day_usageEND_TIME に、travel_directionTO_FACILITIES に設定されている場合、これは施設のタイム ゾーンです。
  • UTCtime_of_day パラメーターが、UTC (協定世界時) を参照します。特定の時刻に (たとえば今) 最も近いものを検出したいが、施設またはインシデントの場所のタイム ゾーンがわからない場合は、このオプションを選択します。
String
time_of_day_usage
(オプション)

time_of_day パラメーターの値がルートの到着時間と出発時間のどちらを表すかを示します。

  • START_TIMEtime_of_day は、施設またはインシデントからの出発時間として解釈されます。これがデフォルトです。この設定が選択されている場合、time_of_day は、解析が指定された出発時間における最善のルートを検出できることを示しています。
  • END_TIMEtime_of_day は、施設またはインシデントでの到着時間として解釈されます。このオプションは、time_of_day で指定した時間に目的地に到着するために、ある場所から出発すべき時間を知りたい場合に便利です。
String
line_shape
(オプション)

解析で出力されるルート フィーチャの形状タイプを指定します。

どの出力形状のタイプを選択するかに関係なく、常に最適なルートはユークリッド距離ではなくネットワーク インピーダンスによって決定されます。これは、ルート形状のみが異なり、ネットワークの基となっているトラバースは同じであることを意味します。

  • ALONG_NETWORK出力ルートはネットワーク ソースの正確な形状を保持します。リニア リファレンスのためのルートのメジャー値が出力に含まれます。メジャー値は、最初のストップから増加し、指定された位置に到着するまでの累積インピーダンスを記録します。
  • NO_LINES出力ルートに形状は生成されません。
  • STRAIGHT_LINES出力ルート形状はストップ間を結ぶ 1 本の直線になります。
String
accumulate_attributes
[accumulate_attributes,...]
(オプション)

解析中に累積されるコスト属性のリスト。これらの累積属性は、参考情報としてのみ使用されます。解析では、指定されている移動モードで使用されるコスト属性のみが使用されます。

累積されるコスト属性ごとに、ネットワーク解析の出力フィーチャに Total_[Impedance] プロパティが入力されます。

このパラメーターは、ネットワーク データ ソースが ArcGIS Online サービスである場合、あるいはネットワーク データ ソースが累積をサポートしないバージョンの Portal for ArcGIS のサービスである場合には使用できません。

String
generate_directions_on_solve
(オプション)

解析を実行するときに、ルート案内を生成するかどうかを指定します。

  • DIRECTIONS 解析時にルート案内を生成することを指定します。
  • NO_DIRECTIONS解析時にルート案内を生成しないことを指定します。これがデフォルトです。

ルート案内を生成する必要がない解析の場合は、デフォルトのオプション NO_DIRECTIONS を使用すると、解析の実行にかかる時間が大幅に短縮されます。

Boolean

派生した出力

名前説明データ タイプ
out_network_analysis_layer

新しく作成されたネットワーク解析レイヤー。

Network Analyst レイヤー

コードのサンプル

MakeClosestFacilityAnalysisLayer (最寄り施設の検出解析レイヤーの作成) の例 1 (Python ウィンドウ)

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

network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeClosestFacilityAnalysisLayer(network, "ClosestFireStations")
MakeClosestFacilityAnalysisLayer (最寄り施設の検出解析レイヤーの作成) の例 2 (Python ウィンドウ)

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

network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeClosestFacilityAnalysisLayer(network, "ClosestHospitals",
                                "Driving Time", "TO_FACILITIES", 5, 3,
                                "1/1/1900 9:00 AM", "UTC", "START_TIME",
                                "ALONG_NETWORK", ["Meters", "TravelTime"])
MakeClosestFacilityAnalysisLayer (最寄り施設の検出解析レイヤーの作成) の例 3 (スタンドアロン スクリプト)

次のスタンドアロン Python スクリプトは、MakeClosestFacilityAnalysisLayer ツールを使用して店舗の場所から最寄りの倉庫を検索する方法を示しています。

# Name: MakeClosestFacilityAnalysisLayer_Workflow.py
# Description: Find the closest warehouse from the store locations and save the
#              results to a layer file on disk.
# 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 local variables
    input_gdb = "C:/Data/Paris.gdb"
    network = os.path.join(input_gdb, "Transportation", "ParisMultimodal_ND")
    layer_name = "ClosestWarehouse"
    travel_mode = "Driving Time"
    facilities = os.path.join(input_gdb, "Analysis", "Warehouses")
    incidents = os.path.join(input_gdb, "Analysis", "Stores")
    output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")

    #Create a new closest facility analysis layer. 
    result_object = arcpy.na.MakeClosestFacilityAnalysisLayer(network,
                                    layer_name, travel_mode, "TO_FACILITIES",
                                    number_of_facilities_to_find=1)

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

    #Get the names of all the sublayers within the closest facility layer.
    sublayer_names = arcpy.na.GetNAClassNames(layer_object)
    #Stores the layer names that we will use later
    facilities_layer_name = sublayer_names["Facilities"]
    incidents_layer_name = sublayer_names["Incidents"]

    #Load the warehouses as Facilities using the default field mappings and
    #search tolerance
    arcpy.na.AddLocations(layer_object, facilities_layer_name,
                            facilities, "", "")

    #Load the stores as Incidents. Map the Name property from the NOM field
    #using field mappings
    field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
                                                    incidents_layer_name)
    field_mappings["Name"].mappedFieldName = "NOM"
    arcpy.na.AddLocations(layer_object, incidents_layer_name, incidents,
                          field_mappings, "")

    #Solve the closest facility layer
    arcpy.na.Solve(layer_object)

    #Save the solved closest facility 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: はい