FindRoutes (Ruta)
Resumen
FindRoutes determina las rutas más cortas que pasen por las paradas de entrada y devuelve las indicaciones para conducir, información sobre las paradas por las que pasa y el trazado de las rutas, lo cual incluye el tiempo de viaje y la distancia recorrida.
Esta herramienta busca rutas que pasen por distintas paradas de entrada siguiendo una secuencia predeterminada o según una secuencia que minimice el trayecto completo. Las paradas de entrada se pueden agrupar en distintas rutas utilizando el campo RouteName, de modo que la herramienta dé como resultado una ruta para cada grupo de paradas, lo cual permite generar rutas para más de un vehículo con una sola operación de resolución.
Ilustración
Uso
-
La herramienta encuentra las rutas más cortas en función del tiempo de viaje si el valor del parámetro Unidades de medición está basado en el tiempo y en función de la distancia recorrida si el valor se basa en la distancia.
Debe especificar al menos dos paradas para que la herramienta se ejecute correctamente. Puede cargar hasta 10,000 paradas y asignar un máximo de 150 paradas por ruta.
Puede añadir hasta 250 barreras de punto. Puede añadir cualquier cantidad de barreras de línea o polígono, pero las barreras de línea no se pueden intersecar con más de 500 entidades de calle ni las barreras de polígono se pueden intersecar con más de 2,000 entidades.
Puede optar por usar la jerarquía de carreteras al resolver, si desea que los resultados se generen con más rapidez que en el caso de las rutas exactas, pero la solución podría no ser óptima.
Con independencia de que el parámetro Utilizar jerarquía se haya marcado (Verdadero) o no, la jerarquía siempre se usa cuando la distancia en línea recta entre cualquier par de paradas sea mayor que 50 millas (80,46 kilómetros).
Si la distancia entre un punto de entrada y la calle más próxima que se puede atravesar es mayor que 12,42 millas (20 kilómetros), el punto se excluye del análisis.
Sintaxis
Parámetro | Explicación | Tipo de datos |
Stops |
Especifique dos o más paradas entre las cuales trazar las rutas. Puede incorporar hasta 10,000 paradas y asignar un máximo de 150 paradas a una sola ruta. (Las paradas se asignan a las rutas mediante el atributo RouteName). Al especificar las paradas, se pueden definir propiedades para cada uno de ellas, como el nombre o el horario de funcionamiento, mediante el uso de atributos. Las paradas se pueden especificar con los siguientes atributos: Nombre: Nombre de la parada. El nombre se utiliza en las indicaciones sobre cómo llegar. Si no se especifica el nombre, se genera automáticamente un nombre único con el prefijo Location en las paradas, rutas e indicaciones de salida. RouteName: Nombre de la ruta a la que se ha asignado la parada. Si se asigna el mismo nombre de ruta a distintas paradas, las paradas se agrupan y se utilizan para trazar una misma ruta por ellas. Es posible generar muchas rutas en una sola operación de resolución asignando nombres de ruta distintos a grupos distintos de paradas. Con esta herramienta, se pueden agrupar hasta 150 paradas en una ruta. Secuencia: Las rutas de salida pasarán por las paradas en el orden en que se haya especificado con este atributo. En un grupo de paradas con el mismo valor de RouteName, el número de secuencia debe ser mayor que 0 y menor o igual que el número total de paradas. Asimismo, el número de secuencia no debería estar duplicado. Si la opción Reordenar las paradas para encontrar las rutas óptimas está seleccionada (Verdadero), todos los valores de secuencia, salvo el inicio y el final posibles, se ignoran para que la herramienta pueda buscar la secuencia que minimice el viaje total de cada ruta. (La configuración de Preservar el orden de paradas y Volver al inicio determinan si se deben ignorar o no el primer y el último valor de secuencia de cada ruta). AdditionalTime: Cantidad de tiempo pasado en la parada, que se añade al tiempo total de la ruta. Las unidades de este valor de atributo se especifican con el parámetro Unidades de medición. El valor del atributo se incluye en el análisis solo cuando las unidades de medición se basan en el tiempo. El valor predeterminado es 0. Es posible tener en cuenta el tiempo adicional necesario para completar una tarea en una parada, como reparar un aparato, entregar un paquete o inspeccionar una instalación. AdditionalDistance: Distancia adicional de viaje en las paradas, que se añade a la distancia total de la ruta. Las unidades de este valor de atributo se especifican con el parámetro Unidades de medición. El valor del atributo se incluye en el análisis solo cuando las unidades de medición se basan en la distancia. El valor predeterminado es 0. Por lo general, la localización de una parada, como una casa, no se encuentra exactamente en las calle, sino ligeramente apartada de la calle. Este valor de atributo se puede usar para modelizar la distancia entre la localización real de la parada y su localización en la calle, si es importante incluir esa distancia en la distancia total de viaje. TimeWindowStart: Hora más temprana a la cual se puede pasar por una parada. Asegúrese de especificar el valor en forma de valor de fecha y hora como 12/8/2015 12:15 PM. Si se especifica una hora de inicio y de fin de la ventana de tiempo de una parada, se define cuándo puede pasar una ruta por la parada. Siempre que la opción Utilizar ventanas de tiempo esté marcada y se haya seleccionado una unidad basada en tiempo en el parámetro Unidades de medición, la herramienta tratará de buscar una solución que minimice el tiempo completo de trayecto y pase por la parada dentro de la ventana de tiempo prescrita. Al resolver un problema que afecta a varias zonas horarias, los valores de la ventana de tiempo de cada parada hacen referencia a la zona horaria en la que se encuentra la parada. Este campo puede contener un valor nulo, lo cual indica que una ruta puede llegar a cualquier hora antes de la hora indicada en el atributo TimeWindowEnd. Si el atributo TimeWindowEnd también contiene un valor nulo, significa que la ruta puede pasar por esa parada a cualquier hora. TimeWindowEnd: Última hora a la que se puede visitar la ruta. Asegúrese de especificar el valor en forma de valor de fecha y hora como 12/8/2015 12:15 PM. Si se especifica una hora de inicio y de fin de la ventana de tiempo de una parada, se define cuándo puede pasar una ruta por la parada. Siempre que la opción Utilizar ventanas de tiempo esté marcada y se haya seleccionado una unidad basada en tiempo en el parámetro Unidades de medición, la herramienta tratará de buscar una solución que minimice el tiempo completo de trayecto y pase por la parada dentro de la ventana de tiempo prescrita. Al resolver un problema que afecta a varias zonas horarias, los valores de la ventana de tiempo de cada parada hacen referencia a la zona horaria en la que se encuentra la parada. Este campo puede contener un valor nulo, lo cual indica que una ruta puede llegar a cualquier hora después de la hora indicada en el atributo TimeWindowStart. Si el atributo TimeWindowStart también contiene un valor nulo, significa que la ruta puede pasar por esa parada a cualquier hora. CurbApproach: Especifica la dirección en la que un vehículo puede llegar a la parada y partir de ella. El valor de campo se especifica como uno de los siguientes enteros (use el código numérico, no el nombre entre paréntesis):
La propiedad CurbApproach se ha diseñado para trabajar con los dos tipos de estándares nacionales de circulación: por la derecha (Estados Unidos) y por la izquierda (Reino Unido). En primer lugar, considere una parada en el lado izquierdo de un vehículo. Siempre estará situada el lado izquierdo, independientemente de si el vehículo circula por la mitad izquierda o derecha del camino. Las normas de circulación nacionales pueden influir en su decisión de aproximarse a una parada desde una de las dos direcciones posibles, de modo que quede en el lado derecho o en el lado izquierdo del vehículo. Por ejemplo, si desea llegar a una parada y no hay ningún carril entre el vehículo y la parada, elegiría Lado derecho del vehículo (1) en los Estados Unidos y Lado izquierdo del vehículo (2) en el Reino Unido. | Feature Set |
Measurement_Units | Especifique las unidades que se deben usar para medir e indicar el tiempo o la distancia total de viaje de las rutas de salida. Las unidades elegidas para este parámetro determinan si la herramienta medirá la distancia o el tiempo de recorrido para determinar las mejores rutas. Elija una unidad de tiempo para minimizar el tiempo de recorrido. Para minimizar la distancia de recorrido, elija una unidad de distancia. La elección también determina en qué unidades indicará la herramienta el tiempo de recorrido o la distancia total en los resultados. Se incluyen las opciones siguientes:
| String |
Analysis_Region (Opcional) |
Especifique la región en la que desea realizar el análisis. Si no se especifica un valor para este parámetro, la herramienta calcula automáticamente el nombre de la región en función de la ubicación de los puntos de entrada. Se recomienda establecer el nombre de la región para acelerar la ejecución de la herramienta. Para especificar una región, utilice uno de los siguientes valores:
| String |
Reorder_Stops_to_Find_Optimal_Routes (Opcional) |
Especifica si se desea que las paradas se recorran en el orden en el que se han definido o si la herramienta debe determinar el orden para minimizar el recorrido completo.
Buscar el orden de paradas óptimo y las mejores rutas se conoce normalmente como solucionar el problema del viajante de comercio (TSP). | Boolean |
Preserve_Terminal_Stops (Opcional) |
Si la opción Reordenar las paradas para encontrar las rutas óptimas está marcada (o tiene el valor Verdadero), existen opciones para preservar las paradas inicial o final del recorrido y permitir que la herramienta reordene el resto. La primera y la última parada se determinan mediante el valor del atributo Secuencia o, si los valores de Secuencia son nulos, mediante el valor de su Id. de objeto.
Preservar las paradas terminales se ignora si la opción Reordenar las paradas para encontrar las rutas óptimas está desmarcada (o tiene el valor Falso). | String |
Return_to_Start (Opcional) |
Determina si las rutas deben empezar y terminar en la misma ubicación. Con esta opción se evita tener que duplicar la entidad de la primera parada y secuenciar la parada duplicada para colocarla al final. La ubicación de inicio de la ruta es la entidad de parada con el valor mínimo del atributo Secuencia. Si los valores de Secuencia son nulos, se utiliza la entidad de parada con el valor mínimo de Id. de objeto.
| Boolean |
Use_Time_Windows (Opcional) |
Marque esta opción o (configúrela con el valor Verdadero) si hay alguna parada que tenga una ventana de tiempo que especifique a qué horas debe pasar la ruta por la parada. Es posible añadir ventanas de tiempo a las paradas de entrada introduciendo valores de tiempo en los atributos TimeWindowStart y TimeWindowEnd.
La herramienta tardará un poco más en ejecutarse con la opción Utilizar ventanas de tiempo marcada (o con valor Verdadero), incluso aunque ninguna de las paradas tenga ventanas de tiempo configuradas, así que se recomienda quitar esta opción (configurar con valor Falso) si es posible. | Boolean |
Time_of_Day (Opcional) |
Especifica la hora y la fecha en la cual deben comenzar las rutas. Si se especifican la fecha y la hora actuales como valor para este parámetro, la herramienta utilizará las condiciones de tráfico en directo para determinar las mejores rutas y el tiempo total de viaje se basará en las condiciones del tráfico. Al especificar una hora del día se obtienen rutas más precisas y mejores estimaciones del tiempo de viaje porque los tiempos de viaje tienen en cuenta las condiciones del tráfico aplicables a esa fecha y hora. El parámetro Zona horaria para hora del día especifica si la fecha y la hora se refieren a UTC o a la zona horaria en la cual se encuentra la parada. La herramienta ignora este parámetro cuando Unidades de medición no está configurada con una unidad de tiempo. | Date |
Time_Zone_for_Time_of_Day |
Especifica la zona horaria del parámetro Hora del día.
| String |
UTurn_at_Junctions (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. Ello depende de que el cruce sea una intersección o un callejón sin salida. Para adaptarse, el parámetro de la política del giro en U se especifica implícitamente por la cantidad de bordes, o calles, 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.
| String |
Point_Barriers (Opcional) |
Especifique uno o varios puntos para que actúen como restricciones temporales o representen el tiempo o la distancia adicional que se puede necesitar para viajar en las calles subyacentes. Por ejemplo, una barrera de punto se puede usar para representar un árbol caído en una calle o el retraso acumulado en un cruce de ferrocarril. La herramienta impone un límite de 250 puntos que se pueden añadir como barreras. Cuando se especifican las barreras de punto, se pueden definir propiedades para cada una de ellas, como su nombre o el tipo de barrera, mediante el uso de atributos. Las barreras de punto se pueden especificar con los siguientes atributos: Name: nombre de la barrera. BarrierType: especifica si la barrera de punto restringe el viaje completamente o agrega tiempo o distancia cuando se cruza. El valor de este atributo se especifica como uno de los siguientes enteros (use el código numérico, no el nombre entre paréntesis):
Additional_Time: indica cuánto tiempo de viaje se agrega al atravesar la barrera. Este campo solo es aplicable para barreras con coste añadido y solo si las unidades de medición se basan en el tiempo. El valor de este campo debe ser mayor o igual que cero, y sus unidades son las mismas que las especificadas en el parámetro Unidades de medida. Additional_Distance: indica cuánta distancia se agrega al atravesar la barrera. Este campo solo se aplica a barreras con coste agregado y solo si las unidades de medición se basan en distancias. El valor de este campo debe ser mayor o igual que cero, y sus unidades son las mismas que las especificadas en el parámetro Unidades de medida. | Feature Set |
Line_Barriers (Opcional) |
Especifique una o varias líneas que prohíban viajar a cualquier ubicación en la que las líneas se intersequen con las calles. Por ejemplo, un desfile o una protesta que bloquee el tráfico por varios segmentos de calle se puede modelar con una barrera de línea. Una barrera de línea también puede cercar rápidamente varios caminos para que no se puedan atravesar, alejando así las posibles rutas de las partes no deseadas de la red de calles. La herramienta impone un límite en el número de calles que puede restringir usando el parámetro Barreras de línea. Aunque no existe un límite para la cantidad de líneas que se pueden especificar como barreras de línea, la cantidad combinada de calles que se intersecan con todas las líneas no puede ser superior a 500. Cuando se especifican las barreras de línea, se puede definir una propiedad de nombre para cada una de ellas utilizando el siguiente atributo: Name: nombre de la barrera. | Feature Set |
Polygon_Barriers (Opcional) |
Especifique polígonos que restrinjan completamente el viaje o ajusten de una forma proporcional el tiempo o la distancia que se requieren para viajar por las calles que se intersecan con los polígonos. El servicio impone un límite en el número de calles que se pueden restringir usando el parámetro Barreras de polígono. Aunque no existe un límite para la cantidad de polígonos que se pueden especificar como barreras de polígono, la cantidad combinada de calles que se intersecan con todos los polígonos no puede ser superior a 2,000. Cuando se especifican las barreras de polígono, se pueden definir propiedades para cada una de ellas, como su nombre o el tipo de barrera, mediante el uso de atributos. Las barreras de polígono se pueden especificar con los siguientes atributos: Name: nombre de la barrera. BarrierType: especifica si la barrera restringe el viaje completamente o ajusta el tiempo o la distancia para atravesarla. El valor de campo se especifica como uno de los siguientes enteros (use el código numérico, no el nombre entre paréntesis):
ScaledTimeFactor: este es el factor por el cual se multiplica el tiempo de viaje de las calles que se intersecan con la barrera. Este campo solo tiene validez para barreras con coste en escala y solo si las unidades de medida se basan en el tiempo. El valor del campo debe ser mayor que cero. ScaledDistanceFactor: este es el factor por el cual se multiplica la distancia de las calles que se intersecan con la barrera. Este atributo solo tiene validez para barreras con coste en escala y solo si las unidades de medida se basan en distancias. El valor del atributo debe ser mayor que cero. | Feature Set |
Use_Hierarchy (Opcional) | Especifica si es necesario usar la jerarquía para buscar las rutas más cortas entre paradas.
La herramienta siempre vuelve automáticamente al uso de la jerarquía si la distancia en línea recta entre las instalaciones y los puntos de demanda es mayor de 50 millas (80,46 kilómetros), aunque este parámetro se haya definido de modo que no use la jerarquía. | Boolean |
Restrictions (Opcional) |
Especifique qué restricciones debe cumplir la herramienta para buscar las mejores rutas. Una restricción representa una preferencia o un requisito de conducción. En la mayoría de casos, las restricciones ocasionan la prohibición de carreteras, pero también pueden hacer que se eviten o se les dé preferencia. Por ejemplo, al usar una restricción Evitar carreteras con peaje se generará una ruta que solo incluirá carreteras con peaje cuando sea absolutamente necesario viajar por ellas para pasar por una parada. Restricción de altura permite circular evitando cualquier altura que sea inferior a la altura de su vehículo. Si está transportando materiales corrosivos en el vehículo, utilizar la restricción Prohibidos todos los materiales peligrosos impide transportar los materiales en las carreteras en las que está marcado como ilegal hacerlo. Abajo se ofrece una lista de las restricciones disponibles junto con una descripción breve. Nota: Algunas restricciones requieren la especificación de un valor adicional para que se puedan usar como se desea. Este valor se tiene que asociar con el nombre de la restricción y con un parámetro concreto creado para funcionar con la restricción. Puede identificar esas restricciones si sus nombres aparecen en la columna AttributeName del parámetro Valores de los parámetros de atributos. El campo ParameterValue se debe especificar en el parámetro Valores de los parámetros de atributos para que la restricción se use correctamente para encontrar carreteras transitables. Nota: Algunas restricciones solo se admiten en ciertos países. Su disponibilidad se indica por región en la lista siguiente. Para las restricciones con una disponibilidad limitada dentro una región, puede comprobar si están disponibles en un país concreto consultando la tabla de la sección Lista de países de la página web Cobertura de datos para los servicios de análisis de red. Si un país tiene un valor Yes en la columna Logistics Attribute, la restricción con disponibilidad limitada en la región se admite en ese país. Si se especifican nombres de restricción que no están disponibles en el país en el que se encuentran sus incidentes, el servicio pasa por alto las restricciones no válidas. El servicio también pasa por alto las restricciones cuyo valor del parámetro Uso de restricciones está comprendido entre 0 y 1 (consulte el parámetro Valor de parámetro de atributos). Prohíbe todas las restricciones cuyo valor del parámetro Uso de restricciones es es mayor que 0. La herramienta admite las siguientes restricciones:
| String |
Attribute_Parameter_Values (Opcional) | Especifique los valores adicionales requeridos por algunas restricciones, como el peso del vehículo para una restricción de peso. También puede usar el parámetro de atributos para especificar si una restricción prohíbe, evita o prefiere el recorrido por las carreteras que usan la restricción. Si la restricción se ha ideado para evitar carreteras o darles preferencia, puede especificar en qué medida se deben evitar o se les debe dar preferencia usando este parámetro. Por ejemplo, puede elegir que nunca se usen carreteras de peaje, que se eviten en la medida de lo posible o que se les dé una preferencia clara. Si especifica el parámetro Valores de los parámetros de atributos de una clase de entidad, los nombres de los campos de la clase de entidad deben coincidir con los campos que se describen a continuación: AttributeName: muestra el nombre de la restricción. ParameterName: muestra el nombre del parámetro asociado con la restricción. Una restricción puede tener uno o varios valores de campo ParameterName dependiendo del uso previsto para ella. ParameterValue: el valor de ParameterName que la herramienta usará cuando evalúe la restricción. Valores de los parámetros de atributos depende del parámetro Restricciones. El campo ParameterValue solo se usa si el nombre de la restricción se ha especificado como valor del parámetro Restricciones. En Valores de los parámetros de atributos, cada restricción (mostrada como AttributeName) tiene un valor de campo ParameterName, Uso con restricciones, que especifica si la restricción prohíbe, evita o prefiere los viajes por las carreteras asociadas con la restricción y en qué medida las carreteras se evitan o tienen preferencia. El ParameterName Uso de restricción se puede asignar a cualquiera de los siguientes valores de cadenas de texto o a los valores numéricos equivalentes que se muestran entre paréntesis:
En la mayoría de los casos, puede usar el valor predeterminado, PROHIBITED, para Uso de restricción si la restricción depende de una característica del vehículo como su altura. Sin embargo, en algunos casos, el valor de Uso de restricción depende de las preferencias de creación de rutas del usuario. Por ejemplo, la restricción Evitar carreteras con peaje tiene el valor predeterminado AVOID_MEDIUM para el parámetro Uso de restricción. Esto significa que, cuando se utilice la restricción, la herramienta intentará circular fuera de las carreteras con peaje siempre que sea posible. AVOID_MEDIUM también indica lo importante que es evitar las carreteras con peaje al buscar la mejor ruta; tiene una prioridad media. Si se selecciona AVOID_LOW, se dará una importancia menor a evitar los peajes, mientras que si se selecciona AVOID_HIGH se le dará más importancia y, por lo tanto, será más aceptable que el servicio genere rutas más largas para evitar los peajes. Elegir PROHIBITED no permitirá viajar en las carreteras con peaje y hará imposible que una ruta viaje por cualquier parte de una carretera de peaje. Tenga en cuenta que evitar o prohibir carreteras con peaje, y evitando así los pagos de peaje, es el objetivo para algunos; en cambio, otros prefieren conducir en las carreteras con peaje porque evitar el tráfico es más valioso para ellos que el dinero gastado en los peajes. En el último caso, elegiría PREFER_LOW, PREFER_MEDIUM o PREFER_HIGH como valor de Uso de la restricción. Cuanto más alta sea la preferencia, más se apartará la herramienta de su camino para viajar por las carreteras asociadas con la restricción. | Record Set |
Route_Shape (Opcional) |
Especifica el tipo de forma para las entidades de ruta que son la salida de la herramienta. El parámetro se puede especificar usando uno de los siguientes valores:
Cuando el parámetro Forma de la ruta se ha definido como Forma verdadera, la generalización de la forma de la ruta se puede controlar mejor usando el valor apropiado del parámetro Tolerancia de simplificación de línea de ruta. Sea cual sea el valor elegido para el parámetro Forma de ruta, la mejor ruta siempre se determina minimizando el tiempo de viaje o la distancia de viaje; nunca se determina usando la distancia en línea recta entre paradas. Esto significa que solo las formas de la ruta son diferentes, no las calles subyacentes en las que se realizan las búsquedas para encontrar la ruta. | |
Route_Line_Simplification_Tolerance (Opcional) |
Especifique cuánto desea simplificar la geometría de las líneas de salida de las rutas, las indicaciones y los ejes de las rutas. Le herramienta ignora este parámetro si el parámetro Forma de la ruta es distinto de Forma verdadera. La simplificación mantiene puntos críticos de una ruta, como los giros en intersecciones, para definir la forma esencial de la ruta y quita el resto de los puntos. La distancia de simplificación que especifique será el desplazamiento máximo permisible que puede apartarse la línea simplificada de la línea original. La simplificación de una línea reduce el número de vértices que forman parte de la geometría de la ruta. Esto mejora el tiempo de ejecución de la herramienta. | Linear unit |
Populate_Route_Edges (Opcional) |
Especifique si la herramienta debe generar los ejes de cada ruta. Los ejes de ruta representan las entidades individuales de calle o similares que atraviesa la ruta. Por lo general, la capa de salida Ejes de ruta se utiliza para ver qué calles recorren en mayor o menor medida las rutas resultantes.
| |
Populate_Directions (Opcional) |
Especifique si la herramienta debe generar indicaciones de conducción para cada ruta.
| Boolean |
Directions_Language (Opcional) |
Especifique el idioma que se debe utilizar para generar las indicaciones de conducción. Este parámetro solo se usa cuando el parámetro Completar direcciones está activado o definido como Verdadero. El valor del parámetro se puede especificar usando uno de los siguientes códigos de idiomas de dos o cinco caracteres:
Si se especifica un código de idioma no admitido, la herramienta devuelve las indicaciones en el idioma predeterminado, el inglés. | String |
Directions_Distance_Units (Opcional) |
Especifica las unidades para mostrar la distancia de viaje en las indicaciones de conducción. Este parámetro solo se usa cuando el parámetro Completar direcciones está activado o definido como Verdadero.
| String |
Directions_Style_Name (Opcional) |
Especifique el nombre del estilo de formato para las indicaciones. Este parámetro solo se usa cuando el parámetro Completar direcciones está activado o definido como Verdadero. El parámetro se puede especificar usando los valores siguientes:
| String |
Ejemplo de código
La siguiente secuencia de comandos de Python muestra cómo utilizar la herramienta FindRoutes en una secuencia de comandos.
import arcpy
import time
import datetime
import sys
username = "<your user name>"
password = "<your password>"
FindRoute_service = "http://logistics.arcgis.com/arcgis/services;World/Route;{0};{1}".format(username, password)
#Add the geoprocessing service as a toolbox. Use an alias when importing
arcpy.ImportToolbox(FindRoute_service, "agol")
#Set the variables to call the tool
stops = r'C:/data/Inputs.gdb/Stops'
output_routes = r'C:/data/Results.gdb/Routes'
output_route_edges = r'C:/data/Results.gdb/Route_Edges'
output_directions = r'C:/data/Results.gdb/Directions'
output_stops = r'C:/data/Results.gdb/Stops'
#Call the tool
result = arcpy.agol.FindRoutes(stops, "Minutes",
Reorder_Stops_to_Find_Optimal_Routes=True,
Preserve_Terminal_Stops="Preserve First",
Time_of_Day=datetime.datetime(2014, 2, 10, 8, 0, 0))
#Check the status of the result object every 0.5 seconds
#until it has a value of 4(succeeded) or greater
while result.status < 4:
time.sleep(0.5)
#print any warning or error messages returned from the tool
result_severity = result.maxSeverity
if result_severity == 2:
print "An error occured when running the tool"
print result.getMessages(2)
sys.exit(2)
elif result_severity == 1:
print "Warnings were returned when running the tool"
print result.getMessages(1)
#Get the output routes and save to a local geodatabase
result.getOutput(1).save(output_routes)
result.getOutput(2).save(output_route_edges)
result.getOutput(3).save(output_directions)
result.getOutput(4).save(output_stops)