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

サマリー

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

使用法

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

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

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

パラメーター

ラベル説明データ タイプ
ネットワーク データ ソース

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

Network Dataset Layer;String
レイヤー名
(オプション)

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

String
移動モード
(オプション)

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

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

String
移動方向
(オプション)

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

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

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

指定されたインシデントに対して施設の検索を停止するインピーダンス値。単位は、[移動モード] の値で使用されるインピーダンス属性の単位です。 このカットオフは、[移動方向] パラメーターが [施設へ] に設定されている場合、インシデント サブレイヤーのカットオフ値を個別に指定することで、インシデントごとにオーバーライドできます。また、[移動方向] パラメーターが [施設から] に設定されている場合は、施設サブレイヤーのカットオフ値を個別に指定することで、施設ごとにオーバーライドできます。 デフォルトでは、解析にカットオフは使用されません。

Double
検出する施設数
(オプション)

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

Long
時刻
(オプション)

ルートの開始または終了の日時。 この値の解釈は、[時刻の使用法] をルートの開始時間に設定するか、終了時間に設定するかによって変わります。

交通量ベースのインピーダンス属性を選択した場合、ここで指定した時刻での動的な交通状況に対する解決策が生成されます。 日時は、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
タイム ゾーン
(オプション)

[時刻] パラメーターのタイム ゾーン。

  • ロケーションのローカル タイム[時刻] パラメーターが、施設またはインシデントの場所のタイム ゾーンを表します。 これがデフォルトです。
    • [時刻の使用法][開始時間] に設定され、[移動方向][施設から] に設定されている場合、これは施設のタイム ゾーンです。
    • [時刻の使用法][開始時間] に設定され、[移動方向][施設へ] に設定されている場合、これはインシデントのタイム ゾーンです。
    • [時刻の使用法][終了時間] に設定され、[移動方向][施設から] に設定されている場合、これはインシデントのタイム ゾーンです。
    • [時刻の使用法][終了時間] に設定され、[移動方向][施設へ] に設定されている場合、これは施設のタイム ゾーンです。
  • UTC[時刻] パラメーターが、UTC (協定世界時) を参照します。 特定の時刻に (たとえば今) 最も近いものを検出したいが、施設またはインシデントの場所のタイム ゾーンがわからない場合は、このオプションを選択します。
String
時刻の使用法
(オプション)

[時刻] パラメーターの値がルートの到着時間と出発時間のどちらを表すかを指定します。

  • 開始時間[時刻] パラメーターの値は、施設またはインシデントからの出発時間として解釈されます。 これがデフォルトです。この設定が選択されている場合、[時刻] パラメーターは、解析が指定された出発時間における最善のルートを検出できることを示しています。
  • 終了時間[時刻] パラメーターの値は、施設またはインシデントへの到着時間として解釈されます。このオプションは、[時刻] パラメーターで指定した時間に目的地に到着するために、ある場所から出発すべき時間を知りたい場合に便利です。
String
ライン形状
(オプション)

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

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

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

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

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

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

String
解析でのルート案内の生成
(オプション)

ルート案内を生成するかどうかを指定します。

  • オン - 解析時にルート案内が生成されます。
  • オフ - 解析時にルート案内が生成されません。 これがデフォルトです。

ルート案内を生成する必要のない解析では、このオプションをオフのままにすると、解析にかかる時間が短縮されます。

Boolean
解析時に無効なロケーションを除外
(オプション)

無効な入力ロケーションを除外するかどうかを指定します。 通常、「ネットワーク上に配置」できないロケーションは無効です。 無効なロケーションを除外する場合は、そのロケーションがスキップされ、残りのロケーションを使用して解析が実行されます。

  • オン - 無効な入力ロケーションが除外され、有効なロケーションだけが使用されます。 これがデフォルトです。
  • オフ - すべての入力ロケーションが使用されます。 ロケーションが無効な場合は、解析が正常に実行されません。
Boolean

派生した出力

ラベル説明データ タイプ
Network Analyst レイヤー

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

Network Analyst Layer

arcpy.management.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}, {ignore_invalid_locations})
名前説明データ タイプ
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
ignore_invalid_locations
(オプション)

無効な入力ロケーションを除外するかどうかを指定します。 通常、「ネットワーク上に配置」できないロケーションは無効です。 無効なロケーションを除外する場合は、そのロケーションがスキップされ、残りのロケーションを使用して解析が実行されます。

  • SKIP無効な入力ロケーションが除外され、有効なロケーションだけが使用されます。 これがデフォルトです。
  • HALTすべての入力ロケーションが使用されます。 ロケーションが無効な場合は、解析が正常に実行されません。
Boolean

派生した出力

名前説明データ タイプ
out_network_analysis_layer

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

Network Analyst Layer

コードのサンプル

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))