arcpy.na.MakeRouteAnalysisLayer(network_data_source, {layer_name}, {travel_mode}, {sequence}, {time_of_day}, {time_zone}, {line_shape}, {accumulate_attributes}, {generate_directions_on_solve}, {time_zone_for_time_fields}, {ignore_invalid_locations}, {analysis_geodatabase}, {analysis_feature_dataset_name})
|
名前
|
説明
|
データ タイプ
|
|
network_data_source
|
ネットワーク解析が実行されるネットワーク データセットまたはサービス。
このパラメーターは、次のいずれかを使用して指定できます。
ポータル URL を使用するには、ルート検索権限があるアカウントでポータルにサイン インする必要があります。
Python でポータルにサイン インする方法の詳細
ルート検索サービスを使用したネットワーク解析についての詳細
ArcGIS Online を使用してルート検索サービスが入力ネットワークとして構成されている ArcGIS Online または ArcGIS Enterprise ポータルを使用している場合、解析を実行するとクレジットが消費され、特定の制限 (許可された入力の数など) の対象になります。
ネットワーク解析におけるクレジット消費量と解析の制限の詳細
|
Network Dataset Layer; String
|
|
layer_name
(オプション)
|
作成されるネットワーク解析レイヤーの名前。
|
String
|
|
travel_mode
(オプション)
|
解析で使用する移動モードの名前。 移動モードは、移動規制や U ターン ポリシーなど、歩行者、車、トラック、その他の交通手段がネットワークをどのように移動するかを決定するネットワーク設定のコレクションを表します。 移動モードは、ネットワーク データ ソースに対して定義されます。
arcpy.na.TravelMode オブジェクトおよび移動モードの有効な JSON 表現を含む文字列もパラメーターの入力として使用できます。
|
String
|
|
sequence
(オプション)
|
最適ルートの計算時に、入力ストップを特定の順序で巡回する必要があるかどうかを指定します。 このオプションにより、ルート解析は最短パス問題から巡回セールスマン問題に変わります。
USE_CURRENT_ORDER—入力の順序に従って、ストップを巡回します。 これがデフォルトです。
FIND_BEST_ORDER—最適ルートを検索するためにストップの順番を並べ替えます。 このオプションにより、ルート解析は最短パス問題から巡回セールスマン問題に変わります。
PRESERVE_BOTH—入力の順序に従って最初と最後のストップを維持します。 最適ルートを検索するために残りのストップの順番を並べ替えます。
PRESERVE_FIRST—入力の順序に従って最初のストップを維持します。 最適ルートを検索するために残りのストップの順番を並べ替えます。
PRESERVE_LAST—入力の順序に従って最後のストップを維持します。 最適ルートを検索するために残りのストップの順番を並べ替えます。
|
String
|
|
time_of_day
(オプション)
|
ルートの開始日時。 ルートの開始時間は一般的に、1 日の時刻に応じて変化するインピーダンス属性に基づいたルートの検索に使用されます。 たとえば、混雑時の交通量を考慮したルートの検索では、開始時間として午前 7 時を使用します。 このパラメーターのデフォルト値は、午前 8 時です。 日付と時刻は 2005/10/21 10:30 のように指定できます。ルートが複数日にわたり、開始時間のみが指定されている場合は、現在の日付が使用されます。
解析後、出力ルートにはルートの開始時刻と終了時刻が挿入されます。 これらの開始時刻と終了時刻は、ルート案内の生成時にも使用されます。
特定の静的な日付の代わりに曜日または現在の日付をモデル化するには、次のいずれかの特殊な日付を使用するように解析を構成します。
Today—12/30/1899
Sunday—12/31/1899
Monday—1/1/1900
Tuesday—1/2/1900
Wednesday—1/3/1900
Thursday—1/4/1900
Friday—1/5/1900
Saturday—1/6/1900
ネットワーク解析での日時の使用と解釈の詳細
|
Date
|
|
time_zone
(オプション)
|
time_of_day パラメーターのタイム ゾーンを指定します。
LOCAL_TIME_AT_LOCATIONS—time_of_day パラメーターが、ルートの最初のストップがある場所のタイム ゾーンを表します。 これがデフォルトです。多くのルートを生成していて、それらが複数のタイム ゾーンで開始される場合、それぞれの開始時間は UTC (協定世界時) でずれが発生します。 たとえば、1 月 2 日の time_of_day の値が 10:00 a.m. の場合、 東部標準時ゾーンで開始されるルートは開始時間が東部標準時の 10:00 a.m. (3:00 p.m. UTC)、中央標準時ゾーンで開始されるルートは開始時間が中央標準時の 10:00 a.m. (4:00 p.m. UTC) になります。 開始時間が UTC では 1 時間異なります。出力ストップ フィーチャクラスに記録される到着日時と出発日時は、各ルートの最初のストップがある場所のタイム ゾーンです。
UTC—time_of_day パラメーターが、UTC (協定世界時) を参照します。 特定の時刻 (たとえば今) におけるルートを生成する場合で、最初のストップがある場所のタイム ゾーンがわからない場合、このオプションを選択します。多くのルートを生成していて、それらが複数のタイム ゾーンにまたがっている場合、UTC での開始時間は同時です。 たとえば、1 月 2 日の time_of_day の値が 10:00 a.m. の場合、 東部標準時ゾーンで開始されるルートは開始時間が東部標準時の 5:00 a.m. (10:00 a.m. UTC)、中央標準時ゾーンで開始されるルートは開始時間が中央標準時の 4:00 a.m. (10:00 a.m. UTC) になります。 どちらのルートも午前 10 時 UTC に開始されます。出力ストップ フィーチャクラスに記録される到着日時と出発日時は UTC です。
|
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
(オプション)
|
解析を実行するときに、ルート案内を生成するかどうかを指定します。
ターンごとのルート案内を生成する必要のない解析では、ルート案内の生成をオフにすると、解析にかかる時間が短縮されます。
|
Boolean
|
|
time_zone_for_time_fields
(オプション)
|
タイム ウィンドウに使用されるフィールドなど、入力テーブルに含まれる時間フィールドを解釈するために使用されるタイム ゾーンを指定します。
|
String
|
|
ignore_invalid_locations
(オプション)
|
無効な入力ロケーションを除外するかどうかを指定します。 通常、ネットワーク上で特定できないロケーションは無効になります。 無効なロケーションを除外する場合は、そのロケーションがスキップされ、残りのロケーションを使用して解析が実行されます。
|
Boolean
|
|
analysis_geodatabase
(オプション)
|
新しいネットワーク解析レイヤーのサブレイヤー データが格納されるファイル ジオデータベース ワークスペース。 このパラメーターが指定されていない場合、サブレイヤー データは、通常プロジェクト ジオデータベースである 現在のワークスペース ジオプロセシング環境に作成されます。
ネットワーク解析レイヤーの解析データ ソースの詳細
|
Workspace
|
|
analysis_feature_dataset_name
(オプション)
|
ネットワーク解析レイヤーのサブレイヤー データを格納するために、このツールが解析ジオデータベースに作成する新しいフィーチャ データセットに使用する名前。 指定しない場合、ランダムな一意の名前を使用してフィーチャ データセットが作成されます。
ネットワーク解析レイヤーの解析データ ソースの詳細
|
String
|
派生した出力
|
名前
|
説明
|
データ タイプ
|
|
out_network_analysis_layer
|
出力ネットワーク解析レイヤー。
|
Network Analyst Layer
|
コードのサンプル
MakeRouteAnalysisLayer の例 1 (Python ウィンドウ)
必須パラメーターのみを使用して、ツールを実行します。
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeRouteAnalysisLayer(network, "WorkRoute")
MakeRouteAnalysisLayer の例 2 (Python ウィンドウ)
すべてのパラメーターを使用してツールを実行します。
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeRouteAnalysisLayer(network, "InspectionRoute", "Driving Time",
"FIND_BEST_ORDER", "1/1/1900 9:00 AM", "UTC",
"ALONG_NETWORK", ["Meters", "TravelTime"])
MakeRouteAnalysisLayerの例 3 (ワークフロー)
次のスタンドアロン Python スクリプトは、MakeRouteAnalysisLayer 関数を使用して、ジオコーディングされたストップ ロケーションを巡回する最適ルートを検索する方法を示しています。
# Name: MakeRouteAnalysisLayer_Workflow.py
# Description: Find a best route to visit the stop locations and save the
# route to a layer file. The stop locations are geocoded from a
# text file containing the addresses.
# Requirements: Network Analyst extension
#Import system modules
import arcpy
from arcpy import env
import os
try:
#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/SanFrancisco.gdb"
network = os.path.join(input_gdb, "Transportation", "Streets_ND")
layer_name = "BestRoute"
travel_mode = "Driving Time"
address_locator = "C:/Data/SanFranciscoLocator"
address_table = "C:/Data/StopAddresses.csv"
address_fields = "Street Address;City City;State State;ZIP <None>"
out_stops = "GeocodedStops"
output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")
#Create a new Route layer. For this scenario, the default values for all the
#remaining parameters statisfy the analysis requirements
result_object = arcpy.na.MakeRouteAnalysisLayer(network, layer_name,
travel_mode)
#Get the layer object from the result object. The route layer can now be
#referenced using the layer object.
layer_object = result_object.getOutput(0)
#Get the names of all the sublayers within the route layer.
sublayer_names = arcpy.na.GetNAClassNames(layer_object)
#Stores the layer names that we will use later
stops_layer_name = sublayer_names["Stops"]
#Geocode the stop locations from a csv file containing the addresses.
#The Geocode Addresses tool can use a text or csv file as input table
#as long as the first line in the file contains the field names.
arcpy.geocoding.GeocodeAddresses(address_table, address_locator,
address_fields, out_stops)
#Load the geocoded address locations as stops mapping the address field from
#geocoded stop features as Name property using field mappings.
field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
stops_layer_name)
field_mappings["Name"].mappedFieldName = "Address"
arcpy.na.AddLocations(layer_object, stops_layer_name, out_stops,
field_mappings, "")
#Solve the route layer, ignoring any invalid locations such as those that
#cannot be geocoded
arcpy.na.Solve(layer_object, "SKIP")
#Save the solved route 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))
MakeRouteAnalysisLayerの例 4 (ワークフロー)
この例では、1 つの解析で複数のルートを作成する方法を示します。この方法は、起点と終点の間の距離または運転時間を計算するのに便利です。
レガシー:
GetNASublayer 関数を使用して、ネットワーク解析レイヤーのサブレイヤーを取得できます。 これは ArcGIS Pro 2.7 で導入されました。 以前のソフトウェア バージョンでは、サブレイヤー名をワイルドカードとして使用するネットワーク解析の Layer オブジェクトの listLayers メソッドを使用することがネットワーク解析レイヤーのサブレイヤー オブジェクトを取得する最適な方法でした。
# Name: MakeRouteAnalysisLayer_MultiRouteWorkflow.py
# Description: Calculate the home-work commutes for a set of people and save
# the output to a feature class
# Requirements: Network Analyst extension
#Import system modules
import arcpy
from arcpy import env
import datetime
import os
try:
#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/SanFrancisco.gdb"
network = os.path.join(input_gdb, "Transportation", "Streets_ND")
stops_home = os.path.join(input_gdb, "Analysis", "Commuters_Home")
stops_work = os.path.join(input_gdb, "Analysis", "Commuters_Work")
layer_name = "Commuters"
out_routes_featureclass = "Commuter_Routes"
travel_mode = "Driving Time"
#Set the time of day for the analysis to 8AM on a generic Monday.
start_time = datetime.datetime(1900, 1, 1, 8, 0, 0)
#Create a new Route layer. Optimize on driving time, but compute the
#distance traveled by accumulating the Meters attribute.
result_object = arcpy.na.MakeRouteAnalysisLayer(network, layer_name,
travel_mode, time_of_day=start_time,
accumulate_attributes=["Meters"])
#Get the layer object from the result object. The route layer can now be
#referenced using the layer object.
layer_object = result_object.getOutput(0)
#Get the names of all the sublayers within the route layer.
sublayer_names = arcpy.na.GetNAClassNames(layer_object)
#Stores the layer names that we will use later
stops_layer_name = sublayer_names["Stops"]
routes_layer_name = sublayer_names["Routes"]
#Before loading the commuters' home and work locations as route stops, set
#up field mapping. Map the "Commuter_Name" field from the input data to
#the RouteName property in the Stops sublayer, which ensures that each
#unique Commuter_Name will be placed in a separate route. Matching
#Commuter_Names from stops_home and stops_work will end up in the same
#route.
field_mappings = arcpy.na.NAClassFieldMappings(layer_object, stops_layer_name)
field_mappings["RouteName"].mappedFieldName = "Commuter_Name"
#Add the commuters' home and work locations as Stops. The same field mapping
#works for both input feature classes because they both have a field called
#"Commuter_Name"
arcpy.na.AddLocations(layer_object, stops_layer_name, stops_home,
field_mappings, "")
arcpy.na.AddLocations(layer_object, stops_layer_name, stops_work,
field_mappings, "", append="APPEND")
#Solve the route layer.
arcpy.na.Solve(layer_object)
# Get the output Routes sublayer and save it to a feature class
routes_sublayer = arcpy.na.GetNASublayer(layer_object, "Routes")
arcpy.management.CopyFeatures(routes_sublayer, out_routes_featureclass)
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))