https://machine.domain.com/webadaptor/rest/services/World/VehicleRoutingProblem/GPServer/SolveVehicleRoutingProblem/submitJob?orders={"features":[{"geometry": {"x": -122.51,"y": 37.7724},"attributes": {"DeliveryQuantities": 1706,"Name": "Store_1","ServiceTime": 25,"TimeWindowStart1": 1355245200000,"TimeWindowEnd1": 1355274000000,"MaxViolationTime1": 0}},{"geometry": {"x": -122.4889,"y": 37.7538},"attributes": {"DeliveryQuantities": 1533,"Name": "Store_2","ServiceTime": 23,"TimeWindowStart1": 1355245200000,"TimeWindowEnd1": 1355274000000,"MaxViolationTime1": 0}},{"geometry": {"x": -122.4649,"y": 37.7747},"attributes": {"DeliveryQuantities": 1580,"Name": "Store_3","ServiceTime": 24,"TimeWindowStart1": 1355245200000,"TimeWindowEnd1": 1355274000000,"MaxViolationTime1": 0}},{"geometry": {"x": -122.4739,"y": 37.7432},"attributes": {"DeliveryQuantities": 1289,"Name": "Store_4","ServiceTime": 20,"TimeWindowStart1": 1355245200000,"TimeWindowEnd1": 1355274000000,"MaxViolationTime1": 0}},{"geometry": {"x": -122.4493,"y": 37.7315},"attributes": {"DeliveryQuantities": 1302,"Name": "Store_5","ServiceTime": 21,"TimeWindowStart1": 1355245200000,"TimeWindowEnd1": 1355274000000,"MaxViolationTime1": 0}},{"geometry": {"x": -122.4917,"y": 37.6493},"attributes": {"DeliveryQuantities": 1775,"Name": "Store_6","ServiceTime": 26,"TimeWindowStart1": 1355245200000,"TimeWindowEnd1": 1355274000000,"MaxViolationTime1": 0}},{"geometry": {"x": -122.4832,"y": 37.7012},"attributes": {"DeliveryQuantities": 1014,"Name": "Store_7","ServiceTime": 17,"TimeWindowStart1": 1355245200000,"TimeWindowEnd1": 1355274000000,"MaxViolationTime1": 0}},{"geometry": {"x": -122.5301,"y": 37.8935},"attributes": {"DeliveryQuantities": 1761,"Name": "Store_8","ServiceTime": 26,"TimeWindowStart1": 1355245200000,"TimeWindowEnd1": 1355274000000,"MaxViolationTime1": 0}},{"geometry": {"x": -122.2875,"y": 37.8909},"attributes": {"DeliveryQuantities": 1815,"Name": "Store_9","ServiceTime": 27,"TimeWindowStart1": 1355245200000,"TimeWindowEnd1": 1355274000000,"MaxViolationTime1": 0}}]}&depots={"features": [{"geometry": {"x": -122.3943,"y": 37.7967},"attributes": {"Name": "San Francisco","TimeWindowStart1": 1355241600000,"TimeWindowEnd1": 1355274000000}}]}&routes={"features": [{"attributes": {"Name": "Truck_1","StartDepotName": "San Francisco","EndDepotName": "San Francisco","StartDepotServiceTime": 60,"EarliestStartTime": 1355241600000,"LatestStartTime": 1355241600000,"Capacities": "15000","CostPerUnitTime": 0.2,"CostPerUnitDistance": 1.5,"MaxOrderCount": 2,"MaxTotalTime": 360,"MaxTotalTravelTime": 120,"MaxTotalDistance": 80}},{"attributes": {"Name": "Truck_2","StartDepotName": "San Francisco","EndDepotName": "San Francisco","StartDepotServiceTime": 60,"EarliestStartTime": 1355241600000,"LatestStartTime": 1355241600000,"Capacities": "15000","CostPerUnitTime": 0.2,"CostPerUnitDistance": 1.5,"MaxOrderCount": 2,"MaxTotalTime": 360,"MaxTotalTravelTime": 120,"MaxTotalDistance": 80}},{"attributes": {"Name": "Truck_3","StartDepotName": "San Francisco","EndDepotName": "San Francisco","StartDepotServiceTime": 60,"EarliestStartTime": 1355241600000,"LatestStartTime": 1355241600000,"Capacities": "15000","CostPerUnitTime": 0.2,"CostPerUnitDistance": 1.5,"MaxOrderCount": 2,"MaxTotalTime": 360,"MaxTotalTravelTime": 120,"MaxTotalDistance": 80}}]}&time_units=Minutes&distance_units=Miles&uturn_policy=NO_UTURNS&populate_directions=true&directions_language=en&default_date=1355212800000&f=json&token=<yourToken>
- URL:https://<gpservice-url>/SolveVehicleRoutingProblem
Description
Diversas organizaciones dan servicio a órdenes con una flota de vehículos. Por ejemplo, un almacén de muebles grande podría utilizar varios camiones para entregar muebles a domicilio. Una compañía especializada de reciclaje de aceite podría dirigir a los camiones desde una instalación para recoger el aceite usado de los restaurantes. Un departamento de salud podría programar visitas de inspección diarias para cada uno de sus inspectores sanitarios. El problema común a estos ejemplos es la generación de rutas para flotas. Cada organización necesita determinar a qué órdenes (domicilios, restaurantes o sitios de inspección) se debería dar servicio en cada ruta (camión o inspector) y en qué secuencia se deberían visitar las órdenes. El objetivo principal consiste dar mejor servicio a las órdenes y minimizar el coste total de funcionamiento para la flota de vehículos. El servicio generación de rutas para flotas se puede usar para determinar soluciones para estas tareas de administración de flotas complejas. Además, el servicio puede resolver problemas más concretos porque hay disponibles numerosas opciones, como asignar capacidades de vehículos a cantidades de órdenes, proporcionar un alto nivel de servicio al cliente respetando cualquier ventana de tiempo definida, proporcionar descansos a los conductores y emparejar órdenes para darles servicio en la misma ruta.
Considere como ejemplo la distribución de género depositado un almacén central entre una serie de supermercados. El almacén central dispone de una flota de tres camiones y solo opera en una determinada ventana de tiempo, de 8:00 a 17:00 horas, dentro de la cual todos los camiones deben haber regresado al almacén. Cada camión tiene una capacidad de 15.000 libras, que limita el volumen de género que puede transportar. Cada supermercado demanda una determinada cantidad de género (en libras) que se le debe entregar, y también está sujeto a sus propias ventanas de tiempo, que delimitan las horas en las que se pueden realizar las entregas. Por otro lado, el conductor sólo puede trabajar ocho horas al día, requiere una parada para comer y se le paga en función del tiempo que invierta en la tarea de conducir el camión y entregar el género en los supermercados. Se puede utilizar el servicio para determinar un itinerario para cada ruta tal que permita realizar todas las entregas cumpliendo todos los requisitos de vehículos y órdenes y minimizando el tiempo total que el conductor debe invertir en la ruta.
Explorar:
The sequencing of orders performed by the service always uses static travel times, even when the mode of transportation for the analysis uses an impedance that is based on dynamic travel times fluctuating according to traffic flows, in areas where traffic data is available. But when generating directions, the routes between the sequenced orders use dynamic travel speeds based on traffic.
See the developer documentation to learn more about how to solve the multiple vehicle routing problem (VRP).
Request parameters
Parameter | Description |
---|---|
orders (Required) | Specify the orders the routes will visit. Syntax: |
depots (Required) | Specify a location that a vehicle departs from at the beginning of its workday and returns to at the end of the workday. Syntax: |
routes (Required) | Specify the routes that are available for the given vehicle routing problem. Syntax: |
token (Required) | Provide the identity of a user that has the permissions to access the service. |
f (Required) | Specify the response format. The default value is html. Values: html | json | pjson |
default_date (Optional) | Specify the date on which the routes start as a numeric value representing the milliseconds since midnight, January 1, 1970. |
travel_mode (Optional) | Choose the mode of transportation for the analysis. The default value is Custom. Value: JSON object |
time_zone_usage_for_time_fields (Optional) | Specify the time zone for the input date-time fields. Values: GEO_LOCAL | UTC |
impedance (Optional) | Specify the impedance, which is a value that represents the effort or cost of traveling along road segments or on other parts of the transportation network. Values: TravelTime | Minutes | TruckTravelTime | TruckMinutes | WalkTime | Miles | Kilometers Nota:Estos valores son específicos de los servicios publicados con los datos de ArcGIS StreetMap Premium. Los valores serán diferentes si utiliza otros datos para el análisis. |
breaks (Optional) | Specify the rest periods, or breaks, for the routes in a given vehicle routing problem. Syntax: |
time_units (Optional) | Specify the time units for all time-based attribute values specified with different parameters. The default value is Minutes. Values: Minutes | Seconds | Hours | Days |
distance_units (Optional) | Specify the distance units for all distance-based attribute values specified with different parameters. The default value is Miles. Values: Miles | Kilometers | Feet | Yards | Meters | NauticalMeters |
analysis_region (Optional) | Specify the region in which the analysis will be performed. |
uturn_policy (Optional) | Restrict or permit U-turns at junctions. The default value is ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY. Values: ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY | NO_UTURNS | ALLOW_UTURNS | ALLOW_DEAD_ENDS_ONLY |
time_window_factor (Optional) | Rate the importance of honoring time windows without causing violations. The default value is Medium. Values: Medium | Low | High |
spatially_cluster_routes (Optional) | Specify whether orders that are assigned to an individual route will be spatially clustered. The default value is true. Values: true | false |
route_zones (Optional) | Specify areas that delineate work territories for given routes. Syntax: |
route_renewals (Optional) | Specify the intermediate depots that routes can visit to reload or unload the cargo they are delivering or picking up. Syntax: |
order_pairs (Optional) | Pair pickup and delivery orders so they are serviced by the same route. Syntax: |
excess_transit_factor (Optional) | Rate the importance of reducing excess transit time of order pairs. The default value is Medium. Values: Medium | Low | High |
point_barriers (Optional) | Specify one or more points that will be used as temporary restrictions or represent additional time or distance that may be required to travel on the underlying streets. Syntax: |
line_barriers (Optional) | Specify one or more lines that prohibit travel anywhere the lines intersect the streets. Syntax: |
polygon_barriers (Optional) | Specify polygons that either completely restrict travel or proportionately scale the time or distance required to travel on the streets intersected by the polygons. Syntax: |
use_hierarchy_in_analysis (Optional) | Specify whether hierarchy will be used when finding the best routes for the fleet of vehicles. The default value is true. Values: true | false |
restrictions (Optional) | Specify the restrictions that will be honored. You can specify the value of this parameter as follows:
To view all accepted values for this parameter, see the restrictions parameter below. |
attribute_parameter_values (Optional) | Specify additional values required by an attribute or restriction, such as whether the restriction prohibits, avoids, or prefers travel on restricted roads. To view all accepted values for this parameter, see the attribute_parameter_values parameter below. |
populate_route_lines (Optional) | Specify the shape of the output routes. The default value is true. Values: true | false |
route_line_simplification_tolerance (Optional) | Specify the amount by which the returned route geometry will be simplified. The default value is 10
|
populate_directions (Optional) | Specify whether driving directions will be generated for the routes that are included as part of the vehicle routing problem solution. The default value is false. Values: true | false |
directions_language (Optional) | Specify the language that will be used when generating driving directions. This parameter only applies when the populate_directions parameter is set to true. The default value is en. To view all accepted values, see the directions_language parameter below. |
directions_style_name (Optional) | Specify the name of the formatting style for the directions. This parameter only applies when the populate_directions parameter is set to true. The default value is NA Desktop. Values: NA Desktop | NA Navigation| NA Campus |
save_route_data (Optional) | Specify whether a .zip file will be created that contains a file geodatabase holding the inputs and outputs of the analysis in a format that can be used to share route layers in the portal. The default value is false. Values: true | false |
save_output_network_analysis_layer (Optional) | Specify whether the analysis settings will be saved as a network analysis layer file. The default value is false. Values: true | false |
overrides (Optional) | Nota:Este parámetro es solo para uso interno. |
time_impedance (Optional) | Specify the time-based impedance. The default value is TravelTime. Values: TravelTime | Minutes | TruckTravelTime | TruckMinutes | WalkTime Nota:Estos valores son específicos de los servicios publicados con los datos de ArcGIS StreetMap Premium. Los valores serán diferentes si utiliza otros datos para el análisis. |
distance_impedance (Optional) | Specify the distance-based impedance. The default value is Kilometers. Values:Miles | Kilometers Nota:Estos valores son específicos de los servicios publicados con los datos de ArcGIS StreetMap Premium. Los valores serán diferentes si utiliza otros datos para el análisis. |
populate_stop_shapes (Optional) | Specify whether shapes will be created for the output assigned and unassigned stops. The default value is false. Values: true | false |
output_format (Optional) | Specify the format in which the output features will be created. The default value is Feature Set. Values: Feature Set | JSON File | GeoJSON File |
ignore_invalid_order_locations (Optional) | Specify whether invalid orders will be ignored when solving the vehicle routing problem. The default value is false. Values: true | false |
ignore_network_location_fields (Optional) | Especifica si los campos de ubicación de red se tendrán en cuenta al localizar entradas como paradas o instalaciones en la red. The default value is false. Values: true | false |
env:outSR (Optional) | Specify the spatial reference of the geometries. |
locate_settings (Optional) | Specify settings that affect how inputs are located. Value: JSON object |
Required parameters
orders
Especifica una o varias ubicaciones que visitarán las rutas del análisis de VRP. Una orden puede representar una entrega (por ejemplo, una entrega de muebles), una recogida (como un autobús que recoge pasajeros para ir al aeropuerto) o algún tipo de servicio o inspección (un trabajo para cortar un árbol o una inspección de una construcción, por ejemplo).
The orders parameter can be specified using a JSON structure that represents a set of point features. The parameter is optional; however, the JSON structure must specify either the url or features property:
url: especifique una solicitud de consulta REST para cualquier entidad, mapa o servicio de geoprocesamiento de ArcGIS Server que devuelva un conjunto de entidades JSON.
features: especifique una matriz de entidades.
Each feature in the features array represents an order and contains the following properties:
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Sugerencia:
Se recomienda especificar explícitamente el valor de spatialReference y especificarlo para todo el JSON en lugar de para cada geometría individual.
- attributes: especifique cada atributo como un par de clave-valor donde la clave es el nombre de un campo dado y el valor es el valor de atributo del campo correspondiente.
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Attributes for orders
Cuando se especifican las órdenes, se pueden definir propiedades para cada una, como su nombre o tiempo de servicio, mediante los siguientes atributos:
- ObjectID
Campo ID administrado por el sistema.
- Name
El nombre de la orden. El nombre debe ser único. Si el nombre queda nulo, en el momento de resolución se genera automáticamente un nombre.
- Description
La información descriptiva sobre la orden. Puede contener cualquier información textual para la orden y no tiene ninguna restricción de singularidad. Es posible que desee almacenar el número de Id. de un cliente en el campo Name y el nombre real del cliente o la dirección en el campo Description.
- ServiceTime
Esta propiedad especifica la cantidad de tiempo que se pasará en la ubicación de red cuando la ruta la visite; es decir, almacena el valor de impedancia de la ubicación de red. Un valor de cero o nulo indica que la ubicación de red no requiere ningún tiempo de servicio.
La unidad para este valor de campo la especifica el parámetro time_units.
- TimeWindowStart1
El tiempo inicial de la primera ventana de tiempo para la ubicación de red. Este campo puede contener un valor nulo; un valor nulo no indica ningún tiempo inicial.
Una ventana de tiempo solo indica cuando puede llegar un vehículo a una orden; no indica cuándo se debe completar el tiempo de servicio. Para tener en cuenta el tiempo de servicio y partida antes de que se agote la ventana de tiempo, reste ServiceTime al campo TimeWindowEnd1.
The time window fields (TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2, and TimeWindowEnd2) must be specified in a date field as an integer that represents the number of milliseconds since epoch (January 1, 1970) and not as date-time values. The time zone for time window fields is specified using the time_zone_usage_for_time_fields parameter. For example, if the orders are located in the Pacific standard time zone and you want the time window to start at 8:00 a.m. (local time) on November 18, 2019, specify the value for the TimeWindowStart1 field as milliseconds since epoch for this date and time, which is 1574064000000. Specify the time_zone_usage_for_time_fields parameter value as GEO_LOCAL.
Cuando se resuelve un problema que afecta a varias zonas horarias, los valores de la ventana de tiempo de cada orden hacen referencia a la zona horaria en la que se encuentra la orden.
- TimeWindowEnd1
El tiempo final de la primera ventana para la ubicación de red. Este campo puede contener un valor nulo; un valor nulo no indica ningún tiempo final.
- TimeWindowStart2
El tiempo inicial de la segunda ventana de tiempo para la ubicación de red. Este campo puede contener un valor nulo; un valor nulo indica que no hay segunda ventana de tiempo.
Si la primera ventana de tiempo es nula según lo especificado por los campos TimeWindowStart1 y TimeWindowEnd1, la segunda ventana de tiempo también debe ser nula.
Si ambas ventanas de tiempo son no nulas, no pueden superponerse. Además, la segunda ventana de tiempo debe ocurrir después de la primera.
- TimeWindowEnd2
El tiempo final de la segunda ventana de tiempo para la ubicación de red. Este campo puede contener un valor nulo.
Cuando tanto TimeWindowStart2 como TimeWindowEnd2 son nulos, no hay segunda ventana de tiempo.
Cuando TimeWindowStart2 no es nulo, pero TimeWindowEnd2 sí es nulo, hay una segunda ventana de tiempo que tiene una hora inicial, pero no tiene hora final. Esto es válido.
- MaxViolationTime1
Se considera que se ha infringido una ventana de tiempo si la hora de llegada ocurre después de que la ventana de tiempo ha finalizado. Este campo especifica la hora máxima permitida de infracción de la primera ventana de tiempo de la orden. Puede contener un valor cero, pero no puede contener valores negativos. Un valor cero indica que no es aceptable una infracción de ventana de tiempo en la primera ventana de tiempo de la orden; es decir, la primera ventana de tiempo es estricta. Por el contrario, un valor nulo indica que no existe ningún límite en el tiempo de infracción permitido. Un valor distinto de cero especifica la cantidad máxima de retraso; por ejemplo, una ruta puede llegar a una orden hasta 30 minutos después del final de su primera ventana de tiempo.
The unit for this field value is specified by the time_units parameter
El solucionador puede realizar un seguimiento y ponderación de las infracciones de la ventana de tiempo. Como consecuencia, puede dirigir el solucionador de VRP para que realice una de las siguientes opciones:
- Minimizar el tiempo de infracción total, con independencia del aumento del coste de viaje para la flota.
- Encontrar una solución que equilibre el tiempo de infracción total y el coste del viaje.
- Ignorar el tiempo de infracción total y minimizar el coste de viaje para la flota.
By assigning an importance level for the time_window_factorparameter, you are essentially choosing one of these options. In any case, the solver will return an error if the value set for MaxViolationTime1 is surpassed.
- MaxViolationTime2
Tiempo máximo de infracción permitido para la segunda ventana de tiempo de la orden. Este campo es análogo al campo MaxViolationTime1.
- InboundArriveTime
Define el momento en que el elemento que se va a entregar a la orden estará listo en el depósito inicial.
Nota:
El solucionador de VRP respeta InboundArriveTime independientemente del valor de DeliveryQuantities.
La orden solo se puede asignar a una ruta si la hora de llegada de la entrada precede al valor de la última hora de inicio; de este modo, la ruta no podrá salir del depósito antes de que el elemento esté preparado para cargarse en ella.
Nota:
La hora de inicio de la ruta, incluidos los tiempos de servicio, debe ser posterior a la hora de llegada de la entrada. Si una ruta empieza antes de la hora de llegada de la entrada de la orden, esta no se podrá asignar a la ruta. La asignación no será válida aunque la ruta tenga un tiempo de servicio en el depósito inicial que dure hasta que haya pasado la hora de llegada de la entrada.
Si también se especifica una hora de partida de la salida, el valor de hora debe ser posterior a la hora de llegada de la entrada.
Este campo puede resultar útil en escenarios de modelos en los que se producen transbordos de ondas entrantes. Sería el caso, por ejemplo, de un trabajo de una orden que requiere materiales especiales que, en ese momento, no están disponibles en el depósito. Los materiales se están enviando desde otra ubicación y llegarán al depósito a las 11:00. Para garantizar que una ruta que sale antes de que llegue el cargamento no se asigne a la orden, la hora de llegada de la entrada de la orden se establece a las 11:00. Los materiales especiales llegan a las 11:00, se cargan en el vehículo y este sale del depósito para visitar las órdenes asignadas.
Nota:
Este campo de tiempo puede tener un valor de solo hora o un valor de fecha y hora. Si se define un valor solo de hora (por ejemplo, 11:00 AM), se asume que la fecha es la fecha predeterminada que se ha definido para el análisis. No obstante, la fecha predeterminada se omite cuando un campo de tiempo incluye una fecha con la hora en los campos de depósitos, rutas, órdenes o descansos. En este caso, deberá indicar una fecha y hora en todos estos campos (por ejemplo, 7/11/2015 11:00).
- OutboundDepartTime
Define el momento en que el elemento que se va a recoger en la orden debe llegar al depósito final.
Nota:
El solucionador de VRP respeta OutboundDepartTime independientemente del valor de PickupQuantities.
La orden solo se puede asignar a una ruta si esta puede visitar la orden y llegar a su depósito final antes de la hora de partida de la salida que se haya especificado.
Nota:
La hora de finalización de la ruta, incluidos los tiempos de servicio, debe ser anterior a la hora de partida de la salida. Si la ruta llega al depósito pero no completa su tiempo de servicio en el depósito final antes de la hora de partida de la salida de la orden, no es posible asignar la orden a la ruta.
Si también se especifica una hora de llegada de la entrada, el valor de hora debe ser anterior a la hora de partida de la salida.
Este campo puede resultar útil en escenarios de modelos en los que se producen transbordos de ondas salientes. Supongamos que una empresa de transportes envía camiones de reparto para recoger paquetes de órdenes y los entrega en un depósito donde, a continuación, se llevan a otras instalaciones para entregarlos a su destino final. Cada día, a las 15:00, un tráiler para en el depósito para recoger los paquetes urgentes y los lleva directamente a una estación de central de procesamiento. Para evitar retrasar la entrega de los paquetes urgentes hasta las 15:00 del día siguiente, la empresa de transportes intenta que los camiones de reparto recojan los paquetes urgentes de las órdenes y los lleven del depósito antes de las 15:00. Esto se consigue estableciendo la hora de partida de la salida a las 15:00.
Nota:
Este campo de tiempo puede tener un valor de solo hora o un valor de fecha y hora. Si se define un valor solo de hora (por ejemplo, 11:00 AM), se asume que la fecha es la fecha predeterminada que se ha definido para el análisis. No obstante, la fecha predeterminada se omite cuando un campo de tiempo incluye una fecha con la hora en los campos de depósitos, rutas, órdenes o descansos. En este caso, deberá indicar una fecha y hora en todos estos campos (por ejemplo, 7/11/2015 11:00).
- DeliveryQuantities
El tamaño de la entrega. Puede especificar el tamaño en cualquier dimensión como peso, volumen o cantidad. También puede especificar varias dimensiones, por ejemplo, peso y volumen.
Introduzca las cantidades de entrega sin indicar unidades. Por ejemplo, si es necesario entregar un objeto de 300 libras a una orden, introduzca 300. Es necesario recordar que el valor es en libras.
Si está realizando un rastreo de varias dimensiones, separe los valores numéricos con un espacio. Por ejemplo, si está registrando el peso y el volumen de una entrega que pesa 2.000 libras y tiene un volumen de 100 pies cúbicos, introduzca 2000 100. De nuevo, es necesario recordar las unidades; en este caso, libras y pies cúbicos. También es necesario recordar la secuencia en la que se introducen los valores y sus unidades correspondientes.
Asegúrese de que Capacities para Rutas y DeliveryQuantities y PickupQuantities para Órdenes se especifiquen de igual forma, es decir, los valores deben estar en las mismas unidades. Si está utilizando varias dimensiones, esas dimensiones deben aparecer en la misma secuencia para todos los parámetros. Por ejemplo, si especifica el peso en libras seguido del volumen en pies cúbicos para DeliveryQuantities, es necesario especificar la capacidad de las rutas y las cantidades de recogida de las órdenes de la misma manera: el peso en libras y el volumen en pies cúbicos. Si combina unidades o cambia la secuencia, obtendrá resultados no deseados sin ningún mensaje de advertencia.
Una cadena vacía o un valor nulo equivale a que todas las dimensiones sean infinitas. Si la cadena de caracteres tiene un número de valores insuficiente en relación al recuento de capacidad o dimensiones rastreadas, los valores restantes se tratan como infinitos. Las cantidades de entrega no pueden ser negativas.
- PickupQuantities
El tamaño de la recogida. Puede especificar el tamaño en cualquier dimensión como peso, volumen o cantidad. También puede especificar varias dimensiones, por ejemplo, peso y volumen. No se puede, sin embargo, utilizar valores negativos. Este campo es análogo al campo DeliveryQuantities de Órdenes.
En el caso de una visita de intercambio, una orden puede tener cantidades de entrega y de recogida.
- Revenue
El ingreso generado si la orden se incluye en una solución. Este campo puede contener un valor nulo (un valor nulo indica una renta de cero), pero no puede tener un valor negativo.
Los ingresos se incluyen al optimizar el valor de la función objetivo, pero no forma parte del coste operativo de la solución; es decir, el campo TotalCost de las rutas nunca incluye los ingresos en su salida. Sin embargo, las rentas ponderan la importancia relativa de servir las órdenes.
- SpecialtyNames
Una cadena de caracteres separada por espacios que contiene los nombres de las especialidades requeridas por la orden. Un valor nulo indica que la orden no requiere especialidades.
La ortografía de cualquier especialidad enumerada para la clase Órdenes y rutas debe coincidir exactamente para que el solucionador de VRP pueda vincularlos de forma conjunta.
Para ilustrar qué especialidades son y cómo funcionan, asuma que una empresa de cuidado de céspedes y poda árboles tiene una parte de sus órdenes que requiere un camión recolector a podar árboles altos. La empresa introducirá BucketTruck en el campo SpecialtyNames de estas órdenes para indicar su necesidad especial. SpecialtyNames se deja nulo para el resto de órdenes. De manera similar, la empresa también introduce BucketTruck en el campo SpecialtyNames de las rutas que recorren los camiones con brazos hidráulicos. Deja el campo nulo para el resto de rutas. En el momento de la resolución, el solucionador de VRP asigna órdenes sin necesidades especiales a cualquier ruta, pero solo se asigna órdenes que necesitan camiones recolectores para las rutas que disponen de ellos.
- AssignmentRule
Especifica la regla para asignar la orden a una ruta. El valor de campo se especifica como uno de los siguientes enteros (use el código numérico, no el nombre entre paréntesis):
- 0 (Excluir): la orden se excluirá de la siguiente operación de resolución.
- 1 (Conservar la ruta y la secuencia relativa): el solucionador debe asignar siempre la orden a la ruta preasignada en la secuencia relativa preasignada durante la operación de resolución. Si no se puede seguir esta regla de asignación, se produce una infracción de orden. Con esta configuración, solo se mantiene la secuencia relativa, no la secuencia absoluta. Para ilustrar lo que esto significa, imagine que hay dos órdenes: A y B. Tienen valores de secuencia de 2 y 3, respectivamente. Si se establecen sus valores de campo AssignmentRule en la ruta Conservar y la secuencia relativa, los valores de secuencia de A y B pueden cambiar después de la resolución porque otras órdenes, descansos y visitas al depósito se pueden secuenciar antes, entre, o después de A y B. Sin embargo, B no se puede secuenciar antes que A.
- 2 (Conservar la ruta): el solucionador siempre debe asignar la orden a la ruta preasignada durante la operación de resolución. También se debe establecer una secuencia válida, aunque la secuencia pueda o no conservarse. Si la orden no se puede asignar a la ruta especificada, se produce una infracción de la orden.
- 3 (Invalidación): el solucionador intenta conservar la preasignación de ruta y de secuencia para la orden durante la operación de resolución. Sin embargo, puede asignarse una nueva ruta o secuencia para la orden si esto ayuda a minimizar el valor total de la función objetivo. Este es el valor predeterminado.
- 4 (Delimitar primero): el solucionador ignora la ruta y la preasignación de secuencia (si existe) para la orden durante la operación de resolución. Asigna una ruta a la orden y la convierte en la primera orden de esa ruta para minimizar el valor total de la función objetivo.
- 5 (Delimitar último): el solucionador ignora la ruta y la preasignación de secuencia (si existe) para la orden durante la operación de resolución. Asigna una ruta a la orden y la convierte en la última orden de esa ruta para minimizar el valor total de la función objetivo.
Este campo no puede contener un valor nulo.
- CurbApproach
Specifies the direction a vehicle can arrive at and depart from the order. One of the integers listed in the Coded value column in the following table must be specified as a value of this attribute. The values in the Setting column are the descriptive names for the CurbApproach attribute values that you may have come across when using Extensión ArcGIS Network Analyst software.
Setting Coded value Description Either side of vehicle
0
The vehicle can approach and depart the order in either direction, so a U-turn is allowed at the order. This setting can be chosen if it is possible and desirable for a vehicle to turn around at the order. This decision may depend on the width of the road and the amount of traffic or whether the order has a parking lot where vehicles can pull in and turn around.
All arrival and departure combinations are allowed with the Either side of vehicle curb approach. Right side of vehicle
1
When the vehicle approaches and departs the order, the order must be on the right side of the vehicle. A U-turn is prohibited. This is typically used for vehicles such as buses that must arrive with the bus stop on the right side.
The allowed arrival and departure combination is shown for the Right side of vehicle curb approach. Left side of vehicle
2
When the vehicle approaches and departs the order, the order must be on the left side of the vehicle. A U-turn is prohibited. This is typically used for vehicles such as buses that must arrive with the bus stop on the left side.
The allowed arrival and departure combination is shown for the Left side of vehicle curb approach. No U-Turn
3
When the vehicle approaches the order, the order can be on either side of the vehicle; however, when it departs, the vehicle must continue in the same direction it arrived. A U-turn is prohibited.
The allowed arrival and departure combinations are shown for the No U-Turn curb approach. El atributo 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 orden que se encuentra 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. Los estándares de circulación nacionales pueden influir en su decisión de aproximarse a la orden por 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 orden y que no haya un carril entre el vehículo y la orden, elija 1 (Lado derecho del vehículo) en Estados Unidos y 2 (Lado izquierdo del vehículo) en Reino Unido.
With right-hand traffic, the curb approach that leaves the vehicle closest to the stop is Right side of vehicle. With left-hand traffic, the curb approach that leaves the vehicle closest to the stop is Left side of vehicle. - RouteName
El nombre de la ruta a la que se ha asignado la orden.
Este campo se utiliza para preasignar una orden a una ruta concreta. Puede contener un valor nulo que indica que la orden no se ha preasignado a ninguna ruta y el solucionador identifica la mejor asignación de ruta posible para la orden. Si está establecido en nulo, el campo Sequence también debe estar establecido en nulo.
Después de una operación de resolución, si se enruta la orden, el campo RouteName contiene el nombre de la ruta a la cual se asigna la orden.
- Sequence
Esto indica la secuencia de la orden en su ruta asignada.
Este campo se utiliza para especificar la secuencia relativa de una orden en la ruta. Este campo puede contener un valor nulo que especifica que la orden se puede realizar en cualquier parte a lo largo de la ruta. Un valor nulo solo puede ocurrir junto con un valor RouteName nulo.
Los valores de secuencia de entrada son positivos y exclusivos para cada ruta (compartida en las visitas al depósito de reanudación, órdenes y descansos), pero no tienen que empezar a partir de 1 ni ser contiguos.
Después de una operación de solución, el campo Sequence contiene el valor de secuencia de la orden en su ruta asignada. Los valores de secuencia de salida para una ruta se comparten en las visitas a depósito, órdenes y descansos; empiezan a partir de 1 (en el depósito de inicio); y son consecutivos. El valor de secuencia de salida más pequeño posible para una orden enrutada es 2, dado que una ruta siempre comienza en un depósito.
- Bearing
La dirección en la que está avanzando un punto. Las unidades son grados y se miden en sentido horario desde el norte verdadero. Este campo se utiliza junto con el campo BearingTol.
Los datos de rumbo normalmente se envían de forma automática desde un dispositivo móvil dotado de un receptor GPS. Intente incluir datos de rumbo si está cargando una ubicación de entrada que se mueve, como un peatón o un vehículo.
Utilizar este campo tiende a evitar agregar ubicaciones a los ejes equivocados, que puede ocurrir cuando un vehículo está cerca de una intersección o un paso elevado, por ejemplo. El rumbo también ayuda a la herramienta a determinar en qué lado de la calle está el punto.
- BearingTol
El valor de tolerancia de rumbo crea un rango de valores de rumbo aceptable al ubicar los puntos en movimiento en un eje con el campo Bearing. Si el valor del campo Bearing está dentro del rango de valores aceptables que se generan a partir de la tolerancia de rumbo en un eje, el punto se puede agregar como una ubicación de red ahí; de lo contrario, se evalúa el punto más cercano sobre el próximo eje más cercano.
Las unidades se expresan en grados y el valor predeterminado es 30. Los valores deben ser mayores que 0 y menores que 180. Un valor de 30 significa que, cuando Network Analyst intenta agregar una ubicación de red en un eje, se genera un rango de valores de rumbo aceptable 15 grados hacia cada lado del eje (izquierda y derecha) y en ambas direcciones digitalizadas del eje.
- NavLatency
Este campo solo se utiliza en el proceso de resolución si los campos Bearing y BearingTol también tienen valores. Sin embargo, la introducción de un valor de campo NavLatency es opcional, incluso cuando hay valores en Bearing y BearingTol. NavLatency indica cuánto coste se espera desde el momento en que se envía la información de GPS desde un vehículo en movimiento a un servidor y el momento en que el dispositivo de navegación del vehículo recibe la ruta procesada.
Las unidades de NavLatency son las mismas que las unidades del atributo de impedancia.
Syntax examples for orders
Syntax for specifying orders using JSON structure for features:
{
"spatialReference": {
"wkid": <wkid>,
"latestWkid": <wkid>
},
"features": [
{
"geometry": {
"x": <x1>,
"y": <y1>
},
"attributes": {
"<field1>": <value11>,
"<field2>": <value12>
}
},
{
"geometry": {
"x": <x2>,
"y": <y2>
},
"attributes": {
"<field1>": <value21>,
"<field2>": <value22>
}
}
]
}
Syntax for specifying orders using a URL returning a JSON response:
{
"url": "<url>"
}
Examples for orders
Example 1: Specify orders in the spatial reference of the network dataset using JSON structure. This example also shows how to specify attributes for the orders.
{
"features": [
{
"geometry": {
"x": -0.1891,
"y": 51.5254
},
"attributes": {
"Name": "Order 1",
"TimeWindowStart1": null,
"TimeWindowEnd1": 1562061600000,
"MaxViolationTime1": 0,
"DeliveryQuantities": "2000 100"
}
},
{
"geometry": {
"x": -0.1744,
"y": 51.5353
},
"attributes": {
"Name": "Order 2",
"TimeWindowStart1": 1562054400000,
"TimeWindowEnd1": 1562061600000,
"MaxViolationTime1": 30,
"DeliveryQuantities": "1500 75"
}
}
]
}
Example 2: Specify orders in the Web Mercator spatial reference using JSON structure.
{
"spatialReference": {
"wkid": 102100
},
"features": [
{
"geometry": {
"x": 2698533.989,
"y": 5192521.476
},
"attributes": {
"Name": "200156",
"SpecialtyNames": "Forklift",
"PickupQuantities": 1,
"ServiceTime": 60,
"CurbApproach": 3
}
},
{
"geometry": {
"x": 2697821.094,
"y": 5191915.261
},
"attributes": {
"Name": "300242",
"DeliveryQuantities": 1,
"ServiceTime": 30
}
}
]
}
Example 3: Specify orders using a URL.
The URL makes a query for features from a map service. A URL querying features from a feature service can also be specified.
{
"url": "https://machine.domain.com/webadaptor/rest/services/NetworkAnalysis/SanDiego/MapServer/21/query?where=1%3D1&outFields=Name&f=json"
}
depots
Especifica uno o varios depósitos para el problema de generación de rutas para vehículos especificado. Un depósito es una ubicación desde la que sale un vehículo al comienzo de su día laborable y a la que vuelve al final del mismo. Los vehículos (para las entregas) se cargan o descargan (para las recogidas) en los depósitos. En algunos casos, un depósito también puede actuar como ubicación de renovación donde el vehículo puede descargarse o volverse a cargar y seguir realizando entregas y recogidas. Un depósito tiene horas de apertura y cierre, tal y como se especifica en una ventana de tiempo estricta. Los vehículos no pueden llegar a un depósito fuera de esta ventana de tiempo.
The depots parameter can be specified using a JSON structure that represents a set of point features. The property is optional; however, the JSON structure must specify either the url or the features property:
url: especifique una solicitud de consulta REST para cualquier entidad, mapa o servicio de geoprocesamiento de ArcGIS Server que devuelva un conjunto de entidades JSON.
features: especifique una matriz de entidades.
Each feature in the features array represents a depot and contains the following properties:
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Sugerencia:
Se recomienda especificar explícitamente el valor de spatialReference y especificarlo para todo el JSON en lugar de para cada geometría individual.
- attributes: especifique cada atributo como un par de clave-valor donde la clave es el nombre de un campo dado y el valor es el valor de atributo del campo correspondiente.
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Attributes for depots
Cuando se especifican los depósitos, se pueden definir propiedades para cada uno, como su nombre o tiempo de servicio, mediante los siguientes atributos:
- ObjectID
Campo ID administrado por el sistema.
- Name
El nombre del depósito. Los campos StartDepotName y EndDepotName de las rutas hacen referencia a los nombres que especifique aquí. Las renovaciones de ruta también hacen referencia a los mismos, cuando se utilizan.
Los nombres de depósitos no hacen distinción entre mayúsculas y minúsculas, pero tienen que ser únicos y no estar vacíos.
- Description
La información descriptiva sobre la ubicación del depósito. Puede contener cualquier información textual y no tiene ninguna restricción de singularidad.
Por ejemplo, si desea tener en cuenta en qué región está un depósito o la dirección y número de teléfono del mismo, puede introducir la información aquí en lugar de en el campo Name.
- TimeWindowStart1
El tiempo inicial de la primera ventana de tiempo para la ubicación de red. Este campo puede contener un valor nulo; un valor nulo no indica ningún tiempo inicial.
The time window fields (TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2, and TimeWindowEnd2) must be specified in a date field as an integer that represents the number of milliseconds since epoch (January 1, 1970), not as date-time values. The time zone for time window fields is specified using the time_zone_usage_for_time_fields parameter. For example, if the orders are located in the Pacific standard time zone and you want to specify that the time window start at 8:00 a.m. local time on November 18, 2019, the value for the TimeWindowStart1 field should be specified as milliseconds since epoch for this date and time, which is 1574064000000. You also should specify the time_zone_usage_for_time_fields parameter value as GEO_LOCAL.
Cuando se resuelve un problema que afecta a varias zonas horarias, los valores de la ventana de tiempo de cada depósito hacen referencia a la zona horaria en la que se encuentra el depósito.
- TimeWindowEnd1
El tiempo final de la primera ventana para la ubicación de red. Este campo puede contener un valor nulo; un valor nulo no indica ningún tiempo final.
- TimeWindowStart2
El tiempo inicial de la segunda ventana de tiempo para la ubicación de red. Este campo puede contener un valor nulo; un valor nulo indica que no hay segunda ventana de tiempo.
Si la primera ventana de tiempo es nula, según lo especificado por los campos TimeWindowStart1 y TimeWindowEnd1, la segunda ventana de tiempo también debe ser nula.
Si ambas ventanas de tiempo son no nulas, no pueden superponerse. Además, la segunda ventana de tiempo debe ocurrir después de la primera.
- TimeWindowEnd2
El tiempo final de la segunda ventana de tiempo para la ubicación de red. Este campo puede contener un valor nulo.
Cuando tanto TimeWindowStart2 como TimeWindowEnd2 son nulos, no hay segunda ventana de tiempo.
Cuando TimeWindowStart2 no es nulo, pero TimeWindowEnd2 sí es nulo, hay una segunda ventana de tiempo que tiene una hora inicial, pero no tiene hora final. Esto es válido.
- CurbApproach
Specifies the direction a vehicle can arrive at and depart from the depot. One of the integers listed in the Coded value column in the following table must be specified as a value of this attribute. The values in the Setting column are the descriptive names for CurbApproach attribute values that you may have come across when using the Extensión ArcGIS Network Analyst.
Setting Coded value Description Either side of vehicle
0
The vehicle can approach and depart the depot in either direction, so a U-turn is allowed at the depot. This setting can be chosen if it is possible and desirable for a vehicle to turn around at the depot. This decision may depend on the width of the road and the amount of traffic or whether the depot has a parking lot where vehicles can pull in and turn around.
All arrival and departure combinations are allowed with the Either side of vehicle curb approach. Right side of vehicle
1
When the vehicle approaches and departs the depot, the depot must be on the right side of the vehicle. A U-turn is prohibited. This is typically used for vehicles such as buses that must arrive with the bus stop on the right side.
The allowed arrival and departure combination for the Right side of vehicle curb approach Left side of vehicle
2
When the vehicle approaches and departs the depot, the depot must be on the left side of the vehicle. A U-turn is prohibited. This is typically used for vehicles such as buses that must arrive with the bus stop on the left side.
The allowed arrival and departure combination for the Left side of vehicle curb approach No U-Turn
3
When the vehicle approaches the depot, the depot can be on either side of the vehicle; however, when it departs, the vehicle must continue in the same direction in which it arrived. A U-turn is prohibited.
The allowed arrival and departure combinations for the No U-Turn curb approach El atributo 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 un depósito 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 un depósito 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 un depósito y que no haya un carril entre el vehículo y el depósito, elija 1 (Lado derecho del vehículo) en Estados Unidos y 2 (Lado izquierdo del vehículo) en Reino Unido.
With right-hand traffic, the curb approach that leaves the vehicle closest to the stop is Right side of vehicle. With left-hand traffic, the curb approach that leaves the vehicle closest to the stop is Left side of vehicle. - Bearing
La dirección en la que está avanzando un punto. Las unidades son grados y se miden en sentido horario desde el norte verdadero. Este campo se utiliza junto con el campo BearingTol.
Los datos de rumbo normalmente se envían de forma automática desde un dispositivo móvil dotado de un receptor GPS. Intente incluir datos de rumbo si está cargando una ubicación de entrada que se mueve, como un peatón o un vehículo.
Utilizar este campo tiende a evitar agregar ubicaciones a los ejes equivocados, que puede ocurrir cuando un vehículo está cerca de una intersección o un paso elevado, por ejemplo. El rumbo también ayuda a la herramienta a determinar en qué lado de la calle está el punto.
- BearingTol
El valor de tolerancia de rumbo crea un rango de valores de rumbo aceptable al ubicar los puntos en movimiento en un eje con el campo Bearing. Si el valor del campo Bearing está dentro del rango de valores aceptables que se generan a partir de la tolerancia de rumbo en un eje, el punto se puede agregar como una ubicación de red ahí; de lo contrario, se evalúa el punto más cercano sobre el próximo eje más cercano.
Las unidades se expresan en grados y el valor predeterminado es 30. Los valores deben ser mayores que 0 y menores que 180. Un valor de 30 significa que, cuando Network Analyst intenta agregar una ubicación de red en un eje, se genera un rango de valores de rumbo aceptable 15 grados hacia cada lado del eje (izquierda y derecha) y en ambas direcciones digitalizadas del eje.
- NavLatency
Este campo solo se utiliza en el proceso de resolución si los campos Bearing y BearingTol también tienen valores. Sin embargo, la introducción de un valor de campo NavLatency es opcional, incluso cuando hay valores en Bearing y BearingTol. NavLatency indica cuánto coste se espera desde el momento en que se envía la información de GPS desde un vehículo en movimiento a un servidor y el momento en que el dispositivo de navegación del vehículo recibe la ruta procesada.
Las unidades de NavLatency son las mismas que las unidades del atributo de impedancia.
Syntax examples for depots
Syntax for specifying depots using JSON structure for features
{
"spatialReference": {
"wkid": <wkid>,
"latestWkid": <wkid>
},
"features": [
{
"geometry": {
"x": <x1>,
"y": <y1>
},
"attributes": {
"<field1>": <value11>,
"<field2>": <value12>
}
},
{
"geometry": {
"x": <x2>,
"y": <y2>
},
"attributes": {
"<field1>": <value21>,
"<field2>": <value22>
}
}
]
}
Syntax for specifying depots using a URL returning a JSON response
{
"url": "<url>"
}
Examples for depots
Example 1: Specify depots in the spatial reference of the network dataset using JSON structure. The example also shows how to specify attributes for the depots.
{
"features": [
{
"geometry": {
"x": -0.1891,
"y": 51.5254
},
"attributes": {
"Name": "Depot1",
"TimeWindowStart1": null,
"TimeWindowEnd1": "1358362800000"
}
},
{
"geometry": {
"x": -0.1744,
"y": 51.5353
},
"attributes": {
"Name": "Depot2",
"TimeWindowStart1": "1358359200000",
"TimeWindowEnd1": "1358362800000"
}
}
]
}
Example 2: Specify depots in the Web Mercator spatial reference using JSON structure.
{
"spatialReference": {
"wkid": 102100
},
"features": [
{
"geometry": {
"x": 2698533.989,
"y": 5192521.476
},
"attributes": {
"Name": "400181",
"CurbApproach": 3
}
},
{
"geometry": {
"x": 2697821.094,
"y": 5191915.261
},
"attributes": {
"Name": "400161",
"CurbApproach": 1
}
}
]
}
Example 3: Specify depots using a URL.
The URL makes a query for a few features from a map service. A URL querying features from a feature service can also be specified.
{
"url": "https://machine.domain.com/webadaptor/rest/services/NetworkAnalysis/SanDiego/MapServer/21/query?where=1%3D1&outFields=Name&f=json"
}
routes
Especifica una o varias rutas que describen las características del vehículo y del conductor. Una ruta puede tener los tiempos de servicio de inicio y fin en el depósito, un tiempo de inicio fijo o flexible, costes operativos basados en el tiempo, costes operativos basados en la distancia, varias capacidades, diversas restricciones en un día laborable del conductor y así sucesivamente.
The routes parameter can be specified using a JSON structure that represents a set of point features. The property is optional; however, the JSON structure must specify either the url or the features property:
url: especifique una solicitud de consulta REST para cualquier entidad, mapa o servicio de geoprocesamiento de ArcGIS Server que devuelva un conjunto de entidades JSON.
features: especifique una matriz de entidades.
Each feature in the features array represents a route and contains the following properties:
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Sugerencia:
Se recomienda especificar explícitamente el valor de spatialReference y especificarlo para todo el JSON en lugar de para cada geometría individual.
- attributes: especifique cada atributo como un par de clave-valor donde la clave es el nombre de un campo dado y el valor es el valor de atributo del campo correspondiente.
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Nota:
Unlike the orders or depots parameter, the JSON structure for the routes parameter does not have a geometry property.
Attributes for routes
When specifying the routes, you can specify additional properties, such as their names or capacities, using attributes. The routes parameter can be specified with the following attributes:
- Name
The name of the route. The name must be unique.
The service generates a unique name if the attribute value is null. Therefore, specifying a value is optional in most cases. However, you must specify a name if the analysis includes breaks, route renewals, route zones, or orders that are preassigned to a route because the route name is used as a foreign key in these cases. Route names are not case sensitive.
- StartDepotName
The name of the starting depot for the route. This attribute is a foreign key to the Name attribute in the depots parameter, so the values must match.
If the StartDepotName value is null, the route will begin from the first order assigned. Omitting the start depot is useful when the vehicle's starting location is unknown or irrelevant to the routing problem. However, when StartDepotName is null, EndDepotName cannot also be null.
Virtual start depots are not allowed if orders or depots are in multiple time zones.
If the route is making deliveries and StartDepotName is null, it is assumed the cargo is loaded on the vehicle at a virtual depot before the route begins. For a route that has no renewal visits, its delivery orders (those with nonzero DeliveryQuantities values in the orders parameter) are loaded at the start depot or virtual depot. For a route that has renewal visits, only the delivery orders before the first renewal visit are loaded at the start depot or virtual depot.
- EndDepotName
The name of the ending depot for the route. This attribute is a foreign key to the Name attribute in the depots parameter, so the values must match.
- StartDepotServiceTime
The service time at the starting depot. This can be used to model the time spent loading the vehicle. This attribute can contain a null value; a null value indicates zero service time. The unit for this attribute value is specified by the time_units parameter.
- EndDepotServiceTime
The service time at the ending depot. This can be used to model the time spent unloading the vehicle. This attribute can contain a null value; a null value indicates zero service time. The unit for this attribute value is specified by the time_units parameter.
The service times at the start and end depots are fixed values (given by the StartDepotServiceTime and EndDepotServiceTime attribute values) and do not take into account the actual load for a route. For example, the time taken to load a vehicle at the starting depot may depend on the size of the orders. The depot service times can be given values corresponding to a full truckload or an average truckload, or you can make your own time estimate.
- EarliestStartTime
The earliest allowable starting time for the route. This is used by the service in conjunction with the time window of the starting depot for determining feasible route start times.
This attribute can't contain null values and has a default time-only value of 8:00 AM on the date specified by the default_date parameter or the current date if unspecified.
- LatestStartTime
The latest allowable starting time for the route. This attribute can't contain null values and has a default time-only value of 10:00 AM; the default value is interpreted as 10:00 a.m. on the date specified by the default_date parameter.
The value for the EarliestStartTime and LatestStartTime attributes is specified in a date field as an integer that represents the number of milliseconds since epoch (January 1, 1970).
The time zone is specified using the time_zone_usage_for_time_fields parameter. If set to GEO_LOCAL, the time is in the time zone where the route's depot is located. This is useful if the routes span multiple time zones but they all start at a consistent time (for example, 8:00 a.m. in the depot's time zone). If the parameter is set to UTC, the time is based on UTC. This is useful if you don't know the time zone of an individual route's depot but know its absolute time (for example, the time window starts an hour from now).
- ArriveDepartDelay
This stores the amount of travel time needed to accelerate the vehicle to normal travel speeds, decelerate it to a stop, and move it off and on the network (for example, in and out of parking). By including an ArriveDepartDelay value, the service is deterred from sending many routes to service physically coincident orders.
The cost for this attribute is incurred between visits to noncoincident orders, depots, and route renewals. For example, when a route starts from a depot and visits the first order, the total arrive/depart delay is added to the travel time. The same is true when traveling from the first order to the second order. If the second and third orders are coincident, the ArriveDepartDelay value is not added between them because the vehicle doesn't need to move. If the route travels to a route renewal, the value is added to the travel time again.
Although a vehicle needs to slow down and stop for a break and accelerate afterward, the service cannot add the ArriveDepartDelay value for breaks. This means that if a route leaves an order, stops for a break, and continues to the next order, the arrive/depart delay is added only once, not twice.
For example, there are five coincident orders in a high-rise building, and they are serviced by three routes. This means three arrive/depart delays would be incurred; that is, three drivers would need to separately find parking places and enter the same building. However, if the orders could be serviced by just one route, only one driver would need to park and enter the building—only one arrive/depart delay would be incurred. Since the service tries to minimize cost, it will try to limit the arrive/depart delays and use the single-route option. (Multiple routes may need to be sent when other constraints—such as specialties, time windows, or capacities—require it.)
The unit for this attribute value is specified by the time_units parameter.
- Capacities
The maximum capacity of the vehicle. You can specify capacity in any dimension, such as weight, volume, or quantity. You can also specify multiple dimensions, for example, weight and volume.
Specify capacities without indicating units. For example, if a vehicle can carry a maximum of 40,000 pounds, specify 40000 as the value for the Capacities attribute. You need to remember for future reference that the value is in pounds.
If you are tracking multiple dimensions, separate the numeric values with a space. For example, if you are recording both weight and volume and your vehicle can carry a maximum weight of 40,000 pounds and a maximum volume of 2,000 cubic feet, specify 40000 2000 for Capacities. Again, you need to remember the units. You also need to remember the sequence in which the values and their corresponding units are specified (pounds followed by cubic feet in this case).
Remembering the units and the unit sequence is important for a couple of reasons: first, so you can reinterpret the information later, and second, so you can properly enter values for the DeliveryQuantities and PickupQuantities attributes in the orders parameter. The service simultaneously checks the Capacities, DeliveryQuantities, and PickupQuantities attributes to make sure that a route doesn't become overloaded. Since units can't be entered in the field, the service can't make unit conversions, so you need to specify the values for the three attributes using the same units and the same unit sequence to ensure the values are correctly interpreted. If you combine units or change the sequence in any of the three attributes, you will get unwanted results without receiving any warning messages. It is recommended that you set up a unit and unit-sequence standard before you start and refer to it when specifying values for these three attributes.
An empty string or null value is equivalent to all values being zero. Capacity values can't be negative.
If the Capacities string has an insufficient number of values in relation to the DeliveryQuantities or PickupQuantities attributes in the orders parameter, the remaining values are treated as zero.
Precaución:
The service only performs a simple Boolean test to determine whether capacities are exceeded. If a route's capacity value is greater than or equal to the total quantity being carried, it is assumed the cargo fits in the vehicle. This may be incorrect, depending on the actual shape of the cargo and the vehicle. For example, the service allows you to fit a 1,000-cubic-foot sphere into a 1,000-cubic-foot truck that is 8 feet wide. In reality, however, since the sphere is 12.6 feet in diameter, it won't fit in the 8-foot wide truck.
- FixedCost
A fixed monetary cost that is incurred only if the route is used in a solution (that is, it has orders assigned to it). This attribute can contain null values; a null value indicates zero fixed cost. This cost is part of the total route operating cost.
- CostPerUnitTime
The monetary cost incurred per unit of work time for the total route duration, including travel times as well as service times and wait times at orders, depots, and breaks. This attribute can't contain a null value and has a default value of 1.0. The unit for this attribute value is specified by the time_units parameter.
- CostPerUnitDistance
The monetary cost incurred per unit of distance traveled for the route length (total travel distance). This attribute can contain null values; a null value indicates zero cost. The unit for this attribute value is specified by the distance_units parameter.
- OverTimeStartTime
The duration of regular work time before overtime computation begins. This attribute can contain null values; a null value indicates that overtime does not apply. The unit for this attribute value is specified by the time_units parameter.
For example, if the driver is to be paid overtime pay when the total route duration extends beyond eight hours, OvertimeStartTime is specified as 480 (8 hours * 60 minutes/hour), given the time_units parameter is set to Minutes.
- CostPerUnitOvertime
The monetary cost incurred per time unit of overtime work. This attribute can contain null values; a null value indicates that the CostPerUnitOvertime value is the same as the CostPerUnitTime value. The unit for this attribute value is specified by the time_units parameter.
- MaxOrderCount
The maximum allowable number of orders on the route. This attribute can't contain null values and has a default value of 30.
- MaxTotalTime
The maximum allowable route duration. The route duration includes travel times as well as service and wait times at orders, depots, and breaks. This attribute can contain null values; a null value indicates that there is no constraint on the route duration. The unit for this attribute value is specified by the time_units parameter.
- MaxTotalTravelTime
The maximum allowable travel time for the route. The travel time includes only the time spent driving on the streets and does not include service or wait times. This attribute can contain null values; a null value indicates there is no constraint on the maximum allowable travel time. This attribute value can't be larger than the MaxTotalTime attribute value. The unit for this attribute value is specified by the time_units parameter.
- MaxTotalDistance
The maximum allowable travel distance for the route. This attribute can contain null values; a null value indicates that there is no constraint on the maximum allowable travel distance. The unit for this attribute value is specified by the distance_units parameter.
- SpecialtyNames
A space-separated string containing the names of the specialties supported by the route. A null value indicates that the route does not support any specialties. This attribute is a foreign key to the SpecialtyNames attribute in the orders parameter, so the values must match.
For example, a lawn care and tree trimming company has a portion of its orders that requires a bucket truck to trim tall trees. The company specifies BucketTruck as the value for the SpecialtyNames attribute for these orders to indicate their special need. SpecialtyNames is left as null for the other orders. Similarly, the company also specifies BucketTruck as the value for the SpecialtyNames attribute for the routes that are driven by trucks with hydraulic booms. It leaves the attribute value as null for the other routes. When finding the solution, the service assigns orders without special needs to any route, but it only assigns orders that need bucket trucks to routes that have them.
- AssignmentRule
Specifies whether the route can be used when solving the problem. The attribute value should be specified as one of the following integer values:
- 0—The route is excluded from the solution.
- 1—The route is included when finding the solution. This is the default value.
Syntax examples for routes
Syntax for specifying routes using JSON structure for features
{
"features": [
{
"attributes": {
"<field1>": <value11>,
"<field2>": <value12>
}
},
{
"attributes": {
"<field1>": <value21>,
"<field2>": <value22>
}
}
]
}
Syntax for specifying routes using a URL returning a JSON response
{
"url": "<url>"
}
Example for routes
Example: Specify routes using JSON structure.
Unlike the depots and orders parameters, the spatialReference and geometry properties are not required when specifying the routes parameter. This example also shows how to specify attributes for the depots.
{
"features": [
{
"attributes": {
"Name": "Truck1",
"Capacities": "40000 2000",
"StartDepotName": "Depot1",
"EndDepotName": "Depot1",
"SpecialtyNames": "BucketTruck"
}
},
{
"attributes": {
"Name": "Truck2",
"Capacities": "30000 2500",
"StartDepotName": "Depot2",
"EndDepotName": "Depot2",
"SpecialtyNames": null
}
}
]
}
token
Utilice este parámetro para especificar un token que proporcione la identidad de un usuario que tenga permisos para acceder al servicio. La página de seguridad y autenticación ofrece más información sobre cómo se puede obtener un token de acceso.
token=<yourToken>
f
Utilice este parámetro para especificar el formato de respuesta. El parámetro puede tener html, json o pjson como argumentos, por ejemplo, f=json. El valor pjson se utiliza para imprimir la respuesta JSON en un formato embellecido.
Optional parameters
default_date
Use this parameter to specify the date all of the routes start.
Specify the parameter value should as a numeric value representing the milliseconds since midnight, January 1, 1970.
Only the date portion of this value will be used; the time-specific portion of the value will be ignored.
You can use the same value that you have specified for the EarliestStartTime attribute for each route feature in the routes parameter. If the routes start on different dates, you can use any date from one of them.
travel_mode
Seleccione el modo de transporte para el análisis.
Nota:
Fleet routing service only supports time-based travel mode.Los modos de viaje se administran en ArcGIS Enterprise y el administrador de su organización puede configurarlos para reflejar mejor los flujos de trabajo de la organización.
Para obtener más información sobre los modos de viaje, consulte Configurar modos de viaje.
Debe especificar el objeto JSON que contiene la configuración de un modo de viaje compatible con su organización. Para obtener una lista de los modos de viaje admitidos, ejecute la herramienta GetTravelModes desde el servicio Utilidades.
El valor del parámetro travel_mode debe ser un objeto JSON que represente la configuración del modo de viaje. Si se utiliza la herramienta GetTravelModes del servicio Utilidades, se obtiene una cadena de caracteres que representa el JSON del modo de viaje. Debe convertir esta cadena de caracteres en un objeto JSON válido utilizando su API y, a continuación, entregar el objeto JSON como valor para el parámetro travel_mode.
Por ejemplo, se muestra a continuación una cadena de caracteres que representa el modo de viaje Tiempo a pie, tal y como lo devuelve la herramienta GetTravelModes.
"{\"attributeParameterValues\": [{\"parameterName\": \"Restriction Usage\", \"attributeName\": \"Walking\", \"value\": \"PROHIBITED\"}, {\"parameterName\": \"Restriction Usage\", \"attributeName\": \"Preferred for Pedestrians\", \"value\": \"PREFER_LOW\"}, {\"parameterName\": \"Walking Speed (km/h)\", \"attributeName\": \"WalkTime\", \"value\": 5}], \"description\": \"Follows paths and roads that allow pedestrian traffic and finds solutions that optimize travel time. The walking speed is set to 5 kilometers per hour.\", \"impedanceAttributeName\": \"WalkTime\", \"simplificationToleranceUnits\": \"esriMeters\", \"uturnAtJunctions\": \"esriNFSBAllowBacktrack\", \"restrictionAttributeNames\": [\"Preferred for Pedestrians\", \"Walking\"], \"useHierarchy\": false, \"simplificationTolerance\": 2, \"timeAttributeName\": \"WalkTime\", \"distanceAttributeName\": \"Miles\", \"type\": \"WALK\", \"id\": \"caFAgoThrvUpkFBW\", \"name\": \"Walking Time\"}"
El valor anterior se debe convertir a un objeto JSON válido y transferirse como valor para el parámetro travel_mode.
travel_mode={"attributeParameterValues":[{"parameterName":"Restriction Usage","attributeName":"Walking","value":"PROHIBITED"},{"parameterName":"Restriction Usage","attributeName":"Preferred for Pedestrians","value":"PREFER_LOW"},{"parameterName":"Walking Speed (km/h)","attributeName":"WalkTime","value":5}],"description":"Follows paths and roads that allow pedestrian traffic and finds solutions that optimize travel time. The walking speed is set to 5 kilometers per hour.","impedanceAttributeName":"WalkTime","simplificationToleranceUnits":"esriMeters","uturnAtJunctions":"esriNFSBAllowBacktrack","restrictionAttributeNames":["Preferred for Pedestrians","Walking"],"useHierarchy":false,"simplificationTolerance":2,"timeAttributeName":"WalkTime","distanceAttributeName":"Miles","type":"WALK","id":"caFAgoThrvUpkFBW","name":"Walking Time"}
El valor predeterminado, Custom, le permite configurar su propio modo de viaje. Cuando se entrega en Custom, puede definir valores para los siguientes parámetros: impedance, time_impedance, distance_impedance, uturn_at_junctions, use_hierarchy, route_line_simplification_tolerance, restrictions y attribute_parameter_values. Puede elegir Custom y establecer los parámetros de modo de viaje personalizado indicados anteriormente, por ejemplo, para modelar un peatón con una velocidad de caminata rápida o un camión con una altura y un peso determinados y con una carga de determinados materiales peligrosos. Puede probar distintas configuraciones hasta conseguir resultados de análisis deseados. Una vez que haya identificado la configuración de análisis, debe trabajar con el administrador de su organización y guardar esta configuración como parte de un modo de viaje nuevo o existente para que todos los usuarios de su organización puedan volver a ejecutar el análisis con la misma configuración.
Los valores predeterminados de los parámetros de modo de viaje personalizado se basan en viajes en coche. Si especifica el modo de viaje como Custom o no proporciona ningún valor para el parámetro travel_mode, el análisis será similar al uso del modo de viaje Driving Time predeterminado.
Precaución:
When the travel_mode parameter is not set to Custom, it means you are choosing a travel mode configured by your organization, and the service automatically overrides the values of other parameters with values that model the chosen travel mode. The following parameters are overridden: impedance, time_impedance, distance_impedance, uturn_policy, use_hierarchy, route_line_simplification_tolerance, restrictions, and attribute_parameter_values.
time_zone_usage_for_time_fields
Use this parameter to specify the time zone for the input date-time fields. This parameter specifies the time zone for the following fields: TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2, TimeWindowEnd2, InboundArriveTime, and OutboundDepartTime on orders; TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2, and TimeWindowEnd2 on depots; EarliestStartTime and LatestStartTime on routes; and TimeWindowStart and TimeWindowEnd on breaks.
- GEO_LOCAL—The date-time values associated with the orders or depots are in the time zone in which the orders and depots are located. For routes, the date-time values are based on the time zone in which the starting depot for the route is located. If a route does not have a starting depot, all orders and depots across all the routes must be in a single time zone. For breaks, the date-time values are based on the time zone of the routes. For example, if a depot is located in an area that follows eastern standard time and has the first time window values (specified as TimeWindowStart1 and TimeWindowEnd1) of 8 AM and 5 PM, the time window values will be treated as 8:00 a.m. and 5:00 p.m. in eastern standard time.
- UTC—The date-time values associated with the orders or depots are in coordinated universal time (UTC) and are not based on the time zone in which the orders or depots are located. For example, if a depot is located in an area that follows eastern standard time and has the first time window values (specified as TimeWindowStart1 and TimeWindowEnd1) of 8 AM and 5 PM, the time window values will be treated as 3:00 a.m. and 12:00 p.m. in eastern standard time.
impedance
Especifique la impedancia.
Precaución:
El valor de este parámetro, independientemente de si se basa en el valor predeterminado o se establece explícitamente un valor, se invalida si se entrega en travel_mode.
La impedancia es un valor que cuantifica el viaje a lo largo de la red de transporte. La distancia de viaje es un ejemplo de impedancia; cuantifica la longitud de caminos y segmentos de la carretera. Del mismo modo, el tiempo de conducción (el tiempo típico que lleva conducir un coche a lo largo de un segmento de carretera), es un ejemplo de impedancia. Los tiempos de conducción pueden variar según el tipo de vehículo (por ejemplo, el tiempo que un camión tarda en viajar a lo largo de una ruta suele ser más largo que el de un coche) por lo que pueden existir muchos valores de impedancia que representan los tiempos de viaje para distintos tipos de vehículos. Los valores de la impedancia también pueden variar con el tiempo; el tráfico en directo y típico hace referencia a los valores de la impedancia dinámica. Cada recorrido a pie y segmento de carretera almacena al menos un valor de impedancia. Al realizar un análisis de red, los valores de impedancia se utilizan para calcular los mejores resultados, como buscar la ruta más corta (la ruta que minimiza la impedancia) entre dos puntos.
El parámetro impedance se puede especificar con estos valores:
Nota:
Fleet routing service only supports time-based impedance.- TravelTime: se utilizan datos de tráfico históricos y en directo. Esta opción resulta útil para modelar el tiempo que tardan los automóviles en desplazarse por carreteras a una hora concreta del día utilizando datos de velocidad del tráfico en directo si están disponibles. Si utiliza TravelTime, si lo desea puede definir el parámetro de atributos TravelTime::Vehicle Maximum Speed (km/h) para especificar los límites físicos de la velocidad a la que el vehículo es capaz de desplazarse.
- Minutos: no se utilizan datos de tráfico en directo, sino velocidades medias históricas de los datos de automóviles.
- TruckTravelTime: se utilizan datos de tráfico históricos y en directo, pero se establece una velocidad máxima al límite de velocidad especificado para camiones. Resulta útil para modelar el tiempo que tardan los camiones en desplazarse por carreteras a una hora concreta del día. Si utiliza TruckTravelTime, si lo desea puede definir el parámetro de atributos TruckTravelTime::Vehicle Maximum Speed (km/h) para especificar los límites físicos de la velocidad a la que el camión es capaz de desplazarse.
- TruckMinutes: no utiliza datos de tráfico en directo, pero sí utiliza las velocidades más bajas del promedio histórico para automóviles y los límites de velocidad permitidos para camiones.
- WalkTime: el valor predeterminado es una velocidad de 5 km/h en todas las carreteras y caminos, pero se puede configurar mediante el parámetro de atributos WalkTime::Walking Speed (km/h).
- Millas: las mediciones de longitud de carreteras se almacenan en millas y se pueden utilizar para realizar análisis según la distancia más corta.
- Kilómetros: las mediciones de longitud de carreteras se almacenan en kilómetros y se pueden utilizar para realizar análisis según la distancia más corta.
Nota:
Estos valores son específicos de los servicios publicados con los datos de ArcGIS StreetMap Premium. Los valores serán diferentes si utiliza otros datos para el análisis.
Si elige una impedancia basada en el tiempo, como TravelTime, TruckTravelTime, Minutes, TruckMinutes o WalkTime, el parámetro measurement_units se debe configurar con un valor basado en el tiempo; si prefiere una impedancia basada en la distancia, como Miles, Kilometers o measurement_units, deben estar basadas en la distancia.
Heredado:
Los valores de impedancia de Drive Time, Truck Time, Walk Time y Travel Distance ya no se admiten y se eliminarán en versiones futuras.
breaks
Son los periodos de pausa o descansos de las rutas en un problema de generación de rutas para vehículos determinado. Un descanso está asociado a una ruta exactamente y puede realizarse después de finalizar una orden, mientras se encuentra en ruta para dar servicio a una orden o antes de dar servicio a una orden. Tiene una hora de inicio y una duración y el conductor puede cobrar o no durante el mismo. Existen tres opciones para establecer el momento en que comienza un descanso: una ventana de tiempo, un tiempo de viaje máximo o un tiempo de trabajo máximo.
Use this parameter to specify the rest periods, or breaks, for the routes in a given vehicle routing problem. A break is associated with exactly one route, and it can be taken after completing an order, while en route to an order, or prior to servicing an order. It has a start time and a duration, for which the driver may or may not be paid. There are three options for establishing when a break begins: using a time window, a maximum travel time, or a maximum work time.
- Time window break—To set up a time window break, enter two time-of-day values to delimit a time range in which the break should begin. The TimeWindowStart and TimeWindowEnd attributes contain the bounding time-of-day values. The duration, or service time, of the break is independent of the time window and can extend beyond the end of the time window. For instance, if the time window for an hour-long break spans from 10:00 a.m. to 10:15 a.m., the break should start after 10:00 a.m. but before 10:15 a.m. If it starts at 10:10 a.m., the break will end at 11:10 a.m.
- Maximum travel time break—With this break option, you specify how long a person can drive before the break is required. (Only travel time is limited; other times such as wait and service times are not.) If you enter four hours into the first break's MaxTravelTimeBetweenBreaks property, for example, the driver will receive a break before the accumulated travel time from the start of the route exceeds four hours. For any subsequent breaks, the travel time is accumulated from the previous break. So if you have a second break with a MaxTravelTimeBetweenBreaks value of two hours, the second break will be taken before two hours of travel time have been accumulated from the previous break, not from the start depot. A route's final maximum travel time break not only limits the amount of accumulated travel time from the previous break or start of the route but also limits the travel time from the final break to the end depot. This is true even if there is only one break. The VRP service is designed this way to prevent a route from taking all its breaks and then traveling for an extended period without taking another break. In the last example, MaxTravelTimeBetweenBreaks was set to two hours. If this is the route's final break, the route must be able to reach the end depot within two hours of travel time from the final break; otherwise, the service will return an error.
- Maximum work time break—This break option specifies how long a person can work before a break is required. Unlike maximum travel time breaks, which can accumulate travel time from the end of the last break, maximum work time breaks always accumulate work time from the beginning of the route, including any service time at the start depot. This break limits the accumulated work time, which includes travel time and all service times; it excludes wait time, however.
The breaks parameter can be specified using a JSON structure that represents a set of features. The property is optional; however, the JSON structure must specify either the url or features property:
url: especifique una solicitud de consulta REST para cualquier entidad, mapa o servicio de geoprocesamiento de ArcGIS Server que devuelva un conjunto de entidades JSON.
features: especifique una matriz de entidades.
Each feature in the features array represents a break and contains the following properties:
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Sugerencia:
Se recomienda especificar explícitamente el valor de spatialReference y especificarlo para todo el JSON en lugar de para cada geometría individual.
- attributes: especifique cada atributo como un par de clave-valor donde la clave es el nombre de un campo dado y el valor es el valor de atributo del campo correspondiente.
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Attributes for breaks
When specifying the breaks, you can specify additional properties for breaks, such as their time windows or duration, using attributes. The breaks parameter can be specified with the following attributes:
- RouteName
The name of the route that the break applies to. Although a break is assigned to exactly one route, many breaks can be assigned to the same route. This attribute is a foreign key to the Name attribute in the routes parameter, so the values must match. The attribute cannot have a null value.
- Precedence
Specifies the values to sequence the breaks of a given route. Breaks with a precedence value of 1 occur before those with a value of 2, and so on. All breaks must have a precedence value, regardless of whether they are time window, maximum travel time, or maximum work time breaks. The default value for this attribute is 1.
- ServiceTime
The duration of the break. The units for this attribute value are specified by the time_units parameter. This attribute can't contain a null value. The default value for this attribute is 60.
- TimeWindowStart
The starting time of the break's time window. Specifying this attribute indicates that the service will consider the breaks as time window breaks. The attribute value is specified as a numeric value representing the milliseconds since midnight, January 1, 1970.
If this attribute is null and the TimeWindowEnd attribute has a valid time-of-day value, the break is allowed to start anytime before the TimeWindowEnd value.
The default value for this attribute is null.
- TimeWindowEnd
The ending time of the break's time window. Specifying this attribute indicates that the service will consider the breaks as time window breaks. The attribute value is specified as a numeric value representing the milliseconds since midnight, January 1, 1970.
If this attribute is null and the TimeWindowStart attribute has a valid time-of-day value, the break is allowed to start anytime after the TimeWindowStart value.
The default value for this attribute is null.
For both the TimeWindowStart and TimeWindowEnd attributes, the time zone is specified by the time_zone_usage_for_time_fields parameter. If the parameter is set to GEO_LOCAL, the time is in the time zone where the route's depot is located. This is useful if the routes span multiple time zones but they all break at a consistent time (for example, 12:00 p.m. in the depot's time zone). If the parameter is set to UTC, the time is based on UTC time. This is useful if you don't know the time zone of an individual route's depot but know the absolute time for each break (for example, the break starts an hour from now).
Precaución:
If either the TimeWindowStart or the TimeWindowEnd attribute has values, the MaxTravelTimeBetweenBreaks and MaxCumulWorkTime attributes must be null; also, all other breaks must have null values for the MaxTravelTimeBetweenBreaks and MaxCumulWorkTime attributes for the request to succeed. The service will also return an error if a route has multiple breaks with overlapping time windows.
- MaxViolationTime
Specifies the maximum allowable violation time for a time window break. A time window is considered violated if the arrival time falls outside of the time range. The units for this attribute value are specified by the time_units parameter.
A zero value indicates that the time window cannot be violated; that is, the time window is hard. A nonzero value specifies the maximum amount of lateness; for example, the break can begin up to 30 minutes beyond the end of its time window, but the lateness is penalized pursuant to the time_window_factor parameter. A null value indicates that there is no limit on the allowable violation time.
Precaución:
For the request to succeed, if MaxTravelTimeBetweenBreaks or MaxCumulWorkTime has a value, MaxViolationTime must be null.
The default value for this attribute is null.
- MaxTravelTimeBetweenBreaks
The maximum amount of travel time that can be accumulated before the break is taken. Specifying this attribute indicates that the service will consider the breaks as travel time breaks. The travel time is accumulated either from the end of the previous break or, if a break has not yet been taken, from the start of the route. If this is the route's final break, this attribute also indicates the maximum travel time that can be accumulated from the final break to the end depot.
The MaxTravelTimeBetweenBreaks attribute is designed to limit how long a person can drive until a break is required. For instance, if the time_units parameter is set to Minutes, and MaxTravelTimeBetweenBreaks has a value of 120, the driver will get a break after two hours of driving. To assign a second break after two more hours of driving, the second break's MaxTravelTimeBetweenBreaks attribute value must be 120.
The units for this attribute value are specified by the time_units parameter. The default value for this attribute is null.
Precaución:
For the request to succeed, if the MaxTravelTimeBetweenBreaks attribute has a value, the TimeWindowStart, TimeWindowEnd, MaxViolationTime, and MaxCumulWorkTime attributes must be null.
- MaxCumulWorkTime
The maximum amount of work time that can be accumulated before the break is taken. Specifying this attribute indicates that the service will consider the breaks as work time breaks. Work time is always accumulated from the beginning of the route. Work time is the sum of travel time and service times at orders, depots, and breaks. However, this excludes wait time, which is the time a route (or driver) spends waiting at an order or depot for a time window to begin.
The MaxCumulWorkTime attribute limits how long a person can work until a break is required. For instance, if the time_units parameter is set to Minutes, the MaxCumulWorkTime attribute has a value of 120, and the ServiceTime attribute has a value of 15, the driver will get a 15-minute break after two hours of work. If a second break is needed after three more hours of work, specify 315 (five hours and 15 minutes) as the second break's MaxCumulWorkTime value. This number includes the MaxCumulWorkTime and ServiceTime values of the preceding break, along with the three additional hours of work time before granting the second break. To avoid taking maximum work time breaks prematurely, remember that they accumulate work time from the beginning of the route and that work time includes the service time at previously visited depots, orders, and breaks.
The units for this attribute value are specified by the time_units parameter. The default value for this attribute is null.
Precaución:
For the request to succeed, if the MaxCumulWorkTime attribute has a value, the TimeWindowStart, TimeWindowEnd, MaxViolationTime, and MaxTravelTimeBetweenBreaks attributes must be null.
- IsPaid
Specifies whether the break is paid or unpaid. The attribute value is specified as an integer with possible values of 0 or 1. A value of 1 indicates that the time spent at the break is included in the route cost computation and overtime determination. A value of 0 indicates otherwise. The default value for this attribute is 1.
- Sequence
Indicates the relative sequence of the break on its route. The attribute values must be positive and unique for each route but do not need to start from 1 or be contiguous. In the service output, the Sequence attribute of the out_stops parameter contains the sequence value of the break on its route. This attribute can have null values specifying that the break can be placed anywhere along the route. The default value for this attribute is null.
Syntax examples for breaks
Syntax for specifying breaks using JSON structure for features
{
"features": [
{
"attributes": {
"<field1>": <value11>,
"<field2>": <value12>
}
},
{
"attributes": {
"<field1>": <value21>,
"<field2>": <value22>
}
}
]
}
Syntax for specifying breaks using a URL returning a JSON response
{
"url": "<url>"
}
Examples for breaks
Example 1: Specify time-window-based breaks using JSON structure.
This example shows how to specify time-window-based breaks by specifying the values for the TimeWindowStart and the TimeWindowEnd attributes. The input vehicle routing problem requires that each of three routes have one 30-minute paid break between 12:30 p.m. and 1:30 p.m. The break time window is hard, so the break must start between 12:30 p.m. and 1:30 p.m. and cannot start after 1:30 p.m.
You must specify one break for each route, so you have a total of three features. Specify the appropriate milliseconds since January 1, 1970, for 12:30 p.m. Pacific time on April 23, 2013, as the value for the TimeWindowStart attribute and the appropriate milliseconds since January 1, 1970, for 1:30 p.m. on April 23, 2013, as the value for the TimeWindowEnd attribute. Because the break time window is hard, specify a value of 0 for the MaxViolationTime attribute. Because the break duration is 30 minutes, specify a value of 30 for the ServiceTime attribute assuming the time_units parameter is set to Minutes. For each break, only specify the attribute values required to model the input scenario. The other attribute values are not specified because their default values are adequate in this scenario.
Nota:
Unlike the depots and orders parameters, the spatialReference and geometry properties are not required when specifying the breaks parameter.
{
"features": [
{
"attributes": {
"RouteName": "Truck1",
"TimeWindowStart": 1366745400000,
"TimeWindowEnd": 1366749000000,
"ServiceTime": 30,
"MaxViolationTime": 0
}
},
{
"attributes": {
"RouteName": "Truck2",
"TimeWindowStart": 1366745400000,
"TimeWindowEnd": 1366749000000,
"ServiceTime": 30,
"MaxViolationTime": 0
}
},
{
"attributes": {
"RouteName": "Truck3",
"TimeWindowStart": 1366745400000,
"TimeWindowEnd": 1366749000000,
"ServiceTime": 30,
"MaxViolationTime": 0
}
}
]
}
Example 2: Specify travel-time-based breaks using JSON structure.
This example shows how to specify travel-time-based breaks by specifying the value for the MaxTravelTimeBetweenBreaks attribute. The input vehicle routing problem requires that the driver for each of the two routes have one 15-minute unpaid break after two hours of driving and another unpaid break after an additional two hours of driving.
You must specify two breaks for each route, so you have a total of four features. The first break for each route has a precedence value of 1 and the second break has a precedence value of 2. As each break on the route must occur after two hours of travel time, specify the MaxTravelTimeBetweenBreaks attribute value as 120 for both breaks on a route assuming that the time_units parameter is set to Minutes. Because the break duration is 15 minutes, specify a value of 15 for the ServiceTime attribute. Because the break is unpaid, specify a value of 0 for the IsPaid attribute. The other attribute values are not specified because their default values are adequate in this scenario.
{
"features": [
{
"attributes": {
"RouteName": "Truck1",
"Precedence": 1,
"ServiceTime": 15,
"MaxTravelTimeBetweenBreaks": 120,
"IsPaid": 0
}
},
{
"attributes": {
"RouteName": "Truck1",
"Precedence": 2,
"ServiceTime": 15,
"MaxTravelTimeBetweenBreaks": 120,
"IsPaid": 0
}
},
{
"attributes": {
"RouteName": "Truck2",
"Precedence": 1,
"ServiceTime": 15,
"MaxTravelTimeBetweenBreaks": 120,
"IsPaid": 0
}
},
{
"attributes": {
"RouteName": "Truck2",
"Precedence": 2,
"ServiceTime": 15,
"MaxTravelTimeBetweenBreaks": 120,
"IsPaid": 0
}
}
]
}
Example 3: Specify work-time-based breaks using JSON structure.
This example shows how to specify work-time-based breaks by specifying the value for the MaxCumulWorkTime attribute. The input vehicle routing problem requires that the driver for each of the two routes have one 15-minute paid break after two hours of work time and a second 15-minute paid break after three hours of work time since the first break.
You must specify two breaks for each route, so you have a total of four features. The first break for each route has a precedence value of 1 and the second break has a precedence value of 2. Because the first break on each route must occur after two hours of work, specify the MaxCumulWorkTime attribute value as 120 for the first break on a route assuming that the time_units parameter is set to Minutes. Because the second break is needed after three more hours of work, specify 315 (five hours and 15 minutes) as the second break's MaxCumulWorkTime value. This number includes the MaxCumulWorkTime and ServiceTime values of the preceding break, along with the three additional hours of work time before granting the second break (120+15+180=315). Because the break duration is 15 minutes, specify a value of 15 for the ServiceTime attribute. The other attribute values are not specified because their default values are adequate in this scenario.
{
"features": [
{
"attributes": {
"RouteName": "Truck1",
"Precedence": 1,
"ServiceTime": 15,
"MaxCumulWorkTime": 120
}
},
{
"attributes": {
"RouteName": "Truck1",
"Precedence": 2,
"ServiceTime": 15,
"MaxCumulWorkTime": 315
}
},
{
"attributes": {
"RouteName": "Truck2",
"Precedence": 1,
"ServiceTime": 15,
"MaxCumulWorkTime": 120
}
},
{
"attributes": {
"RouteName": "Truck2",
"Precedence": 2,
"ServiceTime": 15,
"MaxCumulWorkTime": 315
}
}
]
}
time_units
Utilice este parámetro para especificar las unidades de tiempo para todos los valores de atributos basados en tiempo especificados con diferentes parámetros. El parámetro se puede especificar usando uno de los siguientes valores:
- Seconds
- Minutes
- Hours
- Days
El valor predeterminado es Minutes
Muchos parámetros en la solicitud de problema de generación de rutas para vehículos tienen atributos para almacenar valores de tiempo, tales como ServiceTime para el parámetro orders y CostPerUnitTime para el parámetro routes. Para minimizar los requisitos de entrada de datos, estos valores de atributo no incluyen unidades. En lugar de ello, todos los valores de atributo basados en el tiempo se deben introducir en las mismas unidades y el parámetro time_units se utiliza para especificar las unidades de esos valores.
Nota:
Los atributos basados en el tiempo de los parámetros de salida también utilizan las mismas unidades especificadas por este parámetro.
distance_units
Utilice este parámetro para especificar las unidades de distancia para todos los valores de atributos basados en distancia especificados con diferentes parámetros. El parámetro se puede especificar usando uno de los siguientes valores:
- Miles
- Kilometers
- Feet
- Yards
- Meters
- NauticalMiles
El valor predeterminado es Miles
Muchos parámetros en la solicitud de problema de generación de rutas para vehículos tienen atributos para almacenar valores de distancia, tales como MaxTotalDistance y CostPerUnitDistance para el parámetro routes. Para minimizar los requisitos de entrada de datos, estos valores de atributo no incluyen unidades. En lugar de ello, todos los valores de atributo basados en la distancia se deben introducir en las mismas unidades y el parámetro distance_units se utiliza para especificar las unidades de esos valores.
Nota:
Los atributos basados en la distancia de los parámetros de salida también utilizan las mismas unidades especificadas por este parámetro.
analysis_region
El servicio ignora este parámetro y la especificación de un valor no tiene ningún efecto en el análisis.
uturn_policy
Use este parámetro para restringir o permitir que la ruta haga cambios de sentido en los cruces.
Precaución:
El valor de este parámetro, independientemente de si se basa en el valor predeterminado o se establece explícitamente un valor, se invalida si se cambia travel_mode a cualquier valor distinto de Custom. El valor predeterminado de travel_mode es Driving, por lo que, a menos que cambie travel_mode a un valor diferente, este valor de parámetro se invalidará.
Para comprender los valores del parámetro disponibles, un cruce es un punto donde solo hay dos calles que intersecan entre sí. Si hay tres o más calles que se intersecan en un punto, se llama intersección. Un cul-de-sac es una calle sin salida. Este parámetro puede tener los siguientes valores:
Parameter Value | Description |
---|---|
ALLOW_UTURNS | Los cambios de sentido están permitidos en todas partes. Permitir los cambios de sentido implica que el vehículo puede girar en un cruce y volver por la misma calle. |
ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY | Los cambios de sentido están prohibidos en los cruces donde se cruzan dos calles. |
ALLOW_DEAD_ENDS_ONLY | Los cambios de sentido están prohibidos en todos los cruces y todas las intersecciones y solo se permiten en calles sin salida. |
NO_UTURNS Not Allowed | Los cambios de sentido están prohibidos en todos los cruces, todas las intersecciones y todas las calles sin salida. Aunque se elija este valor para el parámetro, una ruta puede hacer cambios de sentido en paradas. Para prohibir los cambios de sentido en una parada, puede cambiar la propiedad CurbApproach al valor adecuado (3). |
The default value for this parameter is ALLOW_UTURNS.
time_window_factor
Use este parámetro para evaluar la importancia de respetar las ventanas de tiempo sin causar infracciones. La violación de ventana de tiempo ocurre cuando una ruta llega a una orden, depósito o descanso después de que se cierra la ventana de tiempo. El parámetro se puede especificar usando uno de los siguientes valores:
- Low: asigna más importancia a minimizar los tiempos de conducción y menos a llegar a tiempo a las paradas. Es posible que desee utilizar este valor si tiene varios trabajos atrasados de solicitudes de servicio. Para poder cumplir con más órdenes en un día y reducir el trabajo atrasado, puede elegir Low, aunque los clientes sufran las molestias de las llegadas tarde.
- Medium: equilibra la importancia de minimizar los tiempos de conducción y la llegada dentro de las ventanas de tiempo.
- High: asigna más importancia a llegar a tiempo a las paradas que a minimizar los tiempos de conducción. Las organizaciones que realizan entregas con tiempos críticos o a las que les preocupa mucho el servicio al cliente eligen el valor High.
El valor predeterminado es Medium
La solución al problema de generación de rutas para vehículos puede cambiar según el valor que elija para el parámetro time_window_factor. Las dos imágenes siguientes muestran el mismo conjunto de órdenes y depósitos; sin embargo, las rutas no son las mismas porque se utilizaron distintos valores de time_window_factor. La imagen de la izquierda muestra la ruta que resulta con el parámetro time_window_factor cambiado a Low. La ruta es corta, pero tiene una violación de ventana de tiempo. Si time_window_factor tiene el valor High, la ruta cumple todas las ventanas de tiempo, pero es más larga porque da servicio primero a la orden con una ventana de tiempo.


spatially_cluster_routes
Use este parámetro para especificar si las órdenes asignadas a una ruta individual se agrupan en clústeres espacialmente.
- true: indica que las órdenes asignadas a una ruta individual se agrupan en clústeres espacialmente por la creación automática de puntos de semilla para todas las rutas. El clustering de órdenes da como resultado normalmente rutas que cubren un área más pequeña y que no intersecan tanto a otras rutas, pero el coste global de la solución podría ser mayor. Es posible que desee agrupar las órdenes en clústeres para mantener a los conductores en vecindarios o regiones generales con las que estén familiarizados o es posible que desee tener rutas compartimentadas si así resulta más fácil de administrar para su organización.
- false: indica que las órdenes asignadas a una ruta individual no se agrupan en clústeres espacialmente. Use este valor si ha predefinido territorios de trabajo para las rutas que se especifican con el parámetro route_zones.
El valor predeterminado de este parámetro es true.
route_zones
Delinea los territorios de trabajo para determinadas rutas. Una zona de ruta es una entidad poligonal que se utiliza para restringir rutas a fin de dar servicio solo a las órdenes que queden dentro o cerca del área especificada. A continuación se muestran algunos ejemplos que indican cuándo pueden ser útiles las zonas de ruta:
- Algunos de los empleados no tienen los permisos requeridos para realizar el trabajo en ciertos estados o comunidades. Puede crear una zona de ruta estricta de modo que solo visiten órdenes en aquellas áreas en las que cumplen los requisitos.
- Uno de los vehículos se estropea con frecuencia y desea minimizar el tiempo de respuesta haciendo que visite solo las órdenes que queden cerca del taller de mantenimiento. Puede crear una zona de ruta estricta o no estricta para mantener el vehículo cerca.
The route_zones parameter can be specified using a JSON structure that represents a set of point features. The property is optional; however, the JSON structure must specify either the url or features property:
url: especifique una solicitud de consulta REST para cualquier entidad, mapa o servicio de geoprocesamiento de ArcGIS Server que devuelva un conjunto de entidades JSON.
features: especifique una matriz de entidades.
Each feature in the features array represents a route zone and contains the following properties:
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Sugerencia:
Se recomienda especificar explícitamente el valor de spatialReference y especificarlo para todo el JSON en lugar de para cada geometría individual.
- attributes: especifique cada atributo como un par de clave-valor donde la clave es el nombre de un campo dado y el valor es el valor de atributo del campo correspondiente.
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Attributes for route_zones
When specifying the route_zones parameter, you can specify additional information about route zones, such as the name of the route to which the route zone applies, using attributes. The route_zones parameter can be specified with the following attributes:
- RouteName
The name of the route to which this zone applies. A route zone can have a maximum of one associated route. This attribute is a foreign key to the Name attribute in the routes parameter, so the values must match. The attribute cannot have a null value.
- IsHardZone
Specifies whether the route zone is hard or soft. The attribute value is specified as an integer with possible values of 0 or 1. A value of 1 indicates that the route zone is hard; that is, an order that falls outside of the route zone area can't be assigned to the route. A value of 0 indicates that such orders can still be assigned, but the cost of servicing the order is weighted by a function that is based on the Euclidean distance from the route zone. This means that as the straight-line distance from the soft zone to the order increases, the likelihood of the order being assigned to the route decreases.
Nota:
Even though a route associated with a hard route zone can only service orders inside the route zone, other routes can still enter and service the orders inside the same zone. This is because route zones restrict the route, not the orders. If you want to assign all the orders in an area exclusively to one route, don't use route zones; instead, for all the orders in an area, change the RouteName attribute on the orders parameter to the proper route, and set the AssignmentRule attribute for the orders to 2.
Syntax examples for route_zones
Syntax for specifying route zones using JSON structure for features
{
"spatialReference": {
"wkid": <wkid>,
"latestWkid": <wkid>
},
"features": [
{
"geometry": {
"rings": [
[
[<x11>,<y11>],
[<x12>,<y12>],
[<x11>,<y11>]
],
[
[<x21>,<y21>],
[<x22>,<y22>],
[<x21>,<y21>]
]
]
},
"attributes": {
"<field1>": <value11>,
"<field2>": <value12>
}
},
{
"geometry": {
"rings": [
[
[<x11>,<y11>],
[<x12>,<y12>],
[<x11>,<y11>]
],
[
[<x21>,<y21>],
[<x22>,<y22>],
[<x21>,<y21>]
]
]
},
"attributes": {
"<field1>": <value21>,
"<field2>": <value22>
}
}
]
}
Syntax for specifying route zones using a URL returning a JSON response
{
"url": "<url>"
}
Examples for route_zones
Example 1: Specify route zones using JSON structure.
The example shows how to add route zones associated with the routes in a vehicle routing problem. The two routes in the input vehicle routing problem are operated by vans that are only licensed to service orders in a predetermined area and cannot service orders that are outside of the route zone. The IsHardZone attribute value is set to 1 to ensure that the vans are only assigned orders that are within the route zones.
The first zone is a single-part polygon feature composed of four points. The second zone is a two-part polygon feature in which both parts are composed of four points. The barrier geometries are in the spatial reference of the network dataset. The spatialReference property is not required.
{
"features": [
{
"geometry": {
"rings": [
[
[-97.0634,32.8442],
[-97.0554,32.84],
[-97.0558,32.8327],
[-97.0638,32.83],
[-97.0634,32.8442]
]
]
},
"attributes": {
"RouteName": "East Bay Route",
"IsHardZone": 1
}
},
{
"geometry": {
"rings": [
[
[-97.0803,32.8235],
[-97.0776,32.8277],
[-97.074,32.8254],
[-97.0767,32.8227],
[-97.0803,32.8235]
],
[
[-97.0871,32.8311],
[-97.0831,32.8292],
[-97.0853,32.8259],
[-97.0892,32.8279],
[-97.0871,32.8311]
]
]
},
"attributes": {
"Name": "North Bay Route",
"IsHardZone": 1
}
}
]
}
Example 2: Specify route zones using a URL.
The URL makes a query for a few features from a map service. A URL querying features from a feature service can also be specified.
{
"url": "https://machine.domain.com/webadaptor/rest/services/Network/USA/MapServer/7/query?where=1%3D1&returnGeometry=true&f=json"
}
route_renewals
Especifica los depósitos intermedios que las rutas pueden visitar para volver a cargar o descargar la carga que están entregando o recogiendo. Concretamente, una reanudación de ruta vincula una ruta a un depósito. La relación indica que la ruta se puede reanudar (volver a cargar o descargar en ruta) en el depósito asociado.
Las renovaciones de ruta se pueden utilizar para modelar escenarios en los que un vehículo recoge una carga completa de entregas en el depósito inicial, da servicio a las órdenes, vuelve al depósito para reanudar su carga de entregas y sigue dando servicio a más órdenes. Por ejemplo, en la entrega de gas propano, el vehículo podría realizar varias entregas hasta que el depósito se quede casi vacío o vacío por completo, visita un punto de recarga y realiza más entregas.
Aquí aparecen algunas reglas y opciones a tener en cuenta:
- El punto de recarga/descarga o la ubicación de reanudación, pueden ser distintos del depósito inicial o final.
- Cada ruta puede tener una o varias ubicaciones de reanudación predeterminadas.
- Una única ruta puede utilizar una ubicación de renovación más de una vez.
- En aquellos casos donde podría haber varias ubicaciones de renovación posibles para una ruta, el solucionador identifica la ubicación de renovación disponible más cercana.
The route_renewals parameter can be specified using a JSON structure that represents a set of point features. The property is optional; however, the JSON structure must specify either the url or features property:
url: especifique una solicitud de consulta REST para cualquier entidad, mapa o servicio de geoprocesamiento de ArcGIS Server que devuelva un conjunto de entidades JSON.
features: especifique una matriz de entidades.
Each feature in the features array represents a route renewal and contains the following property:
- attributes: especifique cada atributo como un par de clave-valor donde la clave es el nombre de un campo dado y el valor es el valor de atributo del campo correspondiente.
Nota:
Unlike the orders or depots parameter, the JSON structure for the route_renewals parameter does not have a geometry property.
Attributes for route_renewals
When specifying the route renewals, you can specify additional properties for route renewals, such as the route name or service time, using attributes. The route_renewals parameter can be specified with the following attributes:
- DepotName
The name of the depot where this renewal takes place. This attribute is a foreign key to the Name attribute in the depots parameter, so the values must match. The attribute cannot have a null value.
- RouteName
The name of the route that this renewal applies to. This attribute is a foreign key to the Name attribute in the routes parameter, so the values must match. The attribute cannot have a null value.
- ServiceTime
The service time for the renewal. This attribute can contain a null value; a null value indicates zero service time. The units for this attribute value are specified by the time_units parameter.
Nota:
The time taken to load a vehicle at a renewal depot may depend on the size of the vehicle and how full or empty the vehicle is. However, the service time for a route renewal is a fixed value and does not take into account the actual load. Assign the renewal service time a value corresponding to a full truckload, an average truckload, or another time estimate of your choice.
- Sequences
Specifies one or more sequences of visits to the renewal depot. This attribute can be used to preassign visits to the renewal depot. The attribute value is specified as a space-separated string of sequence values. The attribute can contain a null value; a null value indicates that the service will determine the best sequence to visit the renewal depot.
Syntax examples for route_renewals
Syntax for specifying route renewals using JSON structure for features
{
"features": [
{
"attributes": {
"<field1>": <value11>,
"<field2>": <value12>
}
},
{
"attributes": {
"<field1>": <value21>,
"<field2>": <value22>
}
}
]
}
Syntax for specifying route renewals using a URL returning a JSON response
{
"url": "<url>"
}
Example for route_renewals
Example: Specify route renewals using a JSON structure
In this example, a distribution company makes deliveries from a central depot using two trucks. Over time, the distribution company also acquired two additional satellite distribution centers. These centers can be used by the trucks to renew their truckload while making their deliveries instead of returning to the main distribution center for renewal. The new distribution centers are specified as route renewals when solving the vehicle routing problem, and the service determines the best renewal locations that minimize the total cost.
You must specify two route renewal locations for each route, so you have a total of four route renewal features. Identify the depot location that can be used for renewal using the DepotName attribute. Specify the name of the route the renewal applies to using the RouteName attribute. Because it takes 15 minutes to load the truck at the renewal location, specify 15 as the value for the ServiceTime attribute assuming the time_units parameter is set to Minutes. The other attribute values are not specified because their default values are adequate in this scenario.
Nota:
Unlike the depots and orders parameters, the spatialReference and geometry properties are not required when specifying the route_renewals parameter.
{
"features": [
{
"attributes": {
"RouteName": "Truck1",
"DepotName": "800 Brush St",
"ServiceTime": 15
}
},
{
"attributes": {
"RouteName": "Truck1",
"DepotName": "100 Old County Rd",
"ServiceTime": 15
}
},
{
"attributes": {
"RouteName": "Truck2",
"DepotName": "800 Brush St",
"ServiceTime": 15
}
},
{
"attributes": {
"RouteName": "Truck2",
"DepotName": "100 Old County Rd",
"ServiceTime": 15
}
}
]
}
order_pairs
Use this parameter to pair pickup and delivery orders so they are serviced by the same route.
A veces se requiere que se emparejen la recogida y entrega de las órdenes. Por ejemplo, una compañía de mensajería podría necesitar tener una ruta para recoger un paquete de alta prioridad de una orden y entregarlo a otra sin volver a un depósito o estación de ordenación para minimizar el tiempo de entrega. Estas órdenes relacionadas pueden estar asignadas a la misma ruta con la secuencia adecuada utilizando pares de órdenes. Las restricciones sobre cuánto tiempo puede permanecer el paquete en el vehículo también se pueden asignar; por ejemplo, el paquete puede ser una muestra de sangre que se debe transportar desde la consulta del médico al laboratorio antes de dos horas.
Algunas situaciones podrían requerir dos pares de órdenes. Por ejemplo, supongamos que desea transportar a una persona mayor desde su casa al médico y llevarla de regreso a casa. El trayecto desde su casa al médico es un par de órdenes con una hora de llegada deseada al médico, mientras que el trayecto del médico a casa es otro par con un tiempo de recogida deseado.
Precaución:
For the request to succeed, the first order in the pair must be a pickup order; that is, the value for its DeliveryQuantities attribute must be null. The second order in the pair must be a delivery order; that is, the value for its PickupQuantities attribute must be null. The quantity that is picked up at the first order must match the quantity that is delivered at the second order. As a special case, both orders can have zero quantities for scenarios where capacities are not used.
The order_pairs parameter can be specified using a JSON structure that represents a set of point features. The property is optional; however, the JSON structure must specify either the url or features property:
url: especifique una solicitud de consulta REST para cualquier entidad, mapa o servicio de geoprocesamiento de ArcGIS Server que devuelva un conjunto de entidades JSON.
features: especifique una matriz de entidades.
Each feature in the features array represents an order pairs stop and contains the following properties:
- attributes: especifique cada atributo como un par de clave-valor donde la clave es el nombre de un campo dado y el valor es el valor de atributo del campo correspondiente.
Nota:
Unlike the orders or depots parameter, the JSON structure for the order_pairs parameter does not have a geometry property.
Attributes for order_pairs
When specifying the order pairs, you can specify additional properties for order pairs, such as the orders that should be paired together or the maximum transit time using attributes. The order_pairs parameter can be specified with the following attributes:
Nota:
The order quantities are not loaded or unloaded at depots.
- FirstOrderName—The name of the first order of the pair. This attribute is a foreign key to the Name attribute in the orders parameter, so the values must match. The attribute cannot have a null value.
- SecondOrderName—The name of the second order of the pair. This attribute is a foreign key to the Name attribute in the orders parameter, so the values must match. The attribute cannot have a null value.
- MaxTransitTime
The maximum transit time for the pair. The transit time is the duration from the departure time of the first order to the arrival time at the second order. This constraint limits the time-on-vehicle, or ride time, between the two orders. When a vehicle is carrying people or perishable goods, the ride time is typically shorter than that of a vehicle carrying packages or nonperishable goods.
Excess transit time (measured with respect to the direct travel time between order pairs) can be tracked and weighted by the service. Because of this, you can direct the service to take one of three approaches: minimize the overall excess transit time regardless of the increase in travel cost for the fleet. find a solution that balances overall violation time and travel cost, or ignore the overall excess transit time and, instead, minimize the travel cost for the fleet. By assigning an importance level for the excess_transit_factor parameter, you are in effect choosing one of these three approaches. Regardless of the importance level, the service will always return an error if the MaxTransitTime attribute value is surpassed.
This attribute can contain null values; a null value indicates that there is no constraint on the ride time. The default value for this attribute is null.
Syntax examples for order_pairs
Syntax for specifying order pairs using JSON structure for features
{
"features": [
{
"attributes": {
"<field1>": <value11>,
"<field2>": <value12>
}
},
{
"attributes": {
"<field1>": <value21>,
"<field2>": <value22>
}
}
]
}
Syntax for specifying order pairs using a URL returning a JSON response
{
"url": "<url>"
}
Example for order_pairs
Example: Specify order pairs using JSON structure
In this example, a paratransit company needs to find the best routes for a fleet of vans to transport people who would otherwise not have access to transportation from their homes to various hospitals for medical appointments.
The hospital and patient locations are specified as the orders parameter. The passengers must be taken to a predetermined hospital. For each patient-to-hospital pair, add a feature to the order_pairs parameter using the patient name as the value for the FirstOrderName attribute and the hospital name as the value for the SecondOrderName attribute. The maximum time in minutes that the patients can sit in the van during a one-way trip is specified using the MaxTransitTime attribute.
Nota:
Unlike the depots and orders parameters, the spatialReference and geometry properties are not required when specifying the order_pairs parameter.
{
"features": [
{
"attributes": {
"FirstOrderName": "Mark (Home)",
"SecondOrderName": "Mark (Doctor)",
"MaxTransitTime": 30
}
},
{
"attributes": {
"FirstOrderName": "Tom (Home)",
"SecondOrderName": "Tom (Doctor)",
"MaxTransitTime": 20
}
},
{
"attributes": {
"FirstOrderName": "Bob (Home)",
"SecondOrderName": "Bob (Doctor)",
"MaxTransitTime": 25
}
},
{
"attributes": {
"FirstOrderName": "Tony (Home)",
"SecondOrderName": "Tony (Doctor)",
"MaxTransitTime": 15
}
}
]
}
excess_transit_factor
Use este parámetro para calificar la importancia de reducir el exceso de tiempo de tránsito de los pares de órdenes. El exceso de tiempo de tránsito es la cantidad de tiempo que excede el tiempo requerido para viajar directamente entre las órdenes asociadas. El exceso de tiempo puede ser causado por los descansos del conductor descansos o por viajes a las órdenes y los depósitos intermedios.

El parámetro se puede especificar usando uno de los siguientes valores:
- Low: el servicio intenta encontrar una solución que minimice el coste total de la solución, independientemente del exceso de tiempo de tránsito. Este valor se usa generalmente para servicios de mensajero. Debido a que los servicios de mensajero transportan paquetes y no personas, no necesitan preocuparse por el tiempo de viaje. Al utilizar Low, los servicios de mensajero pueden cumplir con las órdenes asociadas en la secuencia adecuada y minimizar el coste total de la solución.
- Medium: el servicio busca un equilibrio entre reducir el exceso de tiempo de tránsito y reducir el coste total de la solución.
- High: el servicio trata de encontrar una solución con el menor exceso de tiempo de tránsito entre órdenes asociadas, a costa de aumentar los costes de viaje generales. Es lógico utilizar este valor si está transportando personas entre órdenes asociadas y desea acortar su tiempo de viaje. Esto es característico de los servicios de taxi.
El valor predeterminado es Medium.
La solución al problema de generación de rutas para vehículos puede cambiar según el valor que elija para el parámetro excess_transit_factor. Las dos imágenes siguientes muestran el mismo conjunto de órdenes y depósitos; sin embargo, las rutas no son las mismas porque se utilizaron distintos valores de excess_transit_factor. La imagen de la izquierda muestra la ruta que resultó cuando el parámetro excess_transit_factor se estableció como Low. La ruta total es corta, pero el tiempo de viaje desde la primera orden al par de órdenes, el aeropuerto, es larga. Si excess_transit_factor tiene el valor High, la ruta reduce el tiempo entre la primera orden y el aeropuerto manteniendo el mismo tiempo de trayecto al aeropuerto para la orden de la derecha; sin embargo, el coste total de la ruta aumenta.


point_barriers
Utilice este parámetro para especificar uno o varios puntos que actuarán como restricciones temporales o representen el tiempo o la distancia adicionales que puede que se necesiten 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.
You can specify barrier geometries as well as attributes using a more comprehensive JSON structure that references a set of features. The property is optional; however, the JSON structure must specify either the url or features property:
url: especifique una solicitud de consulta REST para cualquier entidad, mapa o servicio de geoprocesamiento de ArcGIS Server que devuelva un conjunto de entidades JSON.
features: especifique una matriz de entidades.
Cada entidad de la matriz representa una barrera de punto y contiene los siguientes campos:
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Sugerencia:
Se recomienda especificar explícitamente el valor de spatialReference y especificarlo para todo el JSON en lugar de para cada geometría individual.
- attributes: especifique cada atributo como un par de clave-valor donde la clave es el nombre de un campo dado y el valor es el valor de atributo del campo correspondiente.
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Attributes for point_barriers
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 los siguientes atributos:
Name
El nombre de la barrera.
BarrierType
Especifica si la barrera de punto restringe el recorrido 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):
-
0 (Restricción): prohíbe viajar por la barrera. La barrera se conoce como barrera de punto de restricción, ya que actúa como una restricción.
El primer mapa muestra la ruta más corta entre dos paradas sin ninguna barrera de punto de restricción. El segundo mapa tiene una carretera que está bloqueado por un árbol caído, de modo que la ruta más corta entre los mismos puntos es más larga. 2 (Coste agregado): viajar a través de la barrera aumenta el tiempo o la distancia de viaje en la cantidad especificada en los atributos de Additional_[Cost]. Este tipo de barrera se denomina barrera de punto de coste agregado.
El mapa de la izquierda muestra la ruta más corta entre dos paradas sin ninguna barrera de punto de coste agregado. En el mapa de la derecha, el tiempo de viaje de la parada uno a la parada dos sería el mismo pasando por el extremo norte del bloqueo o por el extremo sur; sin embargo, dado que al cruzar las vías del ferrocarril se incurre en una penalización de tiempo (modelada con barreras de punto de coste agregado), se elige la ruta con un solo cruce de ferrocarril. El coste de cruzar la barrera se suma al tiempo de viaje agregado de la ruta resultante.
Additional_Time
El tiempo de viaje agregado cuando se realiza el trazado poligonal de la barrera. Este campo solo es aplicable para barreras con coste agregado y si el valor del parámetro measurement_units se basa en el tiempo.
Este valor de campo debe ser mayor o igual que cero, y sus unidades son las mismas que las especificadas en el parámetro measurement_units.
Additional_Distance
La distancia agregada cuando se realiza el trazado poligonal de la barrera. Este campo solo es aplicable para barreras con coste agregado y si el valor del parámetro measurement_units se basa en la distancia.
El valor del campo debe ser mayor o igual que cero, y sus unidades son las mismas que las especificadas en el parámetro measurement_units.
AdditionalCost
El coste agregado cuando se realiza el trazado poligonal de la barrera. Este campo solo es aplicable para barreras con coste agregado cuando el atributo de impedancia no se basa ni en tiempo ni en distancia.
FullEdge
Especifica cómo se aplican las barreras de punto de restricción a los elementos de eje durante el análisis. El valor de campo se especifica como uno de los siguientes enteros (use el código numérico, no el nombre entre paréntesis):
- 0 (Falso): permite viajar por el eje hasta la barrera, pero no a través de ella. Este es el valor predeterminado.
- 1 (Verdadero): restringe el viaje a cualquier punto del eje asociado.
CurbApproach
Especifica la dirección de tráfico que se ve afectada por la barrera. El valor de campo se especifica como uno de los siguientes enteros (use el código numérico, no el nombre entre paréntesis):
- 0 (Cualquier lado del vehículo): la barrera afecta al viaje por el eje en ambas direcciones.
- 1 (Lado derecho del vehículo): los vehículos solo se ven afectados si la barrera se encuentra a su lado derecho al acercase a ella. La barrera no afecta a los vehículos que atraviesan el mismo eje, pero se acercan la barrera por su lado izquierdo.
- 2 (Lado izquierdo del vehículo): los vehículos solo se ven afectados si la barrera se encuentra a su lado izquierdo al acercase a ella. La barrera no afecta a los vehículos que atraviesan el mismo eje, pero se acercan la barrera por su lado derecho.
Debido a que los cruces son puntos y no tienen lados, las barreras sobre cruces afectan a todos los vehículos, independientemente de la aproximación a borde.
El atributo CurbApproach trabaja 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 instalación 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. Los estándares de circulación nacionales pueden influir en su decisión de aproximarse a una instalación por una de las dos direcciones posibles, de modo que quede en el lado derecho o en el lado izquierdo del vehículo. Por ejemplo, para llegar a una instalación y que no haya un carril entre el vehículo y la instalación, elija 1 (Lado derecho del vehículo) en Estados Unidos y 2 (Lado izquierdo del vehículo) en Reino Unido.
Bearing
La dirección en la que está avanzando un punto. Las unidades son grados y se miden en sentido horario desde el norte verdadero. Este campo se utiliza junto con el campo BearingTol.
Los datos de rumbo normalmente se envían de forma automática desde un dispositivo móvil dotado de un receptor GPS. Intente incluir datos de rumbo si está cargando una ubicación de entrada que se mueve, como un peatón o un vehículo.
Utilizar este campo tiende a evitar agregar ubicaciones a los ejes equivocados, que puede ocurrir cuando un vehículo está cerca de una intersección o un paso elevado, por ejemplo. El rumbo también ayuda a la herramienta a determinar en qué lado de la calle está el punto.
Más información sobre el rumbo y la tolerancia de rumbo
BearingTol
El valor de tolerancia de rumbo crea un rango de valores de rumbo aceptable al ubicar los puntos en movimiento en un eje con el campo Bearing. Si el valor del campo Bearing está dentro del rango de valores aceptables que se generan a partir de la tolerancia de rumbo en un eje, el punto se puede agregar como una ubicación de red ahí; de lo contrario, se evalúa el punto más cercano sobre el próximo eje más cercano.
Las unidades se expresan en grados y el valor predeterminado es 30. Los valores deben ser mayores que 0 y menores que 180. Un valor de 30 significa que, cuando Network Analyst intenta agregar una ubicación de red en un eje, se genera un rango de valores de rumbo aceptable 15 grados hacia cada lado del eje (izquierda y derecha) y en ambas direcciones digitalizadas del eje.
Más información sobre el rumbo y la tolerancia de rumbo
NavLatency
Este campo solo se utiliza en el proceso de resolución si los campos Bearing y BearingTol también tienen valores. Sin embargo, la introducción de un valor de campo NavLatency es opcional, incluso cuando hay valores en Bearing y BearingTol. NavLatency indica cuánto coste se espera desde el momento en que se envía la información de GPS desde un vehículo en movimiento a un servidor y el momento en que el dispositivo de navegación del vehículo recibe la ruta procesada.
Las unidades de NavLatency son las mismas que las unidades del atributo de impedancia.
Syntax examples for point_barriers
Sintaxis para especificar point_barriers utilizando una estructura JSON para entidades
{
"spatialReference": {
"wkid": <wkid>,
"latestWkid": <wkid>
},
"features": [
{
"geometry": {
"x": <x1>,
"y": <y1>
},
"attributes": {
"<field1>": <value11>,
"<field2>": <value12>
}
},
{
"geometry": {
"x": <x2>,
"y": <y2>
},
"attributes": {
"<field1>": <value21>,
"<field2>": <value22>
}
}
]
}
Sintaxis para especificar point_barriers utilizando una URL que devuelve una respuesta JSON
{
"url": "<url>"
}
Examples for point_barriers
Ejemplo 1: especificar una barrera de punto de coste agregado utilizando una estructura JSON
En este ejemplo, se muestra cómo utilizar una barrera de punto de coste agregado para modelar un retraso de cinco minutos en un cruce de ferrocarril. El atributo BarrierType utilizado para especificar la barrera de punto es de coste agregado y el atributo Additional_Time se utiliza para especificar el retraso agregado en minutos.
{
"spatialReference": {
"wkid": 4326
},
"features": [
{
"geometry": {
"x": 37.541479,
"y": -122.053461
},
"attributes": {
"Name": "Haley St railroad crossing",
"BarrierType": 2,
"Additional_Time": 5
}
}
]
}
Ejemplo 2: especificar barreras de punto de restricción en la referencia espacial Web Mercator utilizando una estructura JSON
En este ejemplo, se muestra cómo utilizar una barrera de punto de restricción para modelar una carretera que está bloqueada por un árbol caído. Las geometrías de la barrera están en la referencia espacial Web Mercator y no en la referencia espacial del dataset de red.
{
"spatialReference": {
"wkid": 102100
},
"features": [
{
"geometry": {
"y": -13635398.9398,
"x": 4544699.034400001
},
"attributes": {
"Name": "Fallen tree at 123 Main St",
"BarrierType": 0
}
}
]
}
Ejemplo 3: especificar barreras de punto utilizando una URL
La dirección URL hace una consulta para algunas entidades desde un servicio de mapas. También es posible especificar una URL que consulte entidades desde un servicio de entidades.
{
"url": "https://machine.domain.com/webadaptor/rest/services/NetworkAnalysis/SanDiego/MapServer/21/query?where=1%3D1&outFields=Name&f=json"
}
line_barriers
Utilice este parámetro para especificar 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.
You can specify polyline barrier geometries as well as attributes using a JSON structure that references a set of features. The property is optional; however, the JSON structure must specify either the url or features property:
url: especifique una solicitud de consulta REST para cualquier entidad, mapa o servicio de geoprocesamiento de ArcGIS Server que devuelva un conjunto de entidades JSON.
features: especifique una matriz de entidades.
Cada entidad de la matriz representa una barrera de polilínea y contiene los siguientes campos:
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Sugerencia:
Se recomienda especificar explícitamente el valor de spatialReference y especificarlo para todo el JSON en lugar de para cada geometría individual.
- attributes: especifique cada atributo como un par de clave-valor donde la clave es el nombre de un campo dado y el valor es el valor de atributo del campo correspondiente.
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Attributes for line_barriers
Cuando se especifican las barreras de línea, puede definir propiedades de nombre y tipo de barrera para cada una de ellas mediante los siguientes atributos:
Name
El nombre de la barrera.
Syntax examples for line_barriers
Sintaxis para especificar barreras de línea utilizando una estructura JSON para entidades
{
"spatialReference": {
"wkid": <wkid>,
"latestWkid": <wkid>,
},
"features": [
{
"geometry": {
"paths": [
[
[<x11>,<y11>],
[<x12>,<y12>]
],
[
[<x21>,<y21>],
[<x22>,<y22>]
]
]
},
"attributes": {
"<field1>": <value11>,
"<field2>": <value12>
}
},
{
"geometry": {
"paths": [
[
[<x11>,<y11>],
[<x12>,<y12>]
],
[
[<x21>,<y21>],
[<x22>,<y22>]
]
},
"attributes": {
"<field1>": <value21>,
"<field2>": <value22>
}
}
]
}
Sintaxis para especificar barreras de línea utilizando una URL que devuelve una estructura JSON
{
"url": "<url>"
}
Examples for line_barriers
Ejemplo 1: especificar barreras de línea mediante una estructura JSON
El ejemplo muestra cómo agregar dos líneas como barreras de línea para restringir el viaje por las calles que se intersecan con las líneas. La barrera 1 es una entidad de línea de una sola parte formada por dos puntos. La barrera 2 es una entidad de línea de dos partes cuya primera parte está formada por tres puntos y cuya segunda parte está formada por dos puntos.
{
"spatialReference": {
"wkid": 102100
},
"features": [
{
"geometry": {
"paths": [
[
[-10804823.397,3873688.372],
[-10804811.152,3873025.945]
]
]
},
"attributes": {
"Name": "Barrier 1"
}
},
{
"geometry": {
"paths": [
[
[-10804823.397,3873688.372],
[-10804807.813 3873290.911],
[-10804811.152,3873025.945]
],
[
[-10805032.678,3863358.76],
[-10805001.508,3862829.281]
]
]
},
"attributes": {
"Name": "Barrier 2"
}
}
]
}
Ejemplo 2: especificar barreras de línea mediante una URL
La dirección URL hace una consulta para algunas entidades desde un servicio de mapas. También es posible especificar una URL que consulte entidades desde un servicio de entidades.
{
"url": "https://machine.domain.com/webadaptor/rest/services/Network/USA/MapServer/6/query?where=1%3D1&returnGeometry=true&f=json"
}
polygon_barriers
Utilice este parámetro para especificar 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.
You can specify polygon barrier geometries as well as attributes using a JSON structure that references a set of features. The property is optional; however, the JSON structure must specify either the url or features property:
url: especifique una solicitud de consulta REST para cualquier entidad, mapa o servicio de geoprocesamiento de ArcGIS Server que devuelva un conjunto de entidades JSON.
features: especifique una matriz de entidades.
Cada entidad de la matriz representa una barrera de polígono y contiene los siguientes campos:
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Sugerencia:
Se recomienda especificar explícitamente el valor de spatialReference y especificarlo para todo el JSON en lugar de para cada geometría individual.
- attributes: especifique cada atributo como un par de clave-valor donde la clave es el nombre de un campo dado y el valor es el valor de atributo del campo correspondiente.
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Attributes for polygon_barriers
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 los siguientes atributos:
Name
El nombre de la barrera.
BarrierType
Especifica si la barrera restringe el viaje completamente o si escala el coste (por ejemplo, el tiempo o la distancia) para viajar a través 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):
0 (Restricción): prohíbe atravesar cualquier parte de la barrera. La barrera se conoce como barrera de polígono de restricción, ya que prohíbe viajar por las calles que se intersecan con la barrera. Un uso de este tipo de barrera consiste en modelar inundaciones cubriendo áreas de las calles que hacen inviables los viajes por esas calles.
Este es el valor predeterminado.
El primer mapa representa la ruta más corta entre dos paradas. El segundo mapa muestra una barrera de polígono que bloquea las calles inundadas, de modo que la ruta más corta entre las mismas dos paradas es diferente. 1 (Coste en escala): escala el coste (por ejemplo, el tiempo o la distancia) requerido para recorrer las calles subyacentes por un factor especificado mediante el campo ScaledTimeFactor o ScaledDistanceFactor. Si las calles están parcialmente cubiertas por la barrera, el tiempo o la distancia del viaje se prorratea y se ajusta. Por ejemplo, un factor de 0,25 significa que se espera que el viaje por las calles subyacentes sea cuatro veces más rápido de lo normal. Un factor de 3,0 significa que se espera que el viaje por las calles subyacentes dure tres veces más de lo normal. Este tipo de barrera se denomina barrera de polígono con coste en escala. Se puede utilizar para modelar tormentas que reducen las velocidades de viaje en regiones concretas, por ejemplo.
El primer mapa muestra una ruta que va por condiciones meteorológicas adversas sin tener en cuenta el efecto que las carreteras en mal estado tienen en el tiempo de viaje. El segundo mapa muestra una barrera de polígono escalada que duplica el tiempo de viaje por las carreteras cubiertas por la tormenta. La ruta continúa atravesando el extremo sur de la tormenta, dado que es más rápido gastar tiempo conduciendo lentamente a través de una pequeña parte de la tormenta en lugar de rodearla conduciendo por completo. El servicio utiliza el tiempo de viaje modificado para calcular la ruta mejor, y el tiempo de viaje modificado se informa como el tiempo de viaje total en la respuesta.
ScaledTimeFactor
Este es el factor por el cual se multiplica el tiempo de viaje de las calles que intersecan con la barrera. El valor del campo debe ser mayor que cero.
Este campo solo es aplicable para barreras con coste en escala y cuando el parámetro measurement_units se basa en el tiempo.
ScaledDistanceFactor
Este es el factor por el cual se multiplica la distancia de las calles que intersecan con la barrera. El valor del campo debe ser mayor que cero.
Este campo solo es aplicable para barreras con coste en escala y cuando el parámetro measurement_units se basa en la distancia.
ScaledCostFactor
Este es el factor por el cual se multiplica el coste de las calles que se intersecan con la barrera. El valor del campo debe ser mayor que cero.
Este campo solo es aplicable para barreras con coste en escala cuando la impedancia no se basa ni en tiempo ni en distancia.
Syntax examples for polygon_barriers
Sintaxis para especificar barreras de polígono utilizando una estructura JSON para entidades
{
"spatialReference": {
"wkid": <wkid>,
"latestWkid": <wkid>
}
"features": [
{
"geometry": {
"rings": [
[
[<x11>,<y11>],
[<x12>,<y12>],
[<x11>,<y11>]
],
[
[<x21>,<y21>],
[<x22>,<y22>]
[<x21>,<y21>]
]
]
},
"attributes": {
"<field1>": <value11>,
"<field2>": <value12>
}
},
{
"geometry": {
"rings": [
[
[<x11>,<y11>],
[<x12>,<y12>],
[<x11>,<y11>]
],
[
[<x21>,<y21>],
[<x22>,<y22>],
[<x21>,<y21>]
]
]
},
"attributes": {
"<field1>": <value21>,
"<field2>": <value22>
}
}
]
}
Sintaxis para especificar barreras de polígono utilizando una URL que devuelve una estructura JSON
{
"url": "<url>"
}
Examples for polygon_barriers
Ejemplo 1: especificar barreras de polígono mediante una estructura JSON.
El ejemplo muestra cómo agregar dos polígonos como barreras. El primer polígono, denominado Zona inundable, es una barrera de polígono de restricción que prohíbe viajar por las calles subyacentes. El polígono es una entidad poligonal de una sola parte formada por cuatro puntos. El segundo polígono, denominado Severe weather zone, es una barrera de polígono de coste en escala que aumenta el tiempo de viaje por las calles subyacentes en un tercio del valor original. El polígono es una entidad poligonal de dos partes. Ambas partes están compuestas de cuatro puntos.
{
"spatialReference": {
"wkid": 4326
},
"features": [
{
"geometry": {
"rings": [
[
[-97.0634,32.8442],
[-97.0554,32.84],
[-97.0558,32.8327],
[-97.0638,32.83],
[-97.0634,32.8442]
]
]
},
"attributes": {
"Name": "Flood zone",
"BarrierType": 0
}
},
{
"geometry": {
"rings": [
[
[-97.0803,32.8235],
[-97.0776,32.8277],
[-97.074,32.8254],
[-97.0767,32.8227],
[-97.0803,32.8235]
],
[
[-97.0871,32.8311],
[-97.0831,32.8292],
[-97.0853,32.8259],
[-97.0892,32.8279],
[-97.0871,32.8311]
]
]
},
"attributes": {
"Name": "Severe weather zone",
"BarrierType": 1,
"ScaledTimeFactor": 3
}
}
]
}
Ejemplo 2: especificar una barrera de polígono utilizando una URL
La dirección URL hace una consulta para algunas entidades desde un servicio de mapas. También es posible especificar una URL que consulte entidades desde un servicio de entidades.
{
"url": "https://machine.domain.com/webadaptor/rest/services/Network/USA/MapServer/7/query?where=1%3D1&returnGeometry=true&f=json"
}
use_hierarchy_in_analysis
Especifique si se usará la jerarquía para buscar las rutas más cortas.
Precaución:
El valor de este parámetro, independientemente de si se basa en el valor predeterminado o se establece explícitamente un valor, se invalida si se cambia travel_mode a cualquier valor distinto de Custom. El valor predeterminado de travel_mode es Driving, por lo que, a menos que cambie travel_mode a un valor diferente, este valor de parámetro se invalidará.
true: usar la jerarquía al viajar entre paradas. Cuando se usa una jerarquía, el servicio da preferencia a las calles de orden superior (como las autovías) frente a las de orden inferior (como las carreteras locales), y se puede usar para simular la preferencia del conductor de viajar por autovías en lugar de carreteras locales, aunque suponga un viaje más largo. Esto se da especialmente al buscar rutas hasta ubicaciones lejanas, porque los conductores que realizan viajes de larga distancia prefieren viajar por autovías y así evitar paradas, intersecciones y giros. Desde el punto de vista del cómputo, usar la jerarquía es más rápido, especialmente en rutas de larga distancia, porque el servicio puede determinar la ruta mejor en un subconjunto de calles relativamente más pequeño.
-
false: no usar la jerarquía al viajar entre paradas. Si no se utiliza la jerarquía, el servicio tiene en cuenta todas las calles y no da preferencia a las calles de mayor orden al buscar una ruta. A menudo esto se usa al buscar rutas a corta distancia dentro de una ciudad.
The default value for this parameter is true.
restrictions
Utilice este parámetro para especificar las restricciones que cumplirá el servicio. 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 o rutas, pero también pueden hacer que se eviten o se les dé preferencia. Por ejemplo, utilizar la restricción Avoid Toll Roads dará como resultado una ruta que incluirá las carreteras de peaje solo si se requiere viajar por ellas para llegar a una parada. Utilice Height Restriction para trazar una ruta evitando cualquier lugar con una distancia al suelo que sea inferior a la altura del vehículo. Si el vehículo transporta materiales peligrosos, puede utilizar la restricción Any Hazmat Prohibited para impedir que los materiales se transporten por carreteras donde sea ilegal hacerlo.
Precaución:
El valor de este parámetro, independientemente de si se basa en el valor predeterminado o se establece explícitamente un valor, se invalida si se entrega en travel_mode.
Este valor de parámetro se especifica como una lista de nombres de restricción separados por comas. El valor none indica que no se utilizarán restricciones para buscar las rutas más cortas.
El servicio admite los siguientes nombres de restricción:
Prohibidos todos los materiales peligrosos: los resultados no incluirán las carreteras en las que esté prohibido el transporte de cualquier tipo de material peligroso.
Evitar carreteras VAO: el resultado evitará las carreteras designadas exclusivamente para los vehículos compartidos.
Evitar carriles rápidos: los resultados evitarán las carreteras diseñadas como carriles rápidos.
Evitar transbordadores: los resultados evitarán los transbordadores.
Evitar puertas: los resultados evitarán las carreteras en las que haya puertas, como los accesos con clave o las entradas controladas por guardas.
Evitar carreteras con acceso limitado: los resultados evitarán las carreteras que sean de acceso limitado.
Evitar carreteras privadas: los resultados evitarán las carreteras que no sean de propiedad pública y no se mantengan con recursos públicos.
Evitar las carreteras no aptas para peatones: los resultados evitarán las carreteras que no sean aptas para peatones.
Evitar tramos de escalera: los resultados evitarán todos los tramos de escalera de una ruta adecuada para peatones.
Evitar carreteras de peaje: los resultados evitarán todas las carreteras de peaje para automóviles.
Evitar carreteras de peaje para camiones: los resultados evitarán todas las carreteras de peaje para camiones.
Evitar carreteras con restricciones para camiones: los resultados evitarán las carreteras donde no estén permitidos los camiones excepto para hacer entregas.
Evitar carreteras sin pavimentar: los resultados evitarán las carreteras que no estén pavimentadas (de tierra, de gravilla, etc.).
Restricción de número de ejes: los resultados no incluirán carreteras en las que los camiones con el número especificado de ejes estén prohibidos. El número de ejes se puede especificar mediante el parámetro de restricción Número de ejes.
Conduciendo autobús: los resultados no incluirán carreteras en las que estén prohibidos los autobuses. Usar esta restricción también garantizará que los resultados respetarán las calles con sentido único.
Conduciendo taxi: los resultados no incluirán carreteras en las que estén prohibidos los taxis. Usar esta restricción también garantizará que los resultados respetarán las calles con sentido único.
Conduciendo camión: los resultados no incluirán carreteras en las que estén prohibidos los camiones. Usar esta restricción también garantizará que los resultados respetarán las calles con sentido único.
Conduciendo automóvil: los resultados no incluirán carreteras en las que estén prohibidos los automóviles. Usar esta restricción también garantizará que los resultados respetarán las calles con sentido único.
Conduciendo vehículo de emergencia: los resultados no incluirán carreteras en las que estén prohibidos los vehículos de emergencia. Usar esta restricción también garantizará que los resultados respetarán las calles con sentido único.
Restricción de altura: los resultados no incluirán las carreteras en las que la altura del vehículo supere la altura máxima permitida para la carretera. La altura del vehículo se puede especificar usando el parámetro de restricción Altura del vehículo (metros).
Restricción de longitud de eje de dirección a eje trasero: los resultados no incluirán las carreteras en las que la longitud del vehículo supere la distancia máxima permitida entre el eje de dirección y el eje trasero para la carretera. La longitud entre el eje de dirección y el eje trasero se puede especificar usando el parámetro de restricción Longitud de eje de dirección a eje trasero del vehículo (metros).
Restricción de longitud: los resultados no incluirán las carreteras en las que la longitud del vehículo supere la longitud máxima permitida para la carretera. La longitud del vehículo se puede especificar usando el parámetro de restricción Longitud del vehículo (metros).
Preferido para peatones: los resultados utilizarán rutas preferidas adecuadas para la navegación para peatones.
En moto: los resultados no incluirán carreteras en las que estén prohibidas las motocicletas. Usar esta restricción también garantizará que los resultados respetarán las calles con sentido único.
Prohibidas las carreteras en obras: los resultados no incluirán carreteras que estén en obras.
Prohibidos los camiones o tractores con uno o varios remolques: los resultados no incluirán las carreteras en las que estén prohibidos los camiones o tractores con uno o varios remolques.
Prohibidos los vehículos de un solo eje: los resultados no incluirán carreteras en las que los vehículos de un solo eje estén prohibidos.
Prohibidos los vehículos de doble eje: los resultados no incluirán carreteras en las que los vehículos de doble eje estén prohibidos.
Prohibido el tráfico de paso: los resultados no incluyen las carreteras donde no se permita el tráfico de paso (tráfico no local).
Restricción de camiones con remolques: los resultados no incluirán carreteras en las que los camiones con el número especificado de remolques estén prohibidos. El número de remolques del camión se puede especificar mediante el parámetro de restricción Número de remolques del camión.
Usar rutas preferidas para materiales peligrosos: los resultados darán prioridad a las carreteras designadas para el transporte de materiales peligrosos.
Usar rutas preferidas para camiones: los resultados darán prioridad a las carreteras que se hayan diseñado como rutas para camiones, como las que forman parte de la red nacional descrita en la National Surface Transportation Assistance Act de Estados Unidos, las carreteras que se hayan diseñado como rutas de camiones en un estado o una provincia, o aquellas que prefieran los camioneros cuando conducen por un área.
A pie: los resultados no incluirán carreteras en las que estén prohibidos los peatones.
Restricción de peso: los resultados no incluirán las carreteras en las que el peso del vehículo supere el peso máximo permitido para la carretera. El peso del vehículo se puede especificar usando el parámetro de restricción Peso del vehículo (kilogramos).
Restricción de peso por eje: los resultados no incluirán las carreteras en las que el peso del vehículo por eje supere el peso máximo permitido por eje para la carretera. El peso por eje del vehículo se puede especificar usando el parámetro de restricción Peso por eje del vehículo (kilogramos).
Restricción de ancho: los resultados no incluirán las carreteras en las que el ancho del vehículo supere el ancho máximo permitido para la carretera. El ancho del vehículo se puede especificar usando el parámetro de restricción Ancho del vehículo (metros).
Nota:
Estos valores son específicos de los servicios publicados con los datos de ArcGIS StreetMap Premium. Los valores serán diferentes si utiliza otros datos para el análisis.
Heredado:
El atributo de restricción Driving a Delivery Vehicle ya no está disponible. El servicio ignorará esta restricción, puesto que no es válida. Para obtener unos resultados similares, use el atributo de restricción Driving a Truck junto con el atributo de restricción Avoid Truck Restricted Roads.
El valor del parámetro de restricciones se especifica como una lista de nombres de restricción. Un valor de null indica que no se deben utilizar restricciones para buscar la ruta mejor, sino solo si travel_mode tiene el valor Custom.
Example for restrictions
restrictions=[Driving a Truck, Height Restriction, Length Restriction]
attribute_parameter_values
Utilice este parámetro para especificar valores adicionales requeridos por un atributo o restricción, como por ejemplo para especificar si la restricción prohíbe, evita o prefiere circular en carreteras restringidas. 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é preferencia.
Precaución:
El valor de este parámetro, independientemente de si se basa en el valor predeterminado o se establece explícitamente un valor, se invalida si se entrega en el parámetro travel_mode.
Puede especificar el parámetro attribute_parameter_values con una estructura JSON que represente a un conjunto de entidades. La estructura JSON puede incluir estas propiedades:
features: especifique una matriz de entidades.
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
Sugerencia:
Se recomienda especificar explícitamente el valor de spatialReference y especificarlo para todo el JSON en lugar de para cada geometría individual.
- attributes: especifique cada atributo como un par de clave-valor donde la clave es el nombre de un campo dado y el valor es el valor de atributo del campo correspondiente.
- geometry: especifique la geometría de punto de entrada que contenga las propiedades x y y junto con la propiedad spatialReference. Si la propiedad spatialReference se define para todo el JSON, no es necesario que defina esta propiedad para cada geometría. Al hacerlo, se reduce el tamaño del JSON de entrada si la entrada tiene muchas entidades y también mejora el rendimiento. Esta propiedad no es necesaria si las coordenadas están en la referencia espacial predeterminada, WGS84. Si las coordenadas están en una referencia espacial diferente, debe especificar el Id. conocido de la referencia espacial (WKID). Consulte Utilizar referencias espaciales para buscar valores de WKID.
url: especifique una solicitud de consulta REST para cualquier entidad, mapa o servicio de geoprocesamiento de ArcGIS Server que devuelva un conjunto de entidades JSON.
Cada entidad de la matriz de entidades representa un parámetro de atributos y contiene estos campos:
- attributes: especifique cada atributo como un par de clave-valor donde la clave es el nombre de un campo dado y el valor es el valor de atributo del campo correspondiente.
Nota:
La estructura JSON del parámetro attribute_parameter_values no tiene ninguna propiedad geometry.
Attributes for attribute_parameter_values
El parámetro attribute_parameter_values se puede especificar con los siguientes atributos:
- AttributeName: el nombre de la restricción.
- ParameterName: el nombre del parámetro asociado con la restricción. Una restricción puede tener uno o más valores de ParameterName según su uso previsto, lo que implica que pueden necesitarse varios parámetros attribute_parameter_values para un único nombre de atributo.
- ParameterValue: el valor de ParameterName utilizado por el servicio al evaluar la restricción.
Nota:
En la mayoría de los casos, el parámetro attribute_parameter_values depende del parámetro restrictions. El ParameterValue especificado como parte de attribute_parameter_values es aplicable solo si el nombre de la restricción se especifica como valor del parámetro restrictions.
Si se especifica el parámetro attribute_parameter_values, cada restricción (mostrada como AttributeName) tiene un valor ParameterName, Restriction Usage, 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.
The Restriction Usage value for ParameterName can be any of the following string values or their equivalent numeric values listed within the parentheses:
- Prohibited (-1): está prohibido viajar por las carreteras que presenten esta restricción.
- Avoid_High (5): es muy improbable que el servicio incluya en la ruta las carreteras asociadas a esta restricción.
- Avoid_Medium (2): es improbable que el servicio incluya en la ruta las carreteras asociadas a esta restricción.
- Avoid_Low (1.3): es algo improbable que el servicio incluya en la ruta las carreteras asociadas a esta restricción.
- Prefer_Low (0.8): es algo probable que el servicio incluya en la ruta las carreteras asociadas a esta restricción.
- Prefer_Medium (0.5): es probable que el servicio incluya en la ruta las carreteras asociadas a esta restricción.
- Prefer_High (0.2): es muy probable que el servicio incluya en la ruta las carreteras asociadas a esta restricción.
En la siguiente tabla, se enumeran los nombres de restricción y los valores de los parámetros de restricción predeterminados para todas las restricciones. El valor predeterminado del parámetro attribute_parameter_values es la estructura JSON que contiene todas las filas de la tabla siguiente.
Sugerencia:
Si desea utilizar el valor predeterminado para cualquier restricción, AttributeName, ParameterName y ParameterValue no tienen que especificarse como parte del parámetro attribute_parameter_values.
Nombre de restricción | Nombre del parámetro de restricción | Valor predeterminado del parámetro de restricción |
---|---|---|
Prohibido cualquier material peligroso | Uso con restricciones | Prohibido |
Evitar carreteras VAO | Uso con restricciones | Prohibido |
Evitar carriles rápidos | Uso con restricciones | Prohibido |
Evitar ferries | Uso con restricciones | Avoid_Medium |
Evitar barreras | Uso con restricciones | Avoid_Medium |
Evitar carreteras de acceso limitado | Uso con restricciones | Avoid_Medium |
Evitar carreteras privadas | Uso con restricciones | Avoid_Medium |
Evitar las carreteras no aptas para peatones | Uso con restricciones | Avoid_High |
Evitar tramos de escalera | Uso con restricciones | Avoid_High |
Evitar carreteras de peaje | Uso con restricciones | Avoid_Medium |
Evitar carreteras de peaje para camiones | Uso con restricciones | Avoid_Medium |
Evitar carreteras con restricciones para camiones | Uso con restricciones | Avoid_High |
Evitar carreteras sin pavimentar | Uso con restricciones | Avoid_High |
Restricción de número de ejes | Número de ejes | 0 |
Uso con restricciones | Prohibido | |
Conducción de un autobús | Uso con restricciones | Prohibido |
Conducción de un taxi | Uso con restricciones | Prohibido |
Conducción de un camión | Uso con restricciones | Prohibido |
Conducción de un automóvil | Uso con restricciones | Prohibido |
Conducción de un vehículo de emergencia | Uso con restricciones | Prohibido |
Restricción de altura | Uso con restricciones | Prohibido |
Altura del vehículo (metros) | 0 | |
Restricción de longitud de eje de dirección a eje trasero | Uso con restricciones | Prohibido |
Longitud entre el bulón de arrastre y el eje trasero del vehículo (metros) | 0 | |
Restricción de longitud | Uso con restricciones | Prohibido |
Longitud del vehículo (metros) | 0 | |
Preferido para peatones | Uso con restricciones | Prefer_Low |
Conducción de una motocicleta | Uso con restricciones | Prohibido |
Carreteras en obras prohibidas | Uso con restricciones | Prohibido |
Prohibidos los camiones o tractores con uno o varios remolques | Uso con restricciones | Prohibido |
Prohibidos los vehículos con un solo eje | Uso con restricciones | Prohibido |
Prohibidos los vehículos con eje en tándem | Uso con restricciones | Prohibido |
Prohibido el tráfico de paso | Uso con restricciones | Avoid_High |
Restricción de camiones con remolques | Uso con restricciones | Prohibido |
Número de remolques del camión | 0 | |
Usar rutas preferidas para materiales peligrosos | Uso con restricciones | Prefer_Medium |
Usar rutas preferidas para camiones | Uso con restricciones | Prefer_High |
Caminata | Uso con restricciones | Prohibido |
WalkTime | Velocidad a pie (km/h) | 5 |
Restricción de peso | Uso con restricciones | Prohibido |
Peso del vehículo (kilogramos) | 0 | |
Restricción de peso por eje | Uso con restricciones | Prohibido |
Peso del vehículo por eje (kilogramos) | 0 | |
Restricción de ancho | Uso con restricciones | Prohibido |
Anchura del vehículo (metros) | 0 |
Nota:
Estos valores son específicos de los servicios publicados con los datos de ArcGIS StreetMap Premium. Los valores serán diferentes si utiliza otros datos para el análisis.
Syntax example for attribute_parameter_values
{
"features": [
{
"attributes": {
"<field1>": <value11>,
"<field2>": <value12>,
"<field3>": <value13>
}
},
{
"attributes": {
"<field1>": <value21>,
"<field2>": <value22>,
"<field3>": <value13>
}
}
]
}
Examples for attribute_parameter_values
En este ejemplo, se muestra cómo especificar la altura y el peso del vehículo para utilizarlo con las restricciones de altura y peso respectivamente, junto con una preferencia alta por la inclusión de rutas designadas para camiones. Da como resultado una ruta que no contiene ninguna carretera en la que la distancia al suelo bajo pasos elevados o túneles sea menor que la altura del vehículo. Los resultados tampoco incluirán ninguna carretera con puentes limitados o carreteras locales que prohíban los vehículos pesados si el peso del vehículo supera el peso máximo permitido. Sin embargo, la ruta incluirá la mayor cantidad de carreteras posible que estén designadas como rutas preferidas para camiones. Recuerde que no se especifica el Restriction Usage ParameterName para las restricciones de Height Restriction y Weight Restriction dado que deseamos usar el valor predeterminado de PROHIBITED para estos parámetros de restricción.attribute_parameter_values=
{
"features": [
{
"attributes": {
"AttributeName": "Height Restriction",
"ParameterName": "Vehicle Height (meters)",
"ParameterValue": 4.12
}
},
{
"attributes": {
"AttributeName": "Weight Restriction",
"ParameterName": "Vehicle Weight (kilograms)",
"ParameterValue": 36287
}
},
{
"attributes": {
"AttributeName": "Use Preferred Truck Routes",
"ParameterName": "Restriction Usage",
"ParameterValue": "PREFER_HIGH"
}
}
]
}
populate_route_lines
Utilice este parámetro para especificar la forma de las rutas de salida.
- True: las rutas de salida tendrán exactamente la misma forma que las calles subyacentes que se incluyan en las rutas.
- False: no se genera ninguna forma para las rutas de salida. Usted no será capaz de generar indicaciones de conducción si el parámetro populate_route_lines tiene el valor false. Use esta opción si solo le interesa determinar la asignación y la secuencia de órdenes a las rutas y no desea que las formas de las rutas sigan las calles ni generen indicaciones de conducción. Utilice esta opción para reducir el tiempo empleado por el servicio para resolver el problema de generación de rutas para vehículos, ya que el servicio tiene que realizar relativamente menos cómputo.
El valor predeterminado es true.
route_line_simplification_tolerance
Utilice este parámetro para especificar en qué medida desea simplificar la geometría de las rutas devueltas por el servicio.
Precaución:
El valor de este parámetro, independientemente de si se basa en el valor predeterminado o establecido explícitamente un valor, se utiliza en el análisis solo si el parámetro travel_mode tiene el valor Custom.
Este parámetro solo es relevante si route_shape tiene el valor Forma verdadera o Forma verdadera con medidas porque las otras opciones de route_shape no se pueden simplificar más.
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. Con ello se reduce el tamaño global de la respuesta y también se mejora el rendimiento a la hora de dibujar las formas de las rutas en las aplicaciones.
El parámetro se especifica como una estructura JSON que contiene las siguientes propiedades:
- distance: el valor de distancia de simplificación.
- units: las unidades del valor de distancia de simplificación. El valor de la propiedad debe especificarse como uno de los siguientes valores: esriCentimeters, esriDecimalDegrees, esriDecimeters, esriFeet, esriInches, esriKilometers, esriMeters, esriMiles, esriMillimeters, esriNauticalMiles, esriPoints y esriYards.
El valor predeterminado del parámetro route_line_simplification_tolerance es de 10 metros.
Syntax example for route_line_simplification_tolerance
{
"distance": <value>,
"units": "<unit>"
}
Examples for route_line_simplification_tolerance
{
"distance": 10,
"units": "esriMeters"
}
populate_directions
Utilice este parámetro para especificar si el servicio debe generar indicaciones de conducción para cada ruta.
true: generar indicaciones. Las indicaciones se configuran en función de los valores de los parámetros directions_language, directions_style_name y directions_distance_units.
-
false: no generar indicaciones. El servicio devuelve un valor vacío para la propiedad features en el parámetro de salida output_directions.
directions_language
El idioma que se utilizará para generar las indicaciones de viaje.
This parameter applies only when the populate_directions parameter is set to true. The service supports generating directions in the following languages:
- ar: árabe
- bg: búlgaro
- bs: bosnio
- ca: catalán
- cs: checo
- da: danés
- de: alemán
- el: griego
- en: inglés
- es: español
- et: estonio
- fi: finés
- fr: francés
- he: hebreo
- hr: croata
- hu: húngaro
- id: indonesio
- it: italiano
- ja: japonés
- ko: coreano
- lt: lituano
- lv: letón
- nb: noruego
- nl: neerlandés
- pl: polaco
- pt-BR: portugués (Brasil)
- pt-PT: portugués (Portugal)
- ro: rumano
- ru: ruso
- sk: eslovaco
- sl: esloveno
- sr: serbio
- sv: sueco
- th: tailandés
- tr: turco
- uk: ucraniano
- vi: vietnamita
- zh-CN: chino (China)
- zh-HK: chino (Hong Kong)
- zh-TW: chino (Taiwán)
El servicio intenta buscar una coincidencia exacta del idioma especificado, incluida cualquier localización de idioma. Si no se encuentra ninguna coincidencia exacta, intenta hacer una coincidencia con la familia lingüística. Si no se encuentra ninguna coincidencia, el servicio devuelve las indicaciones en el idioma predeterminado del sistema operativo del servidor. Por ejemplo, si el idioma de las indicaciones se especifica como es-MX (español de México), el servicio generará las indicaciones en español, puesto que admite el código de idioma es, no es-MX.
Precaución:
Si un idioma admite la localización, como el portugués brasileño (pt-BR) y el portugués europeo (pt-PT), especifique la familia lingüística y la localización. Si solo especifica la familia lingüística, el servicio no hará coincidir dicha familia y devolverá las indicaciones en el idioma predeterminado del sistema operativo del servidor. Por ejemplo, si el idioma de las indicaciones se especifica como pt, el servicio generará las indicaciones en el idioma predeterminado del sistema operativo del servidor porque no puede determinar si se deben generar en pt-BR o pt-PT.
directions_style_name
Especifique el nombre del estilo de formato de las indicaciones. Este parámetro se puede especificar mediante estos valores:
- NA Desktop: genera indicaciones paso a paso adecuadas para imprimir.
- NA Navigation: genera indicaciones paso a paso diseñadas para un dispositivo de navegación desde el vehículo.
- NA Campus: genera indicaciones paso a paso a pie, diseñadas para rutas de peatones.
El valor predeterminado es NA Desktop.
This parameter applies only when the populate_directions parameter is set to true.
save_route_data
Use este parámetro para especificar si el servicio debe crear un archivo comprimido que contiene una geodatabase de archivos que alberga las entradas y las salidas del análisis en un formato que se puede usar para compartir las capas de ruta con su portal.
- true: guarda los datos de rutas. El archivo comprimido de datos de rutas se puede descargar desde la dirección URL proporcionada como parte del parámetro output_route_data.
- false: no guarda los datos de rutas.
El valor predeterminado es false.
save_output_network_analysis_layer
Use este parámetro para especificar si el servicio debe guardar la configuración del análisis como un archivo de capa de análisis de red. No es posible trabajar directamente con este archivo, aunque lo abra en una aplicación de ArcGIS Desktop como ArcGIS Pro. Se debe enviar al Soporte técnico de Esri para diagnosticar la calidad de los resultados devueltos por el servicio.
- true: guarda el archivo de capas de análisis de red. El archivo se puede descargar desde la dirección URL proporcionada como parte del parámetro output_network_analysis_layer.
- false: no guarda el archivo de capas de análisis de red.
El valor predeterminado es false.
time_impedance
El valor de impedancia basada en el tiempo representa el tiempo de viaje a lo largo de segmentos de carretera o en otras partes de la red de transporte.
- Minutes
- TravelTime
- WalkTime
- TruckMinutes
- TruckTravelTime
Nota:
Since the fleet routing service only supports time-based impedance, the value for the time_impedance and impedance parameters must be identical. Otherwise, the service will return an error.Nota:
Si la impedancia del modo de viaje, según se especifica con el parámetro impedance, está basada en el tiempo, los valores de los parámetros time_impedance e impedance deben ser los mismos. De lo contrario, el servicio devolverá un error.Nota:
Este parámetro se usa para definir un modo de viaje personalizado. El valor de este parámetro se ignora si el parámetro travel_mode no está definido como Custom.
Nota:
Estos valores son específicos de los servicios publicados con los datos de ArcGIS StreetMap Premium. Los valores serán diferentes si utiliza otros datos para el análisis.
distance_impedance
El valor de impedancia basada en la distancia representa la distancia de viaje a lo largo de segmentos de carretera o en otras partes de la red de transporte.
- Miles
- Kilometers
Nota:
Si la impedancia del modo de viaje, según se especifica con el parámetro impedance, está basada en la distancia, los valores de los parámetros distance_impedance e impedance deben ser los mismos. De lo contrario, el servicio devolverá un error.Nota:
Este parámetro se usa para definir un modo de viaje personalizado. El valor de este parámetro se ignora si el parámetro travel_mode no está definido como Custom.
Nota:
Estos valores son específicos de los servicios publicados con los datos de ArcGIS StreetMap Premium. Los valores serán diferentes si utiliza otros datos para el análisis.
populate_stop_shapes
Especifica si la herramienta creará las formas de las paradas asignadas y sin asignar de salida.
True: las paradas asignadas y sin asignar de salida se crean como entidades de puntos. Puede resultar útil para visualizar qué paradas se asignan a rutas y cuáles no se pueden asignar a ninguna ruta.
False: las paradas asignadas y sin asignar de salida se crean como tablas y no tendrán formas. Use esta opción únicamente si no es necesario que su aplicación visualice las paradas de salida y puede funcionar solo con los atributos de las paradas.
El valor predeterminado es False.
output_format
Especifica el formato en el que se devolverán las entidades de salida.
- Conjunto de entidades: las entidades de salida se generarán como tablas y clases de entidad. Esta es la opción predeterminada.
- Archivo JSON: las entidades de salida se devolverán como un archivo comprimido que contiene la representación JSON de las salidas. Si se especifica esta opción, la salida será un archivo único (con una extensión .zip) que contiene uno o varios archivos JSON (con una extensión .json) para cada una de las salidas que crea el servicio.
- Archivo GeoJSON: las entidades de salida se devolverán como un archivo comprimido que contiene la representación GeoJSON de las salidas. Si se especifica esta opción, la salida será un archivo único (con una extensión .zip) que contiene uno o varios archivos GeoJSON (con una extensión .geojson) para cada una de las salidas que crea el servicio.
Sugerencia:
Specifying file based output format, such asJSON File, is useful when you are calling the service using the REST endpoint of the service. In such cases, returning all the outputs as a single file allows you to download large results that can be generated by the service. For example, if you are working with GenerateOriginDestinationCostMatrix service and you generate a travel matrix with 1,000,000 records, returning such a large output as a Feature Set can cause the service to fail since the service will try to send the entire output in a single attempt. With a file based output, the service sends the output in multiple chunks reducing the possibility of timeouts when returning the outputs.
ignore_invalid_order_locations
Especifica si las órdenes no válidas se deben ignorar al resolver el problema de generación de rutas para vehículos.
- true: la operación de resolución ignorará cualquier orden no válida y devolverá una solución, siempre y cuando no se encuentren otros errores. Si necesita generar rutas y enviarlas de inmediato a los conductores, puede ignorar las órdenes no válidas, resolverlas y distribuir las rutas a los conductores. A continuación, resuelva las órdenes no válidas desde la última resolución e inclúyalas en el análisis de generación de rutas para flotas para el siguiente día laborable o turno de trabajo.
- false: la operación de resolución fallará si se encuentran órdenes no válidas. Una orden no válida es una orden que el solucionador de generación de rutas para flotas no puede completar. Es posible que no se pueda completar una orden por diversos motivos, entre otros: se encuentra en un elemento de red prohibido, no se encuentra en la red o se encuentra en una parte desconectada de la red.
El valor predeterminado es false.
ignore_network_location_fields
Especifica si los campos de ubicación de red se tendrán en cuenta al localizar entradas como paradas o instalaciones en la red.
- true: los campos de ubicación de red no se tendrán en cuenta al localizar las entradas en la red. En su lugar, las entradas siempre se localizarán realizando una búsqueda espacial.
- false: los campos de ubicación de red se tendrán en cuenta al localizar las entradas en la red.
El valor predeterminado es false.
overrides
Nota:
Este parámetro es solo para uso interno.
env:outSR
Utilice este parámetro para especificar la referencia espacial de las geometrías, como entidades de líneas o puntos, que devuelve un servicio.
El valor del parámetro se puede especificar como un Id. conocido (WKID) para la referencia espacial. Consulte Utilizar referencias espaciales para buscar valores de WKID.
Muchos de los mapas base proporcionados por ArcGIS Online están en la referencia espacial Web Mercator (WKID 102100). Al especificar env:outSR=102100 se devuelven las geometrías de la referencia espacial Web Mercator, que se pueden dibujar sobre los mapas base.
locate_settings
Use este parámetro para especificar configuraciones que afecten a cómo se ubican las entradas, como la máxima distancia de búsqueda que se usa al localizar las entradas en la red, o las fuentes de red que se usan para localizar. Para restringir la ubicación en una parte del origen, puede especificar una cláusula WHERE para un origen.
Más información sobre la localización de entradas
El valor de parámetro se especifica como un objeto JSON. El objeto JSON le permite especificar un JSON de localizador para todas las entidades de entrada en el análisis o puede especificar una excepción para una entrada concreta. La excepción le permite tener diferentes ajustes para cada entrada de análisis. Por ejemplo, es posible no permitir que las paradas se ubiquen en las rampas de autopista y permitir que las barreras de punto se ubiquen en las rampas de autopista.
Nota:
El valor predeterminado de este parámetro se puede obtener desde el recurso de servicio JSON. Incorpore ?token=<yourToken>&f=pjson a la URL de servicio para acceder al recurso de servicio JSON.
El objeto JSON del localizador tiene las siguientes propiedades:
- tolerance y toleranceUnits: permite controlar la distancia máxima de búsqueda al localizar las entradas. Si no se encuentra ninguna ubicación de red válida dentro de esta distancia, la entidad de entrada se considerará no ubicada. Una pequeña tolerancia de búsqueda disminuye la probabilidad de ubicarse en la calle equivocada, pero aumenta la probabilidad de no encontrar ninguna ubicación de red válida. El valor del parámetro toleranceUnits se puede especificar como uno de los siguientes valores:
- esriCentimeters
- esriDecimalDegrees
- esriDecimeters
- esriFeet
- esriInches
- esriIntFeet
- esriIntInches
- esriIntMiles
- esriIntNauticalMiles
- esriIntYards
- esriKilometers
- esriMeters
- esriMiles
- esriMillimeters
- esriNauticalMiles
- esriYards
- sources: le permite controlar qué fuente de red se puede utilizar para la ubicación. Por ejemplo, puede configurar el análisis para localizar entradas en calles, pero no en aceras. La lista de posibles fuentes en las que localizar es específica del dataset de red al que hace referencia este servicio. Solo se usan para ubicar las fuentes que estén presentes en la matriz de fuentes. Es posible especificar una cláusula where en cada fuente especificada en la matriz de fuentes para restringir aún más la localización en ese origen que coincida con ciertas características mediante una expresión SQL. Por ejemplo, puede configurar el análisis para que localice las entradas solo en las entidades de calles que coincidan con determinadas clases de carreteras, como evitar las rampas de las autopistas. Las fuentes se especifican como una matriz de objetos, cada uno con las siguientes propiedades:
- name: nombre de la clase de entidad de la fuente de red que se puede usar para ubicar entradas.
- where: una expresión SQL en la clase de entidad de fuente de red.
- allowAutoRelocate: permite controlar si las entradas con campos de ubicación de red existentes se pueden reubicar automáticamente al solucionar para garantizar que se disponga de campos de ubicación enrutables y válidos para el análisis. Si el valor es true, los puntos ubicados en elementos de red restringidos y los puntos afectados por las barreras se reubicarán en la ubicación enrutable más cercana. Si el valor es false, los campos de ubicación de red se utilizarán como están, aunque los puntos no sean accesibles, y esto puede hacer que la resolución falle. Aunque el valor sea false, las entradas sin campos de ubicación o campos de ubicación incompletos se localizarán durante la operación de resolución.
Syntax for locate_settings
Sintaxis para especificar locate_settings utilizando una estructura JSON.
Nota:
Ni las barreras de línea ni las barreras de polígono son compatibles con las propiedades tolerance y toleranceUnits.
{
"default": {
"tolerance": <value>,
"toleranceUnits": "<unit>",
"allowAutoRelocate": true | false,
"sources": [{
"name": "<sourceName>",
"where": "<whereClause>"
}]
},
"overrides": {
"orders": {
"tolerance": <value>,
"toleranceUnits": "<unit>",
"allowAutoRelocate": true | false,
"sources": [{
"name": "<sourceName>",
"where": "<whereClause>"
}]
},
"depots": {
"tolerance": <value>,
"toleranceUnits": "<unit>",
"allowAutoRelocate": true | false,
"sources": [{
"name": "<sourceName>",
"where": "<whereClause>"
}]
},
"point_barriers": {
"tolerance": <value>,
"toleranceUnits": "<unit>",
"allowAutoRelocate": true | false,
"sources": [{
"name": "<sourceName>",
"where": "<whereClause>"
}]
},
"line_barriers": {
"allowAutoRelocate": true | false,
"sources": [{
"name": "<sourceName>",
"where": "<whereClause>"
}]
},
"polygon_barriers": {
"allowAutoRelocate": true | false,
"sources": [{
"name": "<sourceName>",
"where": "<whereClause>"
}]
}
}
}
Examples for locate_settings
Ejemplo 1: especificar la configuración predeterminada de localización mediante una estructura JSON
En este ejemplo, se muestra cómo especificar la configuración de localización para que las entradas solo se ubiquen a menos de 500 metros de la ubicación especificada. Una pequeña tolerancia de búsqueda como esta puede ser valiosa si está solucionando utilizando un modo de viaje a pie y no desea que las entradas se ubiquen a más de 500 metros de la ubicación del punto original.
{
"default": {
"tolerance": 500,
"toleranceUnits": "esriMeters",
"allowAutoRelocate": true,
"sources": [
{
"name": "Routing_Streets"
}
]
}
}
Ejemplo 2: especificar la configuración de localización predeterminada y las excepciones de la configuración de localización de algunas entradas mediante una estructura JSON
En este ejemplo, se muestra cómo especificar la configuración de localización para evitar que se ubiquen órdenes y depósitos en rampas de autopista. La configuración de localización predeterminada permite la localización en la fuente Routing_Streets. En el caso de las órdenes y los depósitos, se utiliza la opción overrides para especificar una cláusula WHERE para la fuente Routing_Streets y así evitar que se ubiquen en rampas de autopista (un valor de campo ROAD_CLASS igual a 3). Con este JSON locate_settings, ni las órdenes ni los depósitos pueden ubicarse en rampas de autopista, lo que sí puede ocurrir con las barreras ya que utilizan la configuración de localización predeterminada, que no incluye ninguna cláusula where.
{
"default": {
"tolerance": 20,
"toleranceUnits": "esriKilometers",
"allowAutoRelocate": true,
"sources": [{
"name": "Routing_Streets"
}]
},
"overrides": {
"orders": {
"sources": [{
"name": "Routing_Streets",
"where": "ROAD_CLASS <> 3"
}]
},
"depots": {
"sources": [{
"name": "Routing_Streets",
"where": "ROAD_CLASS <> 3"
}]
}
}
}
Ejemplo tres: especificar la configuración de localización predeterminada y las excepciones de la configuración de localización usando una estructura JSON para que las diferentes entradas se localicen utilizando diferentes fuentes.
En este ejemplo, se muestra cómo especificar la configuración de localización predeterminada para localizar entradas en la clase de entidad de origen Routing_Streets y permitir que las barreras de punto se ubiquen solo en la clase de entidad de cruces del sistema (Routing_ND_Junctions).
{
"default": {
"tolerance": 20,
"toleranceUnits": "esriKilometers",
"allowAutoRelocate": true,
"sources": [{
"name": "Routing_Streets"
}]
},
"overrides": {
"point_barriers": {
"sources": [{
"name": "Routing_ND_Junctions"
}]
}
}
}
Output parameters
Upon successful operation, the service returns the solution to the specified vehicle routing problem. The solution is composed of the following output parameters:
Sugerencia:
The geometries for the output parameters are returned by default in the WGS84 (wkid: 4326) spatial reference. You can get the geometries in a different spatial reference using the env:outSR parameter when submitting the request or by using the outSR parameter when retrieving any output parameter.
out_stops
Proporciona información acerca de las paradas realizadas en los depósitos, órdenes y descansos. La información indica cuales rutas hacen las paradas, las horas de llegada y salida y la secuencia de paradas.
Nota:
When the populate_stop_shapes parameter is set to true, the out_stops parameter returns features with geometries. Otherwise, features are returned only with attributes.
El parámetro admite estos campos:
Field | Description |
---|---|
Name | The name of the stop. The value of this field is the same as the Name field from the input orders, depots, or breaks. You can use the StopType field to determine if the Name field value refers to a depot, an order, or a break. |
StopType | Indicates whether the stop represents a depot, an order, or a break. The field value is an integer that can be interpreted in the following ways:
|
PickupQuantities | The amount of cargo or number of people to be picked up from a stop. If multiple dimensions are delivered to a stop, each quantity is separated by a space. The units for the value of this field aren't stored. Interpret the units according to the way you specified the Capacities field on the input routes and the PickupQuantities and DeliveryQuantities fields on the input orders. |
DeliveryQuantities | The amount of cargo or number of people to be delivered to a stop. If multiple dimensions are delivered to a stop, each quantity is separated by a space. The units for the value of this field aren't stored. Interpret the units according to the way you specified the Capacities field on the input routes and the PickupQuantities and DeliveryQuantities fields on the input orders. |
RouteName | The name of the route to which the stop is assigned. |
Sequence | The relative sequence in which the assigned route visits the stops. |
FromPrevTravelTime | The elapsed travel time from the route's previous stop to the current stop. The value is in the units specified by the time_units parameter. |
FromPrevDistance | The distance along the route from the previous stop to the current stop. The value is in the units specified by the distance_units parameter. |
ArriveCurbApproach | Indicates the side of the vehicle the curb is on when arriving at the stop. A value of 1 means the right side of the vehicle; a value of 2 means the left side. |
DepartCurbApproach | Indicates the side of the vehicle the curb is on when departing from the stop. A value of 1 means the right side of the vehicle; a value of 2 means the left side. |
ArriveTime | The time of day the route arrives at the stop. The time of day value for this field is in the time zone in which the stop is located. |
DepartTime | The time of day the route departs from the stop. The time of day value for this field is in the time zone in which the stop is located. |
ArriveTimeUTC | The time of day the route arrives at the stop. This value is in coordinated universal time (UTC). |
DepartTimeUTC | The time of day the route departs from the stop. This value is in coordinated universal time (UTC). |
WaitTime | The wait time or layover at the stop. For example, a wait time is incurred when a route must wait at an order for a time window to open. The value is in the units specified by the time_units parameter. |
ViolationTime | The amount of time elapsed from the end of the stop's time window to the arrival of the route vehicle. The value is in the units specified by the time_units parameter. |
ORIG_FID | The ObjectID of the input order, depot, or break. This field can be used to join attributes from input features. |
Sugerencia:
The RouteName and Sequence attributes can be used to create an ordered list of stops for each route.
Syntax example for out_stops
The out_stops parameter is returned as a JSON feature set with the syntax shown below. Unlike the out_routes parameter, the out_stops parameter does not contain spatialReference or geometryType properties because this parameter does not return any geometry information about the stops.
{
"paramName": "out_stops",
"dataType": "GPRecordSet",
"value": {
"displayFieldName": "",
"fields": [
{
"name": "<field1Name>",
"type": "<field1Type>",
"alias": "<field1Alias>",
"length": "<field1Length>" //length is included only for esriFieldTypeString
},
{
"name": "<field2Name>",
"type": "<field2Type>",
"alias": "<field2Alias>",
"length": "<field2Length>"
}
],
"features": [
{
"attributes": {
"<field1>": <value11>,
"<field2>": <value12>
}
},
{
"attributes": {
"<field1>": <value21>,
"<field2>": <value22>
}
}
],
"exceededTransferLimit": <true|false>
}
}
Example for out_stops
The following is an example of the out_stops parameter.
Nota:
Dado que la respuesta es muy detallada, los elementos repetidos dentro de la respuesta se abrevian para mayor claridad.
{
"paramName": "out_stops",
"dataType": "GPRecordSet",
"value": {
"displayFieldName": "",
"fields": [
{
"name": "ObjectID",
"type": "esriFieldTypeOID",
"alias": "ObjectID"
},
{
"name": "Name",
"type": "esriFieldTypeString",
"alias": "Name",
"length": 128
},
{
"name": "PickupQuantities",
"type": "esriFieldTypeString",
"alias": "PickupQuantities",
"length": 128
},
{
"name": "DeliveryQuantities",
"type": "esriFieldTypeString",
"alias": "DeliveryQuantities",
"length": 128
},
{
"name": "StopType",
"type": "esriFieldTypeSmallInteger",
"alias": "StopType"
},
{
"name": "RouteName",
"type": "esriFieldTypeString",
"alias": "RouteName",
"length": 128
},
{
"name": "Sequence",
"type": "esriFieldTypeInteger",
"alias": "Sequence"
},
{
"name": "FromPrevTravelTime",
"type": "esriFieldTypeDouble",
"alias": "FromPrevTravelTime"
},
{
"name": "FromPrevDistance",
"type": "esriFieldTypeDouble",
"alias": "FromPrevDistance"
},
{
"name": "ArriveCurbApproach",
"type": "esriFieldTypeInteger",
"alias": "ArriveCurbApproach"
},
{
"name": "DepartCurbApproach",
"type": "esriFieldTypeInteger",
"alias": "DepartCurbApproach"
},
{
"name": "ArriveTime",
"type": "esriFieldTypeDate",
"alias": "ArriveTime",
"length": 16
},
{
"name": "DepartTime",
"type": "esriFieldTypeDate",
"alias": "DepartTime",
"length": 16
},
{
"name": "WaitTime",
"type": "esriFieldTypeDouble",
"alias": "WaitTime"
},
{
"name": "ViolationTime",
"type": "esriFieldTypeDouble",
"alias": "ViolationTime"
},
{
"name": "ArriveTimeUTC",
"type": "esriFieldTypeDate",
"alias": "ArriveTimeUTC",
"length": 16
},
{
"name": "DepartTimeUTC",
"type": "esriFieldTypeDate",
"alias": "DepartTimeUTC",
"length": 16
}
],
"features": [
{
"attributes": {
"ObjectID": 1,
"Name": "Store_1",
"PickupQuantities": "",
"DeliveryQuantities": "1706",
"StopType": 0,
"RouteName": "Truck_1",
"Sequence": 3,
"FromPrevTravelTime": 7.952569246292114,
"FromPrevDistance": 2.6272945531949463,
"ArriveCurbApproach": 0,
"DepartCurbApproach": 0,
"ArriveTime": 1355248198164,
"DepartTime": 1355249698164,
"WaitTime": 0,
"ViolationTime": 0,
"ArriveTimeUTC": 1355276998164,
"DepartTimeUTC": 1355278498164
}
},
{
"attributes": {
"ObjectID": 2,
"Name": "Store_2",
"PickupQuantities": "",
"DeliveryQuantities": "1533",
"StopType": 0,
"RouteName": "Truck_2",
"Sequence": 3,
"FromPrevTravelTime": 5.654368394985795,
"FromPrevDistance": 1.5515339440650768,
"ArriveCurbApproach": 0,
"DepartCurbApproach": 0,
"ArriveTime": 1355248059340,
"DepartTime": 1355249439341,
"WaitTime": 0,
"ViolationTime": 0,
"ArriveTimeUTC": 1355276859340,
"DepartTimeUTC": 1355278239341
}
}
],
"exceededTransferLimit": false
}
}
out_routes
Ofrece acceso a los conductores, vehículos y vías de rutas de un análisis de problema de generación de rutas para vehículos.
The populate_route_lines and route_line_simplification_tolerance parameters influence the shape of the output routes.
El parámetro admite estos campos:
Field | Description |
---|---|
Name | The name of the route. The values for this field are copied from the Name field on the input routes. |
ViolatedConstraints | Heredado:This field is deprecated and replaced by the four individual fields ViolatedConstraint_1 through ViolatedConstraint_4 . The descriptions of the violations are listed in the ViolationConstraints_# field below. |
| These fields contain a summary of violated constraints and are set after a solve operation. Each field will contain one violation. If an order has more than one violation, the next ViolatedConstraint_# field will be used. A single violated constraint is shown per field.
|
OrderCount | The number of orders assigned to the route. |
TotalCost | The total operating cost of the route, which is the sum of the following field values: FixedCost, RegularTimeCost, OvertimeCost, and DistanceCost. |
RegularTimeCost | The cost of regular work time, excluding any unpaid breaks. |
OvertimeCost | The cost of overtime work, excluding any unpaid breaks. |
DistanceCost | The distance cost component obtained by multiplying the TotalDistance and CostPerUnitDistance field values. |
TotalTime | The total route duration. This includes travel times as well as service and wait times at orders, depots, and breaks. The TotalTime value is the sum of the following attribute fields:
The value is in the units specified by the time_units parameter. |
TotalOrderServiceTime | The total service time spent at all orders on the route. The value is in the units specified by the time_units parameter. |
TotalBreakServiceTime | The total service time spent at all breaks on the route. The value is in the units specified by the time_units parameter. |
TotalTravelTime | The total travel time for the route. The value is in the units specified by the time_units parameter. |
TotalDistance | The total travel distance for the route. The value is in the units specified by the distance_units parameter. |
StartTime | The starting time of the route. The route may start before the beginning of its start depot's time window, in which case there is a wait time at the starting depot. The time of day value for this attribute is in the time zone in which the starting depot is located. |
EndTime | The ending time of the route. The route ends upon completion of service at the ending depot. The time of day value for this attribute is in the time zone in which the ending depot is located. |
StartTimeUTC | The start time of the route in coordinated universal time (UTC). |
EndTimeUTC | The end time of the route in coordinated universal time (UTC). |
TotalWaitTime | The total wait time at all orders, depots, and breaks on the route. The value is in the units specified by the time_units parameter. |
TotalViolationTime | The total violation time at all orders and breaks on the route. The value is in the units specified by the time_units parameter. |
RenewalCount | For a route with renewals, this is equal to the number of visits to depots for the purpose of renewing a vehicle, that is, loading or unloading a vehicle. |
TotalRenewalServiceTime | For a route with renewals, this is the total service time spent at all renewal visits on the route. The value is in the units specified by the time_units parameter. |
Syntax example for out_routes
The out_routes parameter is returned as a JSON feature set with following syntax:
{
"paramName": "out_Routes",
"dataType": "GPFeatureRecordSetLayer",
"value": {
"displayFieldName": "",
"geometryType": "esriGeometryPolyline",
"spatialReference": {
"wkid": <wkid>,
"latestWkid": <wkid>
},
"fields": [
{
"name": "<field1Name>",
"type": "<field1Type>",
"alias": "<field1Alias>",
"length": "<field1Length>" //length is included only for esriFieldTypeString
},
{
"name": "<field2Name>",
"type": "<field2Type>",
"alias": "<field2Alias>",
"length": "<field2Length>"
}
],
"features": [
{
"geometry": {
"paths": [
[
[<x11>,<y11>],
[<x12>,<y12>]
],
[
[<x21>,<y21>],
[<x22>,<y22>]
]
]
},
"attributes": {
"<field1>": <value11>,
"<field2>": <value12>
}
},
{
"geometry": {
"paths": [
[
[<x11>,<y11>],
[<x12>,<y12>]
],
[
[<x21>,<y21>],
[<x22>,<y22>]
]
]
},
"attributes": {
"<field1>": <value21>,
"<field2>": <value22>
}
}
],
"exceededTransferLimit": <true|false>
}
}
Example for out_routes
The following is an example of the out_routes parameter.
Nota:
Dado que la respuesta es muy detallada, los elementos repetidos dentro de la respuesta se abrevian para mayor claridad.
{
"paramName": "out_routes",
"dataType": "GPFeatureRecordSetLayer",
"value": {
"displayFieldName": "",
"geometryType": "esriGeometryPolyline",
"spatialReference": {
"wkid": 4326,
"latestWkid": 4326
},
"fields": [
{
"name": "ObjectID",
"type": "esriFieldTypeOID",
"alias": "ObjectID"
},
{
"name": "Name",
"type": "esriFieldTypeString",
"alias": "Name",
"length": 128
},
{
"name": "ViolatedConstraints",
"type": "esriFieldTypeInteger",
"alias": "ViolatedConstraints"
},
{
"name": "OrderCount",
"type": "esriFieldTypeInteger",
"alias": "OrderCount"
},
{
"name": "TotalCost",
"type": "esriFieldTypeDouble",
"alias": "TotalCost"
},
{
"name": "RegularTimeCost",
"type": "esriFieldTypeDouble",
"alias": "RegularTimeCost"
},
{
"name": "OvertimeCost",
"type": "esriFieldTypeDouble",
"alias": "OvertimeCost"
},
{
"name": "DistanceCost",
"type": "esriFieldTypeDouble",
"alias": "DistanceCost"
},
{
"name": "TotalTime",
"type": "esriFieldTypeDouble",
"alias": "TotalTime"
},
{
"name": "TotalOrderServiceTime",
"type": "esriFieldTypeDouble",
"alias": "TotalOrderServiceTime"
},
{
"name": "TotalBreakServiceTime",
"type": "esriFieldTypeDouble",
"alias": "TotalBreakServiceTime"
},
{
"name": "TotalTravelTime",
"type": "esriFieldTypeDouble",
"alias": "TotalTravelTime"
},
{
"name": "TotalDistance",
"type": "esriFieldTypeDouble",
"alias": "TotalDistance"
},
{
"name": "StartTime",
"type": "esriFieldTypeDate",
"alias": "StartTime",
"length": 16
},
{
"name": "EndTime",
"type": "esriFieldTypeDate",
"alias": "EndTime",
"length": 16
},
{
"name": "TotalWaitTime",
"type": "esriFieldTypeDouble",
"alias": "TotalWaitTime"
},
{
"name": "TotalViolationTime",
"type": "esriFieldTypeDouble",
"alias": "TotalViolationTime"
},
{
"name": "RenewalCount",
"type": "esriFieldTypeInteger",
"alias": "RenewalCount"
},
{
"name": "TotalRenewalServiceTime",
"type": "esriFieldTypeDouble",
"alias": "TotalRenewalServiceTime"
},
{
"name": "Shape_Length",
"type": "esriFieldTypeDouble",
"alias": "Shape_Length"
}
],
"features": [
{
"attributes": {
"ObjectID": 1,
"Name": "Truck_1",
"ViolatedConstraints": null,
"OrderCount": 2,
"TotalCost": 55.12577115597857,
"RegularTimeCost": 32.368821966275576,
"OvertimeCost": 0,
"DistanceCost": 22.756949189702993,
"TotalTime": 161.84410983137786,
"TotalOrderServiceTime": 49,
"TotalBreakServiceTime": 0,
"TotalTravelTime": 52.844109831377864,
"TotalDistance": 15.171299459801997,
"StartTime": 1355241600000,
"EndTime": 1355251310647,
"TotalWaitTime": 0,
"TotalViolationTime": 0,
"RenewalCount": 0,
"TotalRenewalServiceTime": 0,
"Shape_Length": 0.27770417275136994
},
"geometry": {
"paths": [
[
[-122.39476499860575,37.79623499914595],
[-122.39486000028876,37.79632999992958]
],
[
[-122.46491587646648,37.77469887205535],
[-122.4648300002043,37.77348999976374]
]
]
}
},
{
"attributes": {
"ObjectID": 2,
"Name": "Truck_2",
"ViolatedConstraints": null,
"OrderCount": 2,
"TotalCost": 58.98111973045911,
"RegularTimeCost": 31.262990736961367,
"OvertimeCost": 0,
"DistanceCost": 27.71812899349775,
"TotalTime": 156.31495368480682,
"TotalOrderServiceTime": 43,
"TotalBreakServiceTime": 0,
"TotalTravelTime": 53.314953684806824,
"TotalDistance": 18.478752662331832,
"StartTime": 1355241600000,
"EndTime": 1355250978897,
"TotalWaitTime": 0,
"TotalViolationTime": 0,
"RenewalCount": 0,
"TotalRenewalServiceTime": 0,
"Shape_Length": 0.30798071724323045
},
"geometry": {
"paths": [
[
[-122.39476499860575,37.79623499914595],
[-122.39486000028876,37.79632999992958]
],
[-122.47389692820065,37.74313425554152],
[-122.47462999977466,37.74310000036479]
]
]
}
},
{
"attributes": {
"ObjectID": 3,
"Name": "Truck_3",
"ViolatedConstraints": null,
"OrderCount": 2,
"TotalCost": 59.96986647554318,
"RegularTimeCost": 28.12653774395585,
"OvertimeCost": 0,
"DistanceCost": 31.843328731587327,
"TotalTime": 140.63268871977925,
"TotalOrderServiceTime": 38,
"TotalBreakServiceTime": 0,
"TotalTravelTime": 42.63268871977925,
"TotalDistance": 21.228885821058217,
"StartTime": 1355241600000,
"EndTime": 1355250037961,
"TotalWaitTime": 0,
"TotalViolationTime": 0,
"RenewalCount": 0,
"TotalRenewalServiceTime": 0,
"Shape_Length": 0.3486039472893737
},
"geometry": {
"paths": [
[
[-122.39476499860575,37.79623499914595],
[-122.39486000028876,37.79632999992958]
],
[
[-122.44930025350385,37.731549383197546],
[-122.45112999974964,37.73153999967133]
]
]
}
}
],
"exceededTransferLimit": false
}
}
out_directions
Ofrece acceso a las indicaciones paso a paso para cada ruta resultante.
La siguiente tabla muestra los campos que se devuelven para las indicaciones de salida:
Campo | Descripción |
---|---|
RouteName | El nombre de la ruta a la que se aplica la acción de conducción. Este valor es el mismo que el del campo Name de las rutas de salida. |
ArriveTime | La hora del día para iniciar determinada acción de conducción. Si la ruta abarca varios días, la fecha y hora del día se muestran. |
Type | El tipo de maniobra que representa la entidad de indicaciones o el tipo de texto de las indicaciones. Para determinar si Type hace referencia a un tipo de maniobra o a un tipo de cadena de caracteres de las indicaciones, revise el valor del campo SubItemType. Type se puede utilizar, por ejemplo, para asignar un icono para un texto de indicación en función del tipo de maniobra, o usar un estilo de formato dependiendo del tipo de cadena de caracteres de las indicaciones cuando se visualizan las indicaciones de conducción en la aplicación. El valor Type es un valor entero de las siguientes listas Tipos de maniobra o Tipos de cadena de caracteres de las indicaciones. Tipos de maniobra
Tipos de cadena de caracteres de las indicaciones
|
SubItemType | Especifica si el campo Type hace referencia a un entero de la tabla Tipos de cadena de caracteres de las indicaciones o la tabla Tipos de maniobra.
|
Text | Una descripción de texto de las indicaciones de viaje. |
ElaspsedTime | El tiempo transcurrido en minutos desde el momento en que comienza la actual indicación de conducción hasta que empieza la próxima, o hasta que finaliza la ruta de la última indicación de conducción. |
DriveDistance | La distancia desde donde se produce la actual indicación de conducción a donde ocurre la siguiente, o donde finaliza la ruta para la última indicación de conducción. El valor está en las unidades que se especifican en el parámetro Directions_Distance_Units. Este valor es cero para las indicaciones de conducción que ocurren en la misma ubicación en la que comienza la próxima. Por ejemplo, el valor DriveDistance es 0 para el texto de indicaciones al inicio de la ruta. |
Syntax example for out_directions
The out_directions parameter is returned as a JSON feature set with the following syntax:
Precaución:
When using asynchronous mode, the service can only return a maximum of 200.000 features with the out_directions parameter. The limit is 10.000 features when using synchronous mode. If this limit is exceeded, the exceededTransferLimit property is set to true.
{
"paramName": "out_directions",
"dataType": "GPFeatureRecordSetLayer",
"value": {
"displayFieldName": "",
"geometryType": "esriGeometryPolyline",
"spatialReference": {
"wkid": <wkid>,
"latestWkid": <wkid>,
},
"fields": [
{
"name": "<field1Name>",
"type": "<field1Type>",
"alias": "<field1Alias>",
"length": "<field1Length>" //length is included only for esriFieldTypeString
},
{
"name": "<field2Name>",
"type": "<field2Type>",
"alias": "<field2Alias>",
"length": "<field2Length>"
}
],
"features": [
{
"geometry": {
"paths": [
[
[
<x11>,
<y11>
],
[
<x12>,
<y12>
]
],
[
[
<x21>,
<y21>
],
[
<x22>,
<y22>
]
]
]
},
"attributes": {
"<field1>": <value11>,
"<field2>": <value12>
}
},
{
"geometry": {
"paths": [
[
[
<x11>,
<y11>
],
[
<x12>,
<y12>
]
],
[
[
<x21>,
<y21>
],
[
<x22>,
<y22>
]
]
]
},
"attributes": {
"<field1>": <value21>,
"<field2>": <value22>
}
}
],
"exceededTransferLimit": <true|false>
}
}
Example for out_directions
The following is an example of the out_directions parameter:
Nota:
Dado que la respuesta es muy detallada, los elementos repetidos dentro de la respuesta se abrevian para mayor claridad.
{
"paramName": "out_directions",
"dataType": "GPFeatureRecordSetLayer",
"value": {
"displayFieldName": "",
"geometryType": "esriGeometryPolyline",
"spatialReference": {
"wkid": 4326,
"latestWkid": 4326
},
"fields": [
{
"name": "ObjectID",
"type": "esriFieldTypeOID",
"alias": "ObjectID"
},
{
"name": "RouteName",
"type": "esriFieldTypeString",
"alias": "RouteName",
"length": 128
},
{
"name": "ArriveTime",
"type": "esriFieldTypeDate",
"alias": "ArriveTime",
"length": 16
},
{
"name": "Type",
"type": "esriFieldTypeSmallInteger",
"alias": "Type"
},
{
"name": "SubItemType",
"type": "esriFieldTypeSmallInteger",
"alias": "SubItemType"
},
{
"name": "Text",
"type": "esriFieldTypeString",
"alias": "Text",
"length": 255
},
{
"name": "ElapsedTime",
"type": "esriFieldTypeSingle",
"alias": "ElapsedTime"
},
{
"name": "DriveDistance",
"type": "esriFieldTypeSingle",
"alias": "DriveDistance"
},
{
"name": "Shape_Length",
"type": "esriFieldTypeDouble",
"alias": "Shape_Length"
}
],
"features": [
{
"attributes": {
"ObjectID": 1,
"RouteName": "Truck_1",
"ArriveTime": 1355241600000,
"Type": 18,
"SubItemType": 1,
"Text": "Start at San Francisco",
"ElapsedTime": 60,
"DriveDistance": 0,
"Shape_Length": 0
}
},
{
"attributes": {
"ObjectID": 2,
"RouteName": "Truck_1",
"ArriveTime": 1355241600000,
"Type": 6,
"SubItemType": 2,
"Text": "Time Window: 12/11/2012 4:00 PM - 12/12/2012 1:00 AM",
"ElapsedTime": 60,
"DriveDistance": 0,
"Shape_Length": 0
}
},
{
"attributes": {
"ObjectID": 3,
"RouteName": "Truck_1",
"ArriveTime": 1355241600000,
"Type": 9,
"SubItemType": 2,
"Text": "Service Time: 1 hr ",
"ElapsedTime": 60,
"DriveDistance": 0,
"Shape_Length": 0
}
},
{
"attributes": {
"ObjectID": 4,
"RouteName": "Truck_1",
"ArriveTime": 1355245200000,
"Type": 2,
"SubItemType": 1,
"Text": "Go northwest on THE EMBARCADERO (HERB CAEN WAY)",
"ElapsedTime": 1.015078,
"DriveDistance": 0.2596097,
"Shape_Length": 0.004134325550916659
},
"geometry": {
"paths": [
[
[
-122.39476499860575,
37.79623499914595
],
[
-122.3955800002168,
37.79708999990362
]
]
]
}
},
{
"attributes": {
"ObjectID": 5,
"RouteName": "Truck_1",
"ArriveTime": 1355245260905,
"Type": 5,
"SubItemType": 1,
"Text": "Turn left on BROADWAY",
"ElapsedTime": 3.704131,
"DriveDistance": 0.7392571,
"Shape_Length": 0.013397827315874893
},
"geometry": {
"paths": [
[
[
-122.39755000023229,
37.79928999973373
],
[
-122.39792999976964,
37.799070000380254
]
]
]
}
},
{
"attributes": {
"ObjectID": 14,
"RouteName": "Truck_1",
"ArriveTime": 1355246407621,
"Type": 1,
"SubItemType": 1,
"Text": "Arrive at Store_3, on the left",
"ElapsedTime": 24,
"DriveDistance": 0,
"Shape_Length": 0
}
},
{
"attributes": {
"ObjectID": 15,
"RouteName": "Truck_1",
"ArriveTime": 1355246407621,
"Type": 6,
"SubItemType": 2,
"Text": "Time Window: 12/11/2012 5:00 PM - 12/12/2012 1:00 AM",
"ElapsedTime": 24,
"DriveDistance": 0,
"Shape_Length": 0
}
},
{
"attributes": {
"ObjectID": 16,
"RouteName": "Truck_1",
"ArriveTime": 1355246407621,
"Type": 9,
"SubItemType": 2,
"Text": "Service Time: 24 min",
"ElapsedTime": 24,
"DriveDistance": 0,
"Shape_Length": 0
}
},
{
"attributes": {
"ObjectID": 17,
"RouteName": "Truck_1",
"ArriveTime": 1355247847621,
"Type": 18,
"SubItemType": 1,
"Text": "Depart Store_3",
"ElapsedTime": 0,
"DriveDistance": 0,
"Shape_Length": 0
}
},
{
"attributes": {
"ObjectID": 18,
"RouteName": "Truck_1",
"ArriveTime": 1355247847621,
"Type": 2,
"SubItemType": 1,
"Text": "Continue south on 7TH AVE",
"ElapsedTime": 0.5039461,
"DriveDistance": 0.08350408,
"Shape_Length": 0.001211918705951693
},
"geometry": {
"paths": [
[
[
-122.46491587646648,
37.77469887205535
],
[
-122.4648300002043,
37.77348999976374
]
]
]
}
},
{
"attributes": {
"ObjectID": 19,
"RouteName": "Truck_1",
"ArriveTime": 1355247877858,
"Type": 6,
"SubItemType": 1,
"Text": "Turn right on FULTON ST",
"ElapsedTime": 7.81348,
"DriveDistance": 2.474024,
"Shape_Length": 0.04514114889321549
},
"geometry": {
"paths": [
[
[
-122.4648300002043,
37.77348999976374
],
[
-122.46588000006193,
37.773380000087
]
]
]
}
}
],
"exceededTransferLimit": false
}
}
out_unassigned_stops
Ofrece acceso a las órdenes que ninguna otra ruta pudo visitar. Asimismo, puede determinar la razón por la que las órdenes no se pudieron visitar y realizar los cambios necesarios para corregir el problema.
Nota:
When the populate_stop_shapes parameter is set to true, the out_stops parameter returns features with geometries. Otherwise, features are returned only with attributes.
El parámetro admite estos campos:
Field | Description |
---|---|
StopType | Indicates whether the stop represents a depot, an order, or a break. The field value is an integer that can be interpreted in the following ways:
|
Name | The name of the stop. The value of this field is the same as the Name field from input orders, depots, or breaks. You can use the StopType field to determine whether the Name field value refers to a depot, an order, or a break. |
ViolatedConstraints | Heredado:This field is deprecated and replaced by the four individual fields ViolatedConstraint_1 through ViolatedConstraint_4 . The descriptions of the violations can be seen in ViolationConstraints_#. |
| These fields contain a summary of violated constraints and are set after a solve operation. Each field will contain one violation. If an order has more than one violation, the next ViolatedConstraint_# field will be used. Shows a single violated constraint per field.
|
Status | Indica el estado del punto con respecto a su ubicación en la red y el resultado del análisis. Los posibles valores son los siguientes:
|
Syntax example for out_unassigned_stops
The out_unassigned_stops parameter is returned as a JSON feature set with following syntax.
Unlike the out_routes parameter, the out_unassigned_stops parameter does not contain spatialReference or geometryType properties because this parameter does not return any geometry information about the stops.
{
"paramName": "out_unassigned_stops",
"dataType": "GPRecordSet",
"value": {
"displayFieldName": "",
"fields": [
{
"name": "<field1Name>",
"type": "<field1Type>",
"alias": "<field1Alias>",
"length": "<field1Length>" //length is included only for esriFieldTypeString
},
{
"name": "<field2Name>",
"type": "<field2Type>",
"alias": "<field2Alias>",
"length": "<field2Length>"
}
],
"features": [
{
"attributes": {
"<field1>": <value11>,
"<field2>": <value12>
}
},
{
"attributes": {
"<field1>": <value21>,
"<field2>": <value22>
}
}
],
"exceededTransferLimit": <true|false>
}
}
Example for out_unassigned_stops
The following is an example of the out_unassigned_stops parameter.
{
"paramName": "out_unassigned_stops",
"dataType": "GPRecordSet",
"value": {
"displayFieldName": "",
"fields": [
{
"name": "ObjectID",
"type": "esriFieldTypeOID",
"alias": "ObjectID"
},
{
"name": "StopType",
"type": "esriFieldTypeSmallInteger",
"alias": "StopType"
},
{
"name": "Name",
"type": "esriFieldTypeString",
"alias": "Name",
"length": 128
},
{
"name": "ViolatedConstraints",
"type": "esriFieldTypeInteger",
"alias": "ViolatedConstraints"
},
{
"name": "Status",
"type": "esriFieldTypeInteger",
"alias": "Status"
}
],
"features": [
{
"attributes": {
"ObjectID": 1,
"StopType": 0,
"Name": "Store_6",
"ViolatedConstraints": 1,
"Status": 5
}
},
{
"attributes": {
"ObjectID": 2,
"StopType": 0,
"Name": "Store_8",
"ViolatedConstraints": 1,
"Status": 5
}
},
{
"attributes": {
"ObjectID": 3,
"StopType": 0,
"Name": "Store_9",
"ViolatedConstraints": 1,
"Status": 5
}
}
],
"exceededTransferLimit": false
}
}
solve_succeeded
Use this parameter to determine whether the service successfully found the solution for the input vehicle routing problem. The error messages for the failure can be obtained by making a request to get the status of the job.
The solve_succeeded parameter is returned as a JSON feature set with the following syntax:
{
"paramName": "solve_succeeded",
"dataType": "GPBoolean",
"value": <true | false>
}
The following is an example of the solve_succeeded parameter:
{
"paramName": "solve_succeeded",
"dataType": "GPBoolean",
"value": true
}
out_route_data
Use this parameter to access a .zip file that contains a file geodatabase containing the inputs and outputs of the analysis in a format that can be used to share route layers with ArcGIS Online or Portal for ArcGIS. The parameter value is populated only when the save_route_data parameter is set to true.
out_result_file
Use this parameter to access the results from the analysis as a .zip file containing one or more files for each output. The format of the individual file is specified by the output_format parameter. The parameter value is not populated when the output_format parameter is set to Feature Set.
out_network_analysis_layer
Use this parameter to access the network analysis layer file that stores the analysis settings and the inputs and outputs used for the analysis. The parameter value is populated only when the save_output_network_analysis_layer parameter is set to true.
Example usage
The vehicle routing problem service supports synchronous and asynchronous operation modes. Asynchronous and synchronous modes define how the application interacts with the service and gets the result. When using the synchronous mode, the application waits for the request to finish and get the results. This mode is well suited for requests that complete quickly (under 10 seconds). When using the asynchronous mode, the client must periodically check whether the service has finished running and, once completed, get the result. While the service is running, you can use the application to do other things. This mode is well suited for requests that take a long time to complete.
Precaución:
The maximum time an application can use the vehicle routing problem service when using the asynchronous mode is 1 hour (3,600 seconds). If a request does not complete within the time limit, it will time out and fail. When using the synchronous mode, the request must complete within 10 minutes (600 seconds). If a request takes longer, the web server handling the request will time out and return the appropriate HTTPS error code in the response.
A request to the vehicle routing problem service has a URL that is specific to the mode. When using the synchronous mode, the request is in the following format:
https://<gpservice-url>/EditVehicleRoutingProblem/execute?parameters
When using the asynchronous mode, the request is in the following format:
https://<gpservice-url>/SolveVehicleRoutingProblem/submitJob?parameters
Service a set of orders with a fleet of vehicles
In this example, you will find the best routes for a fleet of three vehicles, operated by a distribution company, to deliver goods from a distribution center to a set of nine grocery stores. Each store has a specific quantity of demand for the goods, and each truck has a limited capacity for carrying the goods. The main objective is to assign trucks in the fleet a subset of the stores to service and to sequence the deliveries in a way that minimizes the overall transportation costs.
To solve this vehicle routing problem, specify the stores as orders, the distribution center as the depot, and the three trucks as routes. For orders and depots, the geometries are in the spatial reference of the network dataset, so the spatialReference property is not required.
For the orders parameter, the store name will be assigned to the Name attribute, the service time to the ServiceTime attribute, the total weight of good to be delivered to the DeliveryQuantities attribute, the time range in which the store accepts deliveries as the TimeWindowStart1 and TimeWindowEnd1 attributes, and 0 as the value for the MaxViolationTime1 attribute since the time windows should not be violated.
For the depots parameter, specify the depot name as the Name attribute and the depot operating time as the TimeWindowStart1 and TimeWindowEnd1 attributes.
For the routes parameter, the name for each truck will be assigned to the Name attribute, the depot name from where the trucks operation as the StartDepotName and EndDepotName attributes, and the time required to fully load the truck with goods as StartDepotServicetime. The same values as TimeWindowStart1 and TimeWindowsEnd1 for the depot parameter can be assigned to the EarliestStartTime and LatestStartTime attributes, since the trucks can start operation as soon as the depot opens. The maximum carrying capacity of each truck assigned to the Capacities attribute, the wage of the truck driver as the CostPerUnit attribute, and the average dollar amount spent per mile on fuel consumption, truck deprecation, and maintenance as the CostPerUnitDistance attribute. The maximum number of stores that can be serviced by a truck will be assigned to the MaxOrderCount attribute, the maximum duration of the work shift for the drivers according to the workday constraints applies to the MaxTotalTime attribute, and the maximum distance a truck can travel that balances both the daily fuel and maintenance costs among the fleet as the MaxTotalDistance attribute.
Since the time-based attribute values, such as ServiceTime, CostPerUnitDistance, and MaxTotalTime, are in minutes, you can use the default value (which is minutes) for the time_units parameter. Similarly, since the distance-based attributes values, such as CostPerUnitDistance and MaxTotalDistance, are in miles, you can use the default value (which is miles) for the distance_units parameter. It is difficult for these delivery trucks to make U-turns, so set the uturn_policy parameter as NO_UTURNS. You need to generate driving directions in English for each route, so set the populate_directions parameter to true and the directions_language parameter to en. Since there are time windows on orders and depots, you need to specify the default_date parameter. The default values for all the remaining parameters are valid for this problem, so you will not pass those parameters in the request.
Submit job
Because there are three routes, select the asynchronous mode. The first request is to submit a job that returns the job ID.
Request example
https://<gpservice-url>/SolveVehicleRoutingProblem/submitJob?orders=%7B%22features%22:%5B%7B%22geometry%22:%7B%22x%22:-122.51,%22y%22:37.7724%7D,%22attributes%22:%7B%22DeliveryQuantities%22:1706,%22Name%22:%22Store_1%22,%22ServiceTime%22:25,%22TimeWindowStart1%22:1355245200000,%22TimeWindowEnd1%22:1355274000000,%22MaxViolationTime1%22:0%7D%7D,%7B%22geometry%22:%7B%22x%22:-122.4889,%22y%22:37.7538%7D,%22attributes%22:%7B%22DeliveryQuantities%22:1533,%22Name%22:%22Store_2%22,%22ServiceTime%22:23,%22TimeWindowStart1%22:1355245200000,%22TimeWindowEnd1%22:1355274000000,%22MaxViolationTime1%22:0%7D%7D,%7B%22geometry%22:%7B%22x%22:-122.4649,%22y%22:37.7747%7D,%22attributes%22:%7B%22DeliveryQuantities%22:1580,%22Name%22:%22Store_3%22,%22ServiceTime%22:24,%22TimeWindowStart1%22:1355245200000,%22TimeWindowEnd1%22:1355274000000,%22MaxViolationTime1%22:0%7D%7D,%7B%22geometry%22:%7B%22x%22:-122.4739,%22y%22:37.7432%7D,%22attributes%22:%7B%22DeliveryQuantities%22:1289,%22Name%22:%22Store_4%22,%22ServiceTime%22:20,%22TimeWindowStart1%22:1355245200000,%22TimeWindowEnd1%22:1355274000000,%22MaxViolationTime1%22:0%7D%7D,%7B%22geometry%22:%7B%22x%22:-122.4493,%22y%22:37.7315%7D,%22attributes%22:%7B%22DeliveryQuantities%22:1302,%22Name%22:%22Store_5%22,%22ServiceTime%22:21,%22TimeWindowStart1%22:1355245200000,%22TimeWindowEnd1%22:1355274000000,%22MaxViolationTime1%22:0%7D%7D,%7B%22geometry%22:%7B%22x%22:-122.4917,%22y%22:37.6493%7D,%22attributes%22:%7B%22DeliveryQuantities%22:1775,%22Name%22:%22Store_6%22,%22ServiceTime%22:26,%22TimeWindowStart1%22:1355245200000,%22TimeWindowEnd1%22:1355274000000,%22MaxViolationTime1%22:0%7D%7D,%7B%22geometry%22:%7B%22x%22:-122.4832,%22y%22:37.7012%7D,%22attributes%22:%7B%22DeliveryQuantities%22:1014,%22Name%22:%22Store_7%22,%22ServiceTime%22:17,%22TimeWindowStart1%22:1355245200000,%22TimeWindowEnd1%22:1355274000000,%22MaxViolationTime1%22:0%7D%7D,%7B%22geometry%22:%7B%22x%22:-122.5301,%22y%22:37.8935%7D,%22attributes%22:%7B%22DeliveryQuantities%22:1761,%22Name%22:%22Store_8%22,%22ServiceTime%22:26,%22TimeWindowStart1%22:1355245200000,%22TimeWindowEnd1%22:1355274000000,%22MaxViolationTime1%22:0%7D%7D,%7B%22geometry%22:%7B%22x%22:-122.2875,%22y%22:37.8909%7D,%22attributes%22:%7B%22DeliveryQuantities%22:1815,%22Name%22:%22Store_9%22,%22ServiceTime%22:27,%22TimeWindowStart1%22:1355245200000,%22TimeWindowEnd1%22:1355274000000,%22MaxViolationTime1%22:0%7D%7D%5D%7D&depots=%7B%22features%22:%5B%7B%22geometry%22:%7B%22x%22:-122.3943,%22y%22:37.7967%7D,%22attributes%22:%7B%22Name%22:%22San%20Francisco%22,%22TimeWindowStart1%22:1355241600000,%22TimeWindowEnd1%22:1355274000000%7D%7D%5D%7D&routes=%7B%22features%22:%5B%7B%22attributes%22:%7B%22Name%22:%22Truck_1%22,%22StartDepotName%22:%22San%20Francisco%22,%22EndDepotName%22:%22San%20Francisco%22,%22StartDepotServiceTime%22:60,%22EarliestStartTime%22:1355241600000,%22LatestStartTime%22:1355241600000,%22Capacities%22:%2215000%22,%22CostPerUnitTime%22:0.2,%22CostPerUnitDistance%22:1.5,%22MaxOrderCount%22:2,%22MaxTotalTime%22:360,%22MaxTotalTravelTime%22:120,%22MaxTotalDistance%22:80%7D%7D,%7B%22attributes%22:%7B%22Name%22:%22Truck_2%22,%22StartDepotName%22:%22San%20Francisco%22,%22EndDepotName%22:%22San%20Francisco%22,%22StartDepotServiceTime%22:60,%22EarliestStartTime%22:1355241600000,%22LatestStartTime%22:1355241600000,%22Capacities%22:%2215000%22,%22CostPerUnitTime%22:0.2,%22CostPerUnitDistance%22:1.5,%22MaxOrderCount%22:2,%22MaxTotalTime%22:360,%22MaxTotalTravelTime%22:120,%22MaxTotalDistance%22:80%7D%7D,%7B%22attributes%22:%7B%22Name%22:%22Truck_3%22,%22StartDepotName%22:%22San%20Francisco%22,%22EndDepotName%22:%22San%20Francisco%22,%22StartDepotServiceTime%22:60,%22EarliestStartTime%22:1355241600000,%22LatestStartTime%22:1355241600000,%22Capacities%22:%2215000%22,%22CostPerUnitTime%22:0.2,%22CostPerUnitDistance%22:1.5,%22MaxOrderCount%22:2,%22MaxTotalTime%22:360,%22MaxTotalTravelTime%22:120,%22MaxTotalDistance%22:80%7D%7D%5D%7D&time_units=Minutes&distance_units=Miles&uturn_policy=NO_UTURNS&populate_directions=true&directions_language=en&default_date=1355212800000&f=json&token=<yourToken>
JSON Response
{
"jobId": "jb1e9c0999ec047f4ac99750055041719",
"jobStatus": "esriJobSubmitted"
}
Query job status
The job ID obtained from the response of the first request can be queried periodically to determine the status of the job.
Request example
https://<gpservice-url>/SolveVehicleRoutingProblem/jobs/<yourJobID>?returnMessages=true&f=json&token=<yourToken>
https://machine.domain.com/webadaptor/rest/services/World/VehicleRoutingProblem/GPServer/SolveVehicleRoutingProblem/jobs/<yourJobID>?returnMessages=true&f=json&token=<yourToken>
JSON Response
{
"jobId": "jb1e9c0999ec047f4ac99750055041719",
"jobStatus": "esriJobSucceeded",
"results": {
"out_unassigned_stops": {
"paramUrl": "results/out_unassigned_stops"
},
"out_stops": {
"paramUrl": "results/out_stops"
},
"out_routes": {
"paramUrl": "results/out_routes"
},
"out_directions": {
"paramUrl": "results/out_directions"
},
"solve_succeeded": {
"paramUrl": "results/solve_succeeded"
}
},
"inputs": {
"orders": {
"paramUrl": "inputs/orders"
},
"depots": {
"paramUrl": "inputs/depots"
},
"routes": {
"paramUrl": "inputs/routes"
},
"breaks": {
"paramUrl": "inputs/breaks"
},
"time_units": {
"paramUrl": "inputs/time_units"
},
"distance_units": {
"paramUrl": "inputs/distance_units"
},
"analysis_region": {
"paramUrl": "inputs/analysis_region"
},
"default_date": {
"paramUrl": "inputs/default_date"
},
"uturn_policy": {
"paramUrl": "inputs/uturn_policy"
},
"time_window_factor": {
"paramUrl": "inputs/time_window_factor"
},
"spatially_cluster_routes": {
"paramUrl": "inputs/spatially_cluster_routes"
},
"route_zones": {
"paramUrl": "inputs/route_zones"
},
"route_renewals": {
"paramUrl": "inputs/route_renewals"
},
"order_pairs": {
"paramUrl": "inputs/order_pairs"
},
"excess_transit_factor": {
"paramUrl": "inputs/excess_transit_factor"
},
"point_barriers": {
"paramUrl": "inputs/point_barriers"
},
"line_barriers": {
"paramUrl": "inputs/line_barriers"
},
"polygon_barriers": {
"paramUrl": "inputs/polygon_barriers"
},
"use_hierarchy_in_analysis": {
"paramUrl": "inputs/use_hierarchy_in_analysis"
},
"restrictions": {
"paramUrl": "inputs/restrictions"
},
"attribute_parameter_values": {
"paramUrl": "inputs/attribute_parameter_values"
},
"populate_route_lines": {
"paramUrl": "inputs/populate_route_lines"
},
"route_line_simplification_tolerance": {
"paramUrl": "inputs/route_line_simplification_tolerance"
},
"populate_directions": {
"paramUrl": "inputs/populate_directions"
},
"directions_language": {
"paramUrl": "inputs/directions_language"
},
"directions_style_name": {
"paramUrl": "inputs/directions_style_name"
}
},
"messages": []
}
Return output routes
Because the job succeeded, you can make a request to return the routes from the out_routes output parameter.
Request example
https://machine.domain.com/webadaptor/rest/services/World/VehicleRoutingProblem/GPServer/SolveVehicleRoutingProblem/jobs/<yourJobID>/results/out_routes?f=json&token=<yourToken>
https://machine.domain.com/webadaptor/rest/services/World/VehicleRoutingProblem/GPServer/SolveVehicleRoutingProblem/jobs/<yourJobID>/results/out_routes?f=json&token=<yourToken>
JSON Response
Nota:
Dado que la respuesta es muy detallada, los elementos repetidos dentro de la respuesta se abrevian para mayor claridad.
{
"paramName": "out_routes",
"dataType": "GPFeatureRecordSetLayer",
"value": {
"displayFieldName": "",
"geometryType": "esriGeometryPolyline",
"spatialReference": {
"wkid": 4326,
"latestWkid": 4326
},
"fields": [
{
"name": "ObjectID",
"type": "esriFieldTypeOID",
"alias": "ObjectID"
},
{
"name": "Name",
"type": "esriFieldTypeString",
"alias": "Name",
"length": 128
},
{
"name": "ViolatedConstraints",
"type": "esriFieldTypeInteger",
"alias": "ViolatedConstraints"
},
{
"name": "OrderCount",
"type": "esriFieldTypeInteger",
"alias": "OrderCount"
},
{
"name": "TotalCost",
"type": "esriFieldTypeDouble",
"alias": "TotalCost"
},
{
"name": "RegularTimeCost",
"type": "esriFieldTypeDouble",
"alias": "RegularTimeCost"
},
{
"name": "OvertimeCost",
"type": "esriFieldTypeDouble",
"alias": "OvertimeCost"
},
{
"name": "DistanceCost",
"type": "esriFieldTypeDouble",
"alias": "DistanceCost"
},
{
"name": "TotalTime",
"type": "esriFieldTypeDouble",
"alias": "TotalTime"
},
{
"name": "TotalOrderServiceTime",
"type": "esriFieldTypeDouble",
"alias": "TotalOrderServiceTime"
},
{
"name": "TotalBreakServiceTime",
"type": "esriFieldTypeDouble",
"alias": "TotalBreakServiceTime"
},
{
"name": "TotalTravelTime",
"type": "esriFieldTypeDouble",
"alias": "TotalTravelTime"
},
{
"name": "TotalDistance",
"type": "esriFieldTypeDouble",
"alias": "TotalDistance"
},
{
"name": "StartTime",
"type": "esriFieldTypeDate",
"alias": "StartTime",
"length": 16
},
{
"name": "EndTime",
"type": "esriFieldTypeDate",
"alias": "EndTime",
"length": 16
},
{
"name": "TotalWaitTime",
"type": "esriFieldTypeDouble",
"alias": "TotalWaitTime"
},
{
"name": "TotalViolationTime",
"type": "esriFieldTypeDouble",
"alias": "TotalViolationTime"
},
{
"name": "RenewalCount",
"type": "esriFieldTypeInteger",
"alias": "RenewalCount"
},
{
"name": "TotalRenewalServiceTime",
"type": "esriFieldTypeDouble",
"alias": "TotalRenewalServiceTime"
},
{
"name": "Shape_Length",
"type": "esriFieldTypeDouble",
"alias": "Shape_Length"
}
],
"features": [
{
"attributes": {
"ObjectID": 1,
"Name": "Truck_1",
"ViolatedConstraints": null,
"OrderCount": 1,
"TotalCost": 39.22232551889244,
"RegularTimeCost": 24.312590403482318,
"OvertimeCost": 0,
"DistanceCost": 14.90973511541012,
"TotalTime": 121.56295201741159,
"TotalOrderServiceTime": 24,
"TotalBreakServiceTime": 0,
"TotalTravelTime": 37.56295201741159,
"TotalDistance": 9.939823410273414,
"StartTime": 1355241600000,
"EndTime": 1355248893777,
"TotalWaitTime": 0,
"TotalViolationTime": 0,
"RenewalCount": 0,
"TotalRenewalServiceTime": 0,
"Shape_Length": 0.18586232678817152
},
"geometry": {
"paths": [
[
[
-122.39476499860575,
37.79623499914595
],
[
-122.39486000028876,
37.79632999992958
]
],
[
[
-122.46491587646648,
37.77469887205535
],
[
-122.46495999990407,
37.77531999961832
]
]
]
}
}
],
"exceededTransferLimit": false
}
}
Return output orders
Because the job succeeded, you can make a request to return the orders assigned to the routes from the out_stops output parameter.
Request example
https://<gpservice-url>/SolveVehicleRoutingProblem/jobs/<yourJobID>/results/out_stops?f=json&token=<yourToken>
https://<gpservice-url>/SolveVehicleRoutingProblem/jobs/<yourJobID>/results/out_stops?f=json&token=<yourToken>
JSON Response
Nota:
Dado que la respuesta es muy detallada, los elementos repetidos dentro de la respuesta se abrevian para mayor claridad.
{
"paramName": "out_stops",
"dataType": "GPRecordSet",
"value": {
"displayFieldName": "",
"fields": [
{
"name": "ObjectID",
"type": "esriFieldTypeOID",
"alias": "ObjectID"
},
{
"name": "Name",
"type": "esriFieldTypeString",
"alias": "Name",
"length": 128
},
{
"name": "PickupQuantities",
"type": "esriFieldTypeString",
"alias": "PickupQuantities",
"length": 128
},
{
"name": "DeliveryQuantities",
"type": "esriFieldTypeString",
"alias": "DeliveryQuantities",
"length": 128
},
{
"name": "StopType",
"type": "esriFieldTypeSmallInteger",
"alias": "StopType"
},
{
"name": "RouteName",
"type": "esriFieldTypeString",
"alias": "RouteName",
"length": 128
},
{
"name": "Sequence",
"type": "esriFieldTypeInteger",
"alias": "Sequence"
},
{
"name": "FromPrevTravelTime",
"type": "esriFieldTypeDouble",
"alias": "FromPrevTravelTime"
},
{
"name": "FromPrevDistance",
"type": "esriFieldTypeDouble",
"alias": "FromPrevDistance"
},
{
"name": "ArriveCurbApproach",
"type": "esriFieldTypeInteger",
"alias": "ArriveCurbApproach"
},
{
"name": "DepartCurbApproach",
"type": "esriFieldTypeInteger",
"alias": "DepartCurbApproach"
},
{
"name": "ArriveTime",
"type": "esriFieldTypeDate",
"alias": "ArriveTime",
"length": 16
},
{
"name": "DepartTime",
"type": "esriFieldTypeDate",
"alias": "DepartTime",
"length": 16
},
{
"name": "WaitTime",
"type": "esriFieldTypeDouble",
"alias": "WaitTime"
},
{
"name": "ViolationTime",
"type": "esriFieldTypeDouble",
"alias": "ViolationTime"
},
{
"name": "ArriveTimeUTC",
"type": "esriFieldTypeDate",
"alias": "ArriveTimeUTC",
"length": 16
},
{
"name": "DepartTimeUTC",
"type": "esriFieldTypeDate",
"alias": "DepartTimeUTC",
"length": 16
}
],
"features": [
{
"attributes": {
"ObjectID": 1,
"Name": "Store_1",
"PickupQuantities": "",
"DeliveryQuantities": "1706",
"StopType": 0,
"RouteName": "Truck_2",
"Sequence": 2,
"FromPrevTravelTime": 25.57343202829361,
"FromPrevDistance": 7.5915227103313985,
"ArriveCurbApproach": 0,
"DepartCurbApproach": 0,
"ArriveTime": 1355246734406,
"DepartTime": 1355248234406,
"WaitTime": 0,
"ViolationTime": 0,
"ArriveTimeUTC": 1355275534406,
"DepartTimeUTC": 1355277034406
}
}
],
"exceededTransferLimit": false
}
}
JSON Response syntax
The mode chosen for operation of the service determines the way in which you can retrieve the results from the service.
Outputs from synchronous mode
With the synchronous mode, the service returns a JSON response that contains any warning messages from the service operation as well as an array of results. Each result in this array contains the value for the output parameters returned by the service. If the request fails to run, the response only contains the error property that contains the error messages. The examples in the subsequent sections illustrate the response returned with specific request parameters.
JSON Response syntax for a successful request
{
"results": [
{
"paramName": "<paramName1>",
"dataType": "<dataType1>",
"value": <valueLiteralOrObject1>
},
{
"paramName": "<paramName2>",
"dataType": "<dataType2>",
"value": <valueLiteralOrObject2>
}
],
"messages": [
{
"type": "<type1>",
"description": "<description1>"
},
{
"type": "<type2>",
"description": "<description2>"
}
]
}
JSON Response syntax for a failed request
{
"error": {
"code": <code>,
"message": "<message>",
"details": [
"<details>"
]
}
}
Outputs from asynchronous mode
With the asynchronous mode, the service assigns a unique job ID for the transaction. The job ID and the status of the job are returned in the response.
JSON Response syntax from a request using asynchronous mode
{
"jobId": <jobID>,
"jobStatus": <jobStatus>
}
The jobStatus property can have the following values:
- esriJobSubmitted
- esriJobWaiting
- esriJobExecuting
- esriJobSucceeded
- esriJobFailed
- esriJobTimedOut
- esriJobCancelling
- esriJobCancelled
You can use the job ID to periodically check the status of the job and messages. Additionally, if the job has successfully completed, you can use the job ID to retrieve the results or the inputs. The job information and results remain available for 24 hours after the job has completed.
JSON Response syntax while a job is running
{
"jobId": "<jobId>",
"jobStatus": "<jobStatus>",
"messages": [
{
"type": "<type1>",
"description": "<description1>"
},
{
"type": "<type2>",
"description": "<description2>"
}
]
}
While a job is running, you can cancel it by making a request of the following form:
https://machine.domain.com/webadaptor/rest/services/World/VehicleRoutingProblem/GPServer/SolveVehicleRoutingProblem/jobs/<yourJobID>/cancel?token=<yourToken>&f=json
After the successful completion of the job, you can make a request of the following form to retrieve the outputs. Refer to the Output Parameters section for more information on how to interpret the solution provided by the service.
https://machine.domain.com/webadaptor/rest/services/World/VehicleRoutingProblem/GPServer/SolveVehicleRoutingProblem/jobs/<yourJobID>/results/<output_parameter_name>?token=<yourToken>&f=json
The feature geometries are returned by default in the WGS84 spatial reference. You can get the feature geometries in any spatial reference by specifying the outSR parameter value when retrieving an output parameter. The example below shows how to retrieve an output parameter with feature geometries in the Web Mercator (WKID: 102100) spatial reference.
https://machine.domain.com/webadaptor/rest/services/World/VehicleRoutingProblem/GPServer/SolveVehicleRoutingProblem/jobs/<yourJobID>/results/<output_parameter_name>?token=<yourToken>&f=json&outSR=102100
You can also retrieve the value for any input parameter by making requests of the following form:
https://machine.domain.com/webadaptor/rest/services/World/VehicleRoutingProblem/GPServer/SolveVehicleRoutingProblem/jobs/<yourJobID>/inputs/<inputParameterName>?token=<yourToken>&f=json
Usage limits
The table below lists the limits that apply to this service. Some limits vary by request mode, and they are noted accordingly.
Limit value | Limit description |
---|---|
12,42 miles (20 kilometers) | The maximum snap tolerance. If the distance between an input point and its nearest traversable street is greater than the distance specified here, the point is excluded from the analysis. |
10.000.000 | The maximum number of direction features that can be returned for asynchronous and synchronous modes. |
600 seconds for synchronous mode 4 horas for asynchronous mode | The maximum time a client can use the VRP services. |
El límite para la tolerancia de alineación no se puede cambiar; sin embargo, puede configurar otros límites siguiendo los pasos que aparecen a continuación:
- Abra Server Manager del sitio de ArcGIS Server que contiene el servicio de geoprocesamiento de NetworkAnalysis e inicie sesión. Si necesita ayuda con este paso, consulte Iniciar sesión en Manager.
- Haga clic en Servicios > Administrar servicios.
- En el módulo Administrar servicios, busque Servicio de geoprocesamiento de NetworkAnalysis y haga clic en Editar servicio
.
Si no ve el servicio en la carpeta Generación de rutas, es posible que esté ubicado dentro de otra carpeta en Sitio (raíz) >.
- Haga clic en la opción Parámetros y cambie el límite del número de registros devueltos por el servicio editando el valor en el cuadro de texto Cantidad máxima de registros devueltos por el servidor.
- Haga clic en la opción Agrupación y cambie el tiempo máximo que se puede usar el servicio editando el valor en el cuadro de texto El tiempo máximo que un cliente puede utilizar un servicio.
- Haga clic en Guardar y reiniciar para aplicar sus ediciones y reiniciar el servicio.