解析の実行 (Solve) (Network Analyst)

サマリー

指定したネットワーク ロケーションとプロパティに基づいて、ネットワーク解析レイヤーを実行します。

使用法

  • 解析が失敗すると、警告およびエラー メッセージにより失敗の原因に関する有用な情報が表示されます。

  • このツールを実行する前に、解析の実行に必要なネットワーク解析レイヤーのすべてのパラメーターを必ず指定してください。

  • このツールは、ネットワーク解析レイヤーが ArcGIS Online をネットワーク データ ソースとして参照する場合に「クレジットを消費」します。 詳細については、「クレジット」をご参照ください。

パラメーター

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

解析が実行されるネットワーク解析レイヤー。

Network Analyst Layer
無効なロケーションを除外
(オプション)

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

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

デフォルト値は、指定された [入力ネットワーク解析レイヤー] 値の [解析時に無効なロケーションを除外] 設定と一致します。

Boolean
解析エラー時に処理を終了する
(オプション)

解析中にエラーが発生した場合、ツールが実行を停止して終了するかどうかを指定します。

  • オン - エラーが発生した場合、ツールが実行を停止して終了します。 これがデフォルトです。
  • オフ - エラーが発生してもツールは停止せず、実行を継続します。 解析から返されたすべてのエラー メッセージが警告メッセージとして表示されます。 バックグラウンド処理がアプリケーションで有効になっている場合は、このオプションを使用します。
Boolean
単純化許容値
(オプション)

出力ジオメトリの単純化の度合いを決定する許容値。 許容値を指定する場合、ゼロより大きい値を指定する必要があります。 単位は自由に選択できます。デフォルトの単位は 10 進度です。

単純化許容値を指定すると、ルートまたは到達圏のレンダリングが高速化する傾向があります。 ただし、その欠点は、ジオメトリの単純化によって頂点が削除され、大きいスケールで出力の空間的な正確性が低下する可能性があることです。

頂点が 2 つしかないラインはそれ以上単純化できないため、このパラメーターは、直線ルート、OD コスト マトリックス ライン、ロケーション-アロケーション ラインなどの単一セグメント出力の描画時間には影響を与えません。

Linear Unit
オーバーライド
(オプション)

注意:

このパラメーターは、内部的な目的のみで使用されます。

String

派生した出力

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

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

Network Analyst Layer
解析成功

解析が正常に実行されたかどうかを示すブール値。

Boolean

arcpy.management.Solve(in_network_analysis_layer, {ignore_invalids}, {terminate_on_solve_error}, {simplification_tolerance}, {overrides})
名前説明データ タイプ
in_network_analysis_layer

解析が実行されるネットワーク解析レイヤー。

Network Analyst Layer
ignore_invalids
(オプション)

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

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

デフォルト値は、指定された in_network_analysis_layer 値の ignoreInvalidLocations プロパティと一致します。

Boolean
terminate_on_solve_error
(オプション)

解析中にエラーが発生した場合、ツールが実行を停止して終了するかどうかを指定します。

  • TERMINATEエラーが発生した場合、ツールが実行を停止して終了します。 これがデフォルトです。 このオプションを使用すると、ツールが解析中のエラーによって終了した場合に Result オブジェクトが作成されません。 ArcPy オブジェクトから取得されたジオプロセシング メッセージを確認してください。
  • CONTINUEエラーが発生してもツールは停止せず、実行を継続します。 解析から返されたすべてのエラー メッセージが警告メッセージとして表示されます。 このオプションを使用すると、Result オブジェクトが常に作成され、Result オブジェクトの maxSeverity プロパティは 1 に設定されます。 インデックス値を 1 にして Result オブジェクトの getOutput メソッドを使用すると、解析が正常に実行されたかどうかを判断できます。
Boolean
simplification_tolerance
(オプション)

出力ジオメトリの単純化の度合いを決定する許容値。 許容値を指定する場合、ゼロより大きい値を指定する必要があります。 単位は自由に選択できます。デフォルトの単位は 10 進度です。

単純化許容値を指定すると、ルートまたは到達圏のレンダリングが高速化する傾向があります。 ただし、その欠点は、ジオメトリの単純化によって頂点が削除され、大きいスケールで出力の空間的な正確性が低下する可能性があることです。

頂点が 2 つしかないラインはそれ以上単純化できないため、このパラメーターは、直線ルート、OD コスト マトリックス ライン、ロケーション-アロケーション ラインなどの単一セグメント出力の描画時間には影響を与えません。

Linear Unit
overrides
(オプション)

注意:

このパラメーターは、内部的な目的のみで使用されます。

String

派生した出力

名前説明データ タイプ
output_layer

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

Network Analyst Layer
solve_succeeded

解析が正常に実行されたかどうかを示すブール値。

Boolean

コードのサンプル

Solve の例 1 (Python ウィンドウ)

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

arcpy.na.Solve("Route", "HALT", "TERMINATE", "10 Meters")
Solve の例 2 (ワークフロー)

次のスタンドアロン Python スクリプトは、Solve 関数を使用して最寄り施設の検出解析を実行し、結果をレイヤー ファイルに保存する方法を示しています。

# Name: Solve_Workflow.py
# Description: Solve a closest facility analysis to 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))