Hacer la capa de la ruta (ArcGIS 10.1 Network Analyst)
Resumen
Crea una capa de análisis de red de ruta y establece sus propiedades de análisis. Una capa de análisis de ruta es útil para determinar la mejor ruta entre un conjunto de ubicaciones de red en función de un costo de red específico.
Uso
-
Después de crear la capa de análisis con esta herramienta, puede agregarle objetos de análisis de red usando la herramienta Agregar ubicaciones, resolver el análisis usando la herramienta Resolver y guardar los resultados en el disco usando la herramienta Guardar en archivo de capa.
-
Cuando se utiliza esta herramienta en modelos de geoprocesamiento, si el modelo se ejecuta como una herramienta, la capa de análisis de red de salida debe ser un parámetro de modelo; de lo contrario, la capa de salida no se agregará a la tabla de contenido en ArcMap.
Sintaxis
Parámetro | Explicación | Tipo de datos |
in_network_dataset |
El dataset de red en el que se realizará el análisis de ruta. | Network Dataset Layer |
out_network_analysis_layer |
Nombre de la capa de análisis de red de ruta que se creará. | String |
impedance_attribute |
El atributo de coste que se usará como impedancia en el análisis. | String |
find_best_order (Opcional) |
| Boolean |
ordering_type (Opcional) |
Especifica el orden de las paradas cuando se usa FIND_BEST_ORDER.
| String |
time_windows (Opcional) | Especifica si se utilizarán ventanas de tiempo en las paradas.
| Boolean |
accumulate_attribute_name [accumulate_attribute_name,...] (Opcional) | Lista de los atributos de coste que se acumularán durante el análisis. Estos atributos de acumulación se usan específicamente de referencia; el solucionador utiliza los atributos de coste especificados por el parámetro de atributos Impedancia para calcular la ruta. Para cada atributo de coste acumulado, se agrega una propiedad Total_[Impedancia] a las rutas generadas por el solucionador. | String |
UTurn_policy (Opcional) |
Política de giro en U en los cruces. Permitir giros en U implica que el solucionador puede dar la vuelta en un cruce y regresar por la misma calle. Debido a que los cruces representan intersecciones de calles y callejones sin salida, los diferentes vehículos pueden ser capaces de dar la vuelta en algunos cruces, pero no en otros, depende de que el cruce sea una intersección o un callejón sin salida. Para acomodar, el parámetro de la política del giro en U se especifica implícitamente por la cantidad de bordes que se conectan en el cruce, que se conoce como valencia de cruce. Los valores aceptables para este parámetro se enumeran a continuación; cada uno seguido de una descripción de su significado en términos de valencia de cruce.
Sugerencia: Si necesita una política más definida respecto a la política de giros en U, considere agregar un evaluador de retraso de giro global con un atributo de coste de red, o ajustar su configuración si existe, y prestar especial atención a la configuración de los giros de 180 grados. Asimismo, examine la configuración de la propiedad CurbApproach de las ubicaciones de la red. | String |
restriction_attribute_name [restriction_attribute_name,...] (Opcional) |
Lista de atributos de restricción que se aplicarán durante el análisis. | String |
hierarchy (Opcional) |
El parámetro no se utiliza si no se definen atributos de jerarquía en el dataset de red utilizado para realizar el análisis. En tales casos, utilice "#" como el valor de parámetro. | Boolean |
hierarchy_settings (Opcional) |
Herencia: Antes de la versión 10, este parámetro le permitía cambiar los rangos de jerarquía para su análisis de los rangos de jerarquía predeterminados establecidos en el dataset de red. En la versión 10, este parámetro ya no es compatible y se debe especificar como una cadena de caracteres vacía. Si desea cambiar los rangos de jerarquía para su análisis, actualice los rangos de jerarquía predeterminados en el dataset de red. | ArcGIS 10.1 Network Analyst Hierarchy Settings |
output_path_shape (Opcional) |
Especifica el tipo de forma para las entidades de ruta que son la salida del análisis.
Sin importar el tipo de forma de salida elegido, la mejor ruta siempre se determina mediante la impedancia de red, nunca según la distancia euclidiana. Esto significa que sólo las formas de las rutas son diferentes, y no el trazado poligonal subyacente de la red. | String |
start_date_time (Opcional) |
Especifica la fecha y hora de inicio para la ruta. La hora de inicio de una ruta se utiliza generalmente para encontrar rutas en base al atributo de impedancia que varía según el momento del día. Por ejemplo, una hora de inicio a las 09:00 podría usarse para encontrar una ruta que tome en cuenta el tráfico en hora punta. El valor predeterminado para este parámetro son las 8:00. Se puede especificar una fecha y hora como 21/10/05 10:30. Si la ruta abarca varios días, y sólo se especifica la hora de inicio, se utilizará la fecha actual. En lugar de usar una fecha determinada, se puede especificar un día de la semana utilizando las siguientes fechas.
Después de la resolución, se completan las horas de inicio y fin de la ruta en las rutas de salida. Estas horas de inicio y fin también se usan cuando se generan indicaciones. | Date |
Ejemplo de código
Ejecutar la herramienta utilizando solo los parámetros requeridos.
import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.MakeRouteLayer("Transportation/Streets_ND","WorkRoute","Minutes")
Ejecutar la herramienta utilizando todos los parámetros.
import arcpy
arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb"
arcpy.na.MakeRouteLayer("Transportation/Streets_ND","InspectionRoute","Minutes",
"FIND_BEST_ORDER","PRESERVE_BOTH","USE_TIMEWINDOWS",
["Meters","Minutes"],
"ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY",["Oneway"],
"USE_HIERARCHY","","TRUE_LINES_WITH_MEASURES",
"1/1/1900 9:00 AM")
La siguiente secuencia de comandos de Python independiente muestra cómo se puede utilizar la herramienta MakeRouteLayer para encontrar la mejor ruta para visitar las ubicaciones de parada geocodificadas.
# Name: MakeRouteLayer_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
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 = "BestRoute"
impedanceAttribute = "TravelTime"
inAddressLocator = "SanFranciscoLocator"
inAddressTable = "C:/data/StopAddresses.csv"
inAddressFields = "Street Address VISIBLE NONE"
outStops = "GeocodedStops"
outLayerFile = "C:/data/output" + "/" + outNALayerName + ".lyr"
#Create a new Route layer. For this scenario, the default value for all the
#remaining parameters statisfies the analysis requirements
outNALayer = arcpy.na.MakeRouteLayer(inNetworkDataset, outNALayerName,
impedanceAttribute)
#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"]
#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(inAddressTable, inAddressLocator,
inAddressFields, outStops)
#Load the geocoded address locations as stops mapping the address field from
#geocoded stop features as Name property using field mappings.
fieldMappings = arcpy.na.NAClassFieldMappings(outNALayer, stopsLayerName)
fieldMappings["Name"].mappedFieldName = "Address"
arcpy.na.AddLocations(outNALayer, stopsLayerName, outStops, fieldMappings,
"", exclude_restricted_elements = "EXCLUDE")
#Solve the route layer, ignore any invalid locations such as those that
#can not be geocoded
arcpy.na.Solve(outNALayer,"SKIP")
#Save the solved route layer as a layer file on disk with relative paths
arcpy.management.SaveToLayerFile(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)