概要
ルートに基づいて、ネットワーク解析レイヤーから詳細なルート案内を生成します。ルート案内は、テキスト形式、XML 形式、または HTML 形式のファイルに書き込むことができます。適切なスタイルシートを用意すれば、ルート案内は他の任意のファイル形式に書き込むことができます。
使用法
このツールは、ネットワーク解析レイヤーに有効な結果がなければその解析を実行するため、ルート案内を生成する前にネットワーク解析レイヤーを解析する必要はありません。
構文
arcpy.na.Directions(in_network_analysis_layer, file_type, out_directions_file, report_units, {report_time}, {time_attribute}, {language}, {style_name}, {stylesheet})
パラメーター | 説明 | データ タイプ |
in_network_analysis_layer | ルート案内を生成するネットワーク解析レイヤー。ルート案内は、ルート、最寄り施設、および配車ルート ネットワーク解析レイヤーに対してのみ生成することができます。 | Network Analyst Layer |
file_type | 出力されるルート案内ファイルの形式。スタイルシート パラメーターが値を持つ場合、このパラメーターは無視されます。
| String |
out_directions_file | stylesheet パラメーターにスタイルシートを指定する場合は、out_directions_file のファイル接尾辞が、スタイルシートが生成するファイル タイプに一致することを確認してください。 | File |
report_units | ルート案内ファイルで距離の情報を出力する際の距離単位を指定します。たとえば、インピーダンスがメートル単位の場合でも、ルート案内をマイル単位で表示することができます。
| String |
report_time (オプション) |
| Boolean |
time_attribute (オプション) | ルート案内の移動時間を提供する時間ベースのコスト属性。入力ネットワーク解析レイヤーで使用されるネットワーク データセットには、コスト属性が必ず存在する必要があります。 | String |
language (オプション) | ルート案内を生成するときの言語を選択します。 このパラメーターの入力は、ルート案内生成に使用できる言語のうちの 1 つを表す 2 文字または 5 文字の言語コードである必要があります。Python で ListDirectionsLanguages 関数を使用して、使用可能な言語コードのリストを取得できます。 | String |
style_name (オプション) | ルート案内の書式スタイルの名前を選択します。
| String |
stylesheet (オプション) | 書式設定された出力ファイル タイプ (PDF、Word、または HTML ファイルなど) を生成するためのスタイルシート。[出力ルート案内ファイル] パラメーターのファイル接尾辞は、スタイルシートが生成するファイル タイプに一致している必要があります。このパラメーターが値を持つ場合、[ルート案内 (Directions)] ツールは [出力ルート案内ファイル] パラメーターをオーバーライドします。 ヒント:独自のテキストおよび HTML スタイルシートの作成をスムーズに開始したい場合は、Network Analyst が使用するスタイルシートをコピーして編集します。これらは、次のディレクトリにあります。<ArcGIS installation directory>\ArcGIS\ArcGIS Pro\Resources\NetworkAnalyst\Directions\Styles スタイルシートは Dir2PHTML.xsl、テキスト スタイルシートは Dir2PlainText.xsl です。 | File |
派生した出力
名前 | 説明 | データ タイプ |
output_layer | ルートに基づいて更新されたネットワーク解析レイヤー。 | Network Analyst レイヤー |
コードのサンプル
すべてのパラメーターを付与して、Directions (ルート案内) ツールを実行します。
arcpy.na.Directions("Route", "TEXT", "C:/Data/Route_Directions.txt", "Miles",
"REPORT_TIME", "Minutes")
次のスタンドアロン Python スクリプトは、Directions ツールを使用してルートの道順案内を HTML ファイルで生成する方法を示しています。
# Name: Directions_Workflow.py
# Description: Generate driving directions in an html file for a route that
# visits the store locations in the best sequence in order to
# minimize the total travel time
# 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 inputs and outputs
input_gdb = "C:/Data/SanFrancisco.gdb"
network = os.path.join(input_gdb, "Transportation", "Streets_ND")
layer_name = "StoreRoute"
travel_mode = "Driving Time"
start_location = os.path.join(input_gdb, "Analysis", "DistributionCenter")
store_locations = os.path.join(input_gdb, "Analysis", "Stores")
output_directions = os.path.join(output_dir,
layer_name + "_Directions.html")
output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")
#Create a new route layer. The route starts at the distribution center and
#visits the stores in the best order to yield the shortest travel time.
result_object = arcpy.na.MakeRouteAnalysisLayer(network, layer_name,
travel_mode, "PRESERVE_FIRST",
time_of_day="8:00 AM")
#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"]
#Load the distribution center as the start location using default field
#mappings and search tolerance
arcpy.na.AddLocations(layer_object, stops_layer_name, start_location, "",
"")
#Load the store locations as stops. Make sure the store locations are
#appended to the Stops sublayer so the distribution center you just loaded
#isn't overwritten. Map the ServiceTime field from the input data to the
#Attr_[impedance] property in the Stops sublayer so that the time it takes to
#service each store is included in the total travel time for the route.
#Figure out what the impedance attrbute is
solver_props = arcpy.na.GetSolverProperties(layer_object)
impedance = solver_props.impedance
#Handle field mappings
field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
stops_layer_name)
field_mappings["Name"].mappedFieldName = "Name"
field_mappings["Attr_" + impedance].mappedFieldName = "ServiceTime"
arcpy.na.AddLocations(layer_object, stops_layer_name, store_locations,
field_mappings, "", append="APPEND",
exclude_restricted_elements = "EXCLUDE")
#Generate driving directions in an HTML file
arcpy.na.Directions(layer_object, "HTML", output_directions, "Miles",
"REPORT_TIME", impedance)
#Save the solved na 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: 次のものが必要 Network Analyst
- Standard: 次のものが必要 Network Analyst
- Advanced: 次のものが必要 Network Analyst