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

概要

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

使用法

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

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

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

構文

arcpy.na.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無効なロケーションがある場合、解析を実行しません。無効なロケーションを修正した後、解析を再実行します。
Boolean
terminate_on_solve_error
(オプション)

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

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

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

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

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

Linear Unit
overrides
(オプション)

ネットワーク解析問題の解決法を見つける場合に、解析の動作に影響を与えることができる追加設定を指定します。

JSON (JavaScript Object Notation) で、このパラメーターの値を指定する必要があります。たとえば、有効な値は {"overrideSetting1" : "value1", "overrideSetting2" : "value2"} という形式です。オーバーライド設定名は、必ず二重引用符で囲みます。値は、数値、ブール型、または文字列のいずれかにすることができます。

このパラメーターのデフォルト値は、値なしであり、解析の設定を上書きしません。

オーバーライドは、設定を適用する前後で得られた結果を慎重に分析した後にのみ使用する必要のある高度な設定です。解析ごとにサポートされているオーバーライド設定の一覧およびそれらの許容される値については、Esri テクニカル サポートにお問い合わせください。

String

派生した出力

名前説明データ タイプ
output_layer

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

Network Analyst レイヤー
solve_succeeded

解析が成功したかどうかを示すブール値。

ブール型

コードのサンプル

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

ライセンス情報

  • Basic: 制限付き
  • Standard: 制限付き
  • Advanced: 制限付き

関連トピック