方向 (Network Analyst)
摘要
根据包含路径的网络分析图层生成转弯方向。可以将这些方向信息写入到文本、XML 或 HTML 格式的文件中。如果提供了适合的样式表,也可以将这些方向写入其他任何文件格式。
用法
-
使用工具时如果未得到有效结果,那么该工具会自动求解网络分析图层,因此在生成方向之前,您不需要先求解网络分析图层。
语法
参数 | 说明 | 数据类型 |
in_network_analysis_layer |
将生成方向信息的网络分析图层。只能为路径、最近设施点和车辆配送网络分析图层生成方向信息。 | Network Analyst Layer |
file_type |
输出方向文件的格式。如果“样式表”参数中具有值,则会忽略此处所设置的参数值。
| String |
out_directions_file |
方向文件将写入的完整路径。 如果在“样式表”参数中提供样式表,应确保“输出方向文件”的文件后缀与样式表生成的文件类型匹配。 | File |
report_units |
指定在方向文件中报告长度信息时所使用的线性单位。例如,即使阻抗的单位是米,您也可以选择使用英里显示方向。
| String |
report_time (可选) |
| Boolean |
time_attribute (可选) |
用于提供方向中各行驶时间的基于时间的成本属性。输入网络分析图层所使用的网络数据集中必须存在成本属性。 | String |
language (可选) |
选择生成驾车方向时所使用的语言。下拉列表中显示的语言类别取决于您的计算机中所包含的 ArcGIS 语言包。 请注意,如果要将此工具作为独立服务器服务的一部分进行发布,那么必须确保与您所选语言相对应的 ArcGIS 语言包已经安装到服务器上,这样才能够保证工具正常工作。而且,如果某一语言包未被安装到您的计算机中,该语言将不会显示在下拉列表中;不过,您可以直接键入语言代码而无需从中进行选择。 | String |
style_name (可选) |
选择方向的格式化样式名称。
| String |
stylesheet (可选) |
生成给定格式化输出文件类型(如 PDF、Word 或 HTML 文件)的样式表。“输出方向文件”参数中的文件后缀应与样式表所生成的文件类型相匹配。如果样式表中包含了参数值,则方向工具会自动覆盖“输出文件类型”中所设置的参数。 提示: 如果想要较好地创建自有文本和 HTML 样式表,应复制和编辑 Network Analyst 使用的样式表。它们位于以下目录中:[ArcGIS 安装目录]\ArcGIS\Desktop10.1\NetworkAnalyst\Directions\Styles。HTML 样式表为 Dir2PHTML.xsl,文本样式表为 Dir2PlainText.xsl。 | File |
代码实例
使用所有参数执行“方向”工具。
import arcpy
arcpy.na.Directions("Route","TEXT","C:/temp/Route_Directions.txt","Miles",
"REPORT_TIME","Minutes")
以下独立 Python 脚本演示了如何使用“方向”(Directions) 工具中为某条路径生成一个 HTML 文件格式的驾车方向。
# Name: Directions_Workflow.py
# Description: Generate driving directions in a html file for a route that
# visits the store locations in the best sequence that minimizes
# the total travel time
# Requirements: Network Analyst Extension
#Import system modules
import arcpy
from arcpy import env
try:
#Check out the Network Analyst extension license
arcpy.CheckOutExtension("Network")
#Set environment settings
env.workspace = "C:/data/SanFrancisco.gdb"
env.overwriteOutput = True
#Set local variables
inNetworkDataset = "Transportation/Streets_ND"
outNALayerName = "StoreRoute"
impedanceAttribute = "TravelTime"
startLocation = "Analysis/DistributionCenter"
storeLocations = "Analysis/Stores"
#fieldMappings = "Name Name #; Attr_TravelTime ServiceTime #"
outDirectionsFile = "C:/data/output" + "/" + outNALayerName + "Directions.html"
outLayerFile = "C:/data/output" + "/" + outNALayerName + ".lyr"
#Create a new route layer. The route starts at the distribution center and
#takes the best sequence to visit the store locations.
outNALayer = arcpy.na.MakeRouteLayer(inNetworkDataset, outNALayerName,
impedanceAttribute, "FIND_BEST_ORDER",
"PRESERVE_FIRST","",['Meters'],
"NO_UTURNS",start_date_time="8 AM")
#Get the layer object from the result object. The route layer can
#now be referenced using the layer object.
outNALayer = outNALayer.getOutput(0)
#Get the names of all the sublayers within the route layer.
subLayerNames = arcpy.na.GetNAClassNames(outNALayer)
#Stores the layer names that we will use later
stopsLayerName = subLayerNames["Stops"]
#Load the distribution center as the start location using default field
#mappings and search tolerance
arcpy.na.AddLocations(outNALayer,stopsLayerName,startLocation,"","",
exclude_restricted_elements = "EXCLUDE")
#Load the store locations as stops. Make sure the store locations are
#appended to the Stops sublayer which already contains the distribution
#center location. Map the Attr_TravelTime property from the ServiceTime
#field so that the total travel time for the route will also contain the
#service time using the field mappings
fieldMappings = arcpy.na.NAClassFieldMappings(outNALayer, stopsLayerName)
fieldMappings["Name"].mappedFieldName = "Name"
fieldMappings["Attr_" + impedanceAttribute].mappedFieldName = "ServiceTime"
arcpy.na.AddLocations(outNALayer, stopsLayerName, storeLocations,
fieldMappings, "", append="APPEND",
exclude_restricted_elements = "EXCLUDE")
#Generate driving directions in a HTML file
arcpy.na.Directions(outNALayer,"HTML",outDirectionsFile,"Miles",
"REPORT_TIME",impedanceAttribute)
#Save the solved na layer as a layer file on disk using relative paths
arcpy.SaveToLayerFile_management(outNALayer,outLayerFile,"RELATIVE")
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 occured on line %i" % tb.tb_lineno
print str(e)