Resumen
La herramienta Resolver ubicación y asignación elige las mejores ubicaciones a partir de un conjunto de ubicaciones de entrada, asignando puntos de demanda a las instalaciones de entrada de forma que se asigne la máxima demanda a las instalaciones y se minimice el tiempo total del viaje.
Entre los datos que se pueden introducir en esta herramienta se encuentran las instalaciones, que proporcionan los bienes o servicios, y los puntos de demanda, que los consumen. El objetivo es buscar las instalaciones que proveen con mayor eficiencia al punto de demanda. La herramienta resuelve este problema mediante un análisis de las distintas maneras de asignar puntos de demanda a instalaciones diferentes. La solución es el escenario que asigna la mayor demanda posible a las instalaciones y minimiza los viajes en general. El resultado incluye las instalaciones de la solución, los puntos de demanda asociados a las instalaciones asignadas y las líneas que conectan los puntos de demanda con sus instalaciones.
La herramienta de ubicación y asignación puede configurarse para resolver tipos de problemas específicos. Los ejemplos incluyen lo siguiente:
Una tienda quiere saber qué ubicaciones de tiendas posibles deberían desarrollarse para capturar el 10 por ciento del mercado minorista de la zona.
Un departamento de bomberos desea determinar el lugar donde debería emplazar estaciones de bomberos para alcanzar a un 90 por ciento de la comunidad con un tiempo de respuesta de cuatro minutos.
Una comisaría de policía desea situar de antemano al personal dada la anterior actividad delictiva nocturna.
Tras una tormenta, una agencia de respuesta a desastres desea buscar las mejores ubicaciones para establecer instalaciones de triage, con capacidad limitada de pacientes, para atender a la población afectada.
Precaución:
Para obtener información actualizada sobre esta herramienta, consulte la edición más reciente de este tema en la Ayuda web. ArcGIS Online realiza actualizaciones funcionales periódicas a servicios como este, de forma que la ayuda instalada podría estar obsoleta.
Más información sobre la salida de Resolver ubicación y asignación
Ilustración
Uso
Las herramientas de la caja de herramientas listas para usar son servicios de geoprocesamiento de ArcGIS Online que usan los datos alojados y las capacidades de análisis de ArcGIS Online.
La herramienta escoge las mejores instalaciones en función del tiempo de viaje si el valor del parámetro Unidades de medida se basa en el tiempo. Si las unidades de medida se basan en la distancia, utiliza la distancia de viaje.
Debe especificar al menos una instalación y un punto de demanda para que la herramienta funcione correctamente. Puede cargar hasta 1,000 instalaciones y 10.000 punto de demanda.
Puede añadir hasta 250 barreras de punto. Puede añadir cualquier cantidad de barreras de línea o polígono, pero las barreras de línea no se pueden intersecar con más de 500 entidades de calle ni las barreras de polígono se pueden intersecar con más de 2000 entidades.
Es posible utilizar la jerarquía de carreteras al resolver, de manera que los resultados se generen con mayor rapidez, pero la solución podría no ser óptima.
Con independencia de que el parámetro Utilizar jerarquía se haya activado (Verdadero) o no, la jerarquía siempre se usa cuando la distancia en línea recta entre cualquier par de entidades que representen puntos de demanda o instalaciones sea mayor que 50 millas (80,46 kilómetros).
La distancia en línea recta entre cualquier par de entidades que representen puntos de demanda o instalaciones no puede ser superior a 27 millas (43,45 kilómetros) cuando Modo de viaje está establecido en A pie o cuando está establecido en Personalizado y se utiliza la restricción A pie.
Si la distancia entre un punto de entrada y la calle más próxima que se puede atravesar es mayor que 12.42 millas (20 kilómetros), el punto se excluye del análisis.
El uso de este servicio consume créditos. Para obtener más información, consulte Descripción general de los créditos de servicio.
Sintaxis
arcpy.agolservices.SolveLocationAllocation(Facilities, Demand_Points, Measurement_Units, {Analysis_Region}, {Problem_Type}, {Number_of_Facilities_to_Find}, {Default_Measurement_Cutoff}, {Default_Capacity}, {Target_Market_Share}, {Measurement_Transformation_Model}, {Measurement_Transformation_Factor}, {Travel_Direction}, {Time_of_Day}, {Time_Zone_for_Time_of_Day}, {UTurn_at_Junctions}, Point_Barriers, Line_Barriers, Polygon_Barriers, {Use_Hierarchy}, Restrictions, {Attribute_Parameter_Values}, {Allocation_Line_Shape}, {Travel_Mode}, {Impedance}, {Save_Output_Network_Analysis_Layer}, {Overrides}, {Time_Impedance}, {Distance_Impedance}, {Output_Format})
Parámetro | Explicación | Tipo de datos |
Facilities | Especifique una o varias instalaciones entre las que elegirá el solucionador durante el análisis. El solucionador identifica las mejores instalaciones en las que asignar demanda de la manera más eficaz según el tipo de problema y el criterio especificado. En un análisis competitivo, en el cual se intenta encontrar las mejores ubicaciones teniendo en cuenta a la competencia, las instalaciones de los rivales también se especifican aquí. Cuando se definen las instalaciones, se pueden definir propiedades para cada una, como su nombre o tipo, mediante los siguientes atributos: Name El nombre de la instalación. El nombre se incluye en el nombre de las líneas de asignación de salida si la instalación forma parte de la solución. FacilityType Especifica si la instalación es candidata, obligatoria o competidora. El valor de campo se especifica como uno de los siguientes enteros (use el código numérico, no el nombre entre paréntesis):
Weight El peso relativo de la instalación, que se utiliza para valorar el atractivo, la conveniencia o la predisposición de una instalación en comparación con otra. Por ejemplo, un valor de 2,0 podría capturar la preferencia de los clientes que prefieren, en un ratio de 2 a 1, ir de compras a una instalación más que a otra. Entre los factores que pueden afectar al peso de la instalación se encuentran la superficie, el vecindario y la antigüedad del edificio. Los valores de peso que no sean uno solo se admiten en los tipos de problema Maximización de la cuota de mercado y Cuota de mercado objetivo; no se tienen en cuenta en otros tipos de problema. Cutoff El valor de impedancia en el que se debe detener la búsqueda de puntos de demanda de una instalación dada. El punto de demanda no se puede asignar a una instalación que se encuentre más allá del valor indicado aquí. Este atributo permite especificar un valor límite distinto para cada punto de demanda. Por ejemplo, quizá descubra que, en las áreas rurales, las personas están dispuestas a recorrer hasta 10 millas para llegar a una instalación, mientras que los urbanitas solo están dispuestos a recorrer 2 millas. Puede modelar este comportamiento estableciendo el valor Cutoff de todos los puntos de demanda que se encuentran en áreas rurales en 10 y el valor Cutoff de los puntos de demanda de áreas urbanas en 2. Capacity El campo Capacity es específico del tipo de problema Maximizar la cobertura capacitada; el resto de tipos de problemas ignoran este campo. La capacidad especifica qué cantidad de demanda ponderada puede suministrar la instalación. El exceso de demanda no se asignará a una instalación incluso si la demanda está dentro del valor límite de medición predeterminado de la instalación. Cualquier valor asignado al campo Capacity invalida el parámetro Capacidad predeterminada (Default_Capacity en Python) de la instalación en cuestión. CurbApproach Especifica la dirección en la que un vehículo puede llegar a la instalación o salir 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):
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 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, si desea llegar a una instalación y que no haya un carril entre el vehículo y el incidente, 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 bordes 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 borde 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 a cada lado del eje (izquierdo y derecho) 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 Bearing y BearingTol también tienen valores. Sin embargo, la introducción de un valor NavLatency es opcional, incluso cuando hay valores en Bearing y BearingTol. NavLatency indica cuánto coste se espera que transcurra 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. | Feature Set |
Demand_Points | Especifique uno o varios puntos de demanda. El solucionador identifica las mejores instalaciones sobre todo en función de cómo atienden los puntos de demanda que se especifican aquí. Un punto de demanda suele ser una ubicación que representa las personas o las cosas que requieren los bienes y servicios que proporcionan las instalaciones. Un punto de demanda podría ser un centroide de código postal ponderado mediante el número de personas que residen dentro de él o por el consumo esperado generado por esas personas. Los puntos de demanda también pueden representar clientes comerciales. Si suministra a negocios con una elevada tasa de renovación del inventario, estos tendrán una ponderación mayor que los que tengan una baja tasa de renovación. Cuando se especifican los puntos de demanda, se pueden definir propiedades para cada uno, como su nombre o ponderación, mediante los siguientes atributos: Name El nombre del punto de demanda. El nombre se incluye en el nombre de la o las líneas de asignación de salida si el punto de demanda forma parte de la solución. GroupName El nombre del grupo al que pertenece el punto de demanda. El campo se ignora para los tipos de problema Maximizar cobertura con capacidad, Cuota de mercado objetivo y Maximizar cuota de mercado. Si los puntos de demanda comparten un nombre de grupo, el solucionador asigna todos los miembros del grupo a la misma instalación. (Si hay restricciones, tales como un valor límite de distancia, que impidan que alguno de los puntos de demanda del grupo alcance la misma instalación, no se asignará ninguno de los puntos de demanda). Weight Ponderación relativa del punto de demanda. Un valor de 2,0 significa que el punto de demanda es dos veces más importante que uno con un peso de 1,0. Si los puntos de demanda representan hogares, por ejemplo, la ponderación puede indicar la cantidad de personas de cada hogar. Cutoff El valor de impedancia en el que se debe detener la búsqueda de puntos de demanda de una instalación dada. El punto de demanda no se puede asignar a una instalación que se encuentre más allá del valor indicado aquí. Este atributo permite especificar un valor límite para cada punto de demanda. Por ejemplo, quizá descubra que en áreas rurales las personas están dispuestas a recorrer hasta 10 millas para llegar a una instalación, mientras que las que se encuentran en áreas urbanas solo están dispuestas a recorrer 2 millas. Puede modelar este comportamiento estableciendo el valor Cutoff de todos los puntos de demanda que se encuentran en áreas rurales en 10 y el valor Cutoff de los puntos de demanda de áreas urbanas en 2. Las unidades de este valor de atributo se especifican con el parámetro Unidades de medida. Un valor de este atributo invalida el valor predeterminado establecido para el análisis con el parámetro Valor límite de medición predeterminado. El valor predeterminado es Null, lo que hace que se utilice el valor predeterminado que establece el parámetro Valor límite de medición predeterminado para todos los puntos de demanda. ImpedanceTransformation Un valor de este atributo invalida el valor predeterminado establecido para el análisis con el parámetro Modelo de transformación de medición. ImpedanceParameter Un valor de este atributo invalida el valor predeterminado establecido para el análisis con el parámetro Factor de transformación de medición. CurbApproach Especifica la dirección en la que un vehículo puede llegar al punto de demanda o salir del mismo. El valor de campo se especifica como uno de los siguientes enteros (use el código numérico, no el nombre entre paréntesis):
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 punto de demanda 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 punto de demanda 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 un punto de demanda y que no haya un carril entre el vehículo y el punto de demanda, 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 bordes 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 borde 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 a cada lado del eje (izquierdo y derecho) 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 Bearing y BearingTol también tienen valores. Sin embargo, la introducción de un valor NavLatency es opcional, incluso cuando hay valores en Bearing y BearingTol. NavLatency indica cuánto coste se espera que transcurra 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. | Feature Set |
Measurement_Units | Especifique las unidades que se utilizarán para medir los tiempos o las distancias de viaje entre los puntos de demanda y las instalaciones. La herramienta busca las mejores instalaciones en función de aquellas que pueden llegar (o a las que pueden llegar) la mayor cantidad de demanda ponderada con la menor cantidad de viaje. Las líneas de asignación de salida informan acerca de la distancia de viaje o del tiempo de viaje en unidades diferentes, incluidas las que se especifiquen para este parámetro.
| String |
Analysis_Region (Opcional) | La región en la que se realizará el análisis. Si no se especifica un valor para este parámetro, la herramienta calcula automáticamente el nombre de la región en función de la ubicación de los puntos de entrada. Es obligatorio definir el nombre de la región solamente si la detección automática del nombre de la región no es precisa para sus entradas. Para especificar una región, utilice uno de los siguientes valores:
Heredado:Ya no se admiten los siguientes nombres de regiones, que se eliminarán en versiones futuras. Si especifica uno de los nombres de región obsoletos, la herramienta asignará automáticamente un nombre compatible para su región.
| String |
Problem_Type (Opcional) | Especifica el objetivo del análisis de ubicación y asignación. El objetivo predeterminado es minimizar la impedancia.
| String |
Number_of_Facilities_to_Find (Opcional) | El número de instalaciones a encontrar. El valor predeterminado es 1. Las instalaciones con un valor de campo FacilityType de 1 (Obligatorio) siempre se eligen en primer lugar. Las instalaciones en exceso se escogen de entre las instalaciones candidatas cuyo valor de campo FacilityType es 2. Las instalaciones que tengan un valor de FacilityType igual a 3 (Elegido) antes de resolver se tratan como instalaciones candidatas en el momento de la resolución. Si la cantidad de instalaciones que se desea buscar es menor que la cantidad de instalaciones obligatorias, se produce un error. Cantidad de instalaciones a buscar está deshabilitada para los tipos de problemas Minimizar instalaciones y Cuota de mercado objetivo, dado que el solucionador determina la cantidad mínima de instalaciones necesarias para cumplir los objetivos. | Long |
Default_Measurement_Cutoff (Opcional) | El valor máximo de tiempo o distancia de viaje permitido entre un punto de demanda y la instalación a la que se asigna. Si un punto de demanda está fuera del valor límite de una instalación, no se puede asignar a esa instalación. El valor predeterminado es ninguno, es decir, el valor límite no es válido. Las unidades de este parámetro son las mismas que las especificadas por el parámetro Unidades de medida. El valor límite del tiempo o la distancia de viaje se mide mediante la ruta más corta por carretera. Este parámetro se puede utilizar para modelar la distancia máxima que las personas están dispuestas a recorrer para visitar tiendas o el tiempo máximo que tiene permitido tardar un cuerpo de bomberos para llegar a cualquier miembro de la comunidad. Tenga en cuenta que Puntos de demanda incluye el campo Cutoff, el cual, si se establece como corresponde, invalida el parámetro Valor límite de medición predeterminado. Quizá descubra que, en las áreas rurales, las personas están dispuestas a recorrer hasta 10 millas para llegar a una instalación, mientras que los urbanitas solo están dispuestos a recorrer 2 millas. Suponiendo que las Unidades de medida se establecen en Millas, puede modelar este comportamiento si define el valor límite de medición predeterminado en 10 y el valor de campo Cutoff de los puntos de demanda en zonas urbanas en 2. | Double |
Default_Capacity (Opcional) | Este parámetro es específico del tipo de problema Maximizar cobertura capacitada. Es la capacidad predeterminada que se asigna a todas las instalaciones del análisis. Puede invalidar la capacidad predeterminada de una instalación si especifica un valor en el campo Capacity de la instalación. El valor predeterminado es 1. | Double |
Target_Market_Share (Opcional) | Este parámetro es específico del tipo de problema Cuota de mercado objetivo. Es el porcentaje del peso de demanda total que desea que capturen las instalaciones elegidas y obligatorias. El solucionador identifica la cantidad mínima de instalaciones necesarias para capturar la cuota de mercado objetivo especificada aquí. El valor predeterminado es 10%. | Double |
Measurement_Transformation_Model (Opcional) | Establece la ecuación para transformar el coste de la red entre instalaciones y puntos de demanda. Este parámetro, junto con Parámetro de impedancia, especifica hasta qué punto influye la impedancia de red entre instalaciones y puntos de demanda en la elección de instalaciones por parte del solucionador. En la siguiente lista de opciones de transformación, d hace referencia a puntos de demanda y, f, a instalaciones. Impedancia es la distancia o el tiempo de viaje más corto entre dos ubicaciones. Así, impedancedf es la ruta más corta (tiempo o distancia) entre el punto de demanda d y la instalación f, y costdf es el tiempo o distancia transformado entre la instalación y el punto de demanda. Lambda (λ) denota el parámetro de impedancia. El parámetro Unidades de medida determina si se analiza el tiempo o la distancia de viaje.
El valor definido para este parámetro se puede invalidar por punto de demanda con el campo ImpedanceTransformation en los puntos de demanda de entrada. | String |
Measurement_Transformation_Factor (Opcional) | Proporciona un valor de parámetro a las ecuaciones especificadas en el parámetro Modelo de transformación de medición. El valor de parámetro se ignora cuando la transformación de impedancia es de tipo lineal. Para las transformaciones de impedancia exponencial y de potencia, el valor debe ser distinto de cero. El valor predeterminado es 1. El valor definido para este parámetro se puede invalidar por punto de demanda con el campo ImpedanceParameter en los puntos de demanda de entrada. | Double |
Travel_Direction (Opcional) | Especifica si los tiempos o distancias de viaje se medirán desde las instalaciones hasta los puntos de demanda o desde los puntos de demanda hasta las instalaciones.
Los tiempos y las distancias de viaje pueden cambiar en función de la dirección del viaje. Si viaja del punto A al punto B, puede encontrar menos tráfico o una ruta más corta, debido a las calles de sentido único y las restricciones de giro, que si se desplaza en la dirección contraria. Por ejemplo, para viajar del punto A al punto B puede tardar 10 minutos, pero en la dirección contraria puede tardar 15 minutos. Estas mediciones diferentes pueden influir en que los puntos de demanda se asignen a determinadas instalaciones debido a los valores límite o, en los tipos de problemas en los que se distribuye la demanda, pueden influir en la cantidad de demanda capturada. Los cuerpos de bomberos normalmente miden de las instalaciones a los puntos de demanda, puesto que les preocupa el tiempo que se tarda en desplazarse desde la estación de bomberos (instalación) hasta la ubicación de la emergencia (punto de demanda). A la gerencia de una tienda minorista le interesa más el tiempo que tardan los compradores (puntos de demanda) en llegar a la tienda (instalación); por lo tanto, la gerencia de las tiendas generalmente mide de los puntos de demanda a las instalaciones. Dirección del viaje también determina el significado de cualquier hora de inicio que se proporciona. Consulte el parámetro Hora del día para obtener más información. | String |
Time_of_Day (Opcional) | La hora a la que empieza el viaje. Este parámetro no se tiene en cuenta a menos que Unidades de medida se base en tiempo. El valor predeterminado es sin hora ni fecha. Cuando no se especifica la Hora del día, el solucionador utiliza velocidades genéricas, que suelen tomarse de los límites de velocidad publicados. En el mundo real, el tráfico varía constantemente y, conforme cambia, fluctúan los tiempos de viaje entre las instalaciones y los puntos de demanda. Por consiguiente, indicar distintos valores de tiempo y fecha en varios análisis puede afectar la manera en que se asigne la demanda a las instalaciones y las instalaciones que se escojan en los resultados. La hora del día siempre indica una hora de inicio. Sin embargo, el viaje puede comenzar en instalaciones o puntos de demanda; depende del valor que se haya elegido para el parámetro Dirección del viaje. El parámetro Zona horaria para hora del día especifica si la fecha y la hora se refieren a UTC o a la zona horaria en la cual se encuentra la instalación o el punto de demanda. | Date |
Time_Zone_for_Time_of_Day (Opcional) | Especifica la zona horaria del parámetro Hora del día. El valor predeterminado es geográficamente local.
Independientemente del valor del parámetro Zona horaria para hora del día, si sus instalaciones y puntos de demanda se encuentran en varias zonas horarias la herramienta aplica las reglas siguientes:
| String |
UTurn_at_Junctions (Opcional) | Especifica la política de cambios de sentido en los cruces. Permitir cambios de sentido implica que el solucionador puede dar la vuelta en un cruce y regresar por la misma calle. Debido a que los cruces representan intersecciones de calles y callejones sin salida, los diferentes vehículos pueden ser capaces de dar la vuelta en algunos cruces, pero no en otros, depende de que el cruce sea una intersección o un callejón sin salida. Para dar cabida a esta situación, el parámetro de la política de cambios de sentido se especifica implícitamente por la cantidad de ejes que se conectan en el cruce, lo que se conoce como valencia de cruce. Los valores aceptables para este parámetro se enumeran a continuación; cada uno seguido de una descripción de su significado en términos de valencia de cruce.
Este parámetro se ignora a menos que el parámetro Modo de viaje esté establecido en Personalizado. | String |
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. La herramienta impone un límite de 250 puntos que se pueden añadir como barreras. Cuando se especifican las barreras de punto, se pueden definir propiedades para cada una de ellas, como su nombre o el tipo de barrera, mediante el uso de 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):
Additional_Time El tiempo de viaje agregado cuando se realiza el trazado poligonal de la barrera. Este campo solo se aplica a barreras con coste agregado. El valor de este campo debe ser mayor o igual que cero, y sus unidades son las mismas que las especificadas en el parámetro Unidades de medida. Additional_Distance La distancia agregada cuando se realiza el trazado poligonal de la barrera. Este campo solo se aplica a barreras con coste agregado. El valor de este campo debe ser mayor o igual que cero, y sus unidades son las mismas que las especificadas en el parámetro Unidades de medida. Additional_Cost El coste agregado cuando se realiza el trazado poligonal de la barrera. Este campo solo se aplica a barreras con coste agregado. 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):
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):
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 bordes 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 borde 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 a cada lado del eje (izquierdo y derecho) 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 Bearing y BearingTol también tienen valores. Sin embargo, la introducción de un valor NavLatency es opcional, incluso cuando hay valores en Bearing y BearingTol. NavLatency indica cuánto coste se espera que transcurra 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. | Feature Set |
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. La herramienta impone un límite en el número de calles que se pueden restringir usando el parámetro Barreras de línea. Aunque no existe un límite para el número de líneas que se pueden especificar como barreras de línea, el número combinado de calles que se intersecan con todas las líneas no puede ser superior a 500. 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. | Feature Set |
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. El servicio impone un límite en el número de calles que se pueden restringir usando el parámetro Barreras de polígono. Aunque no existe un límite para el número de polígonos que se pueden especificar como barreras de polígono, el número combinado de calles que se intersecan con todos los polígonos no puede ser superior a 2000. 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):
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 se aplica a barreras con coste escalado. 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 se aplica a barreras con coste escalado. 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 se aplica a barreras con coste escalado. | Feature Set |
Use_Hierarchy (Opcional) | Especifica si se usará la jerarquía para buscar la ruta más corta entre instalaciones y puntos de demanda.
La herramienta automáticamente vuelve a utilizar la jerarquía si la distancia en línea recta entre las instalaciones y los puntos de demanda es mayor que 50 millas (80,47 km), aunque haya definido este parámetro para que no utilice la jerarquía. | Boolean |
Restrictions [Restrictions,...] | Especifica las restricciones que respetará la herramienta a la hora de buscar las mejores rutas entre instalaciones y puntos de demanda. Una restricción representa una preferencia o un requisito de conducción. En la mayoría de los casos, las restricciones ocasionan la prohibición de carreteras. Por ejemplo, al usar la restricción Evitar carreteras con peaje, se generará una ruta que solo incluirá carreteras con peaje cuando sea necesario viajar por ellas para llegar a un incidente o a una instalación. Restricción de altura permite circular evitando cualquier altura que sea inferior a la altura de su vehículo. Si está transportando materiales corrosivos en el vehículo, utilizar la restricción Prohibidos todos los materiales peligrosos impide transportar los materiales en las carreteras en las que está marcado como ilegal hacerlo. Nota:Algunas restricciones requieren la especificación de un valor adicional para poder usarlas. Este valor se debe asociar con el nombre de la restricción y con un parámetro concreto creado para funcionar con la restricción. Puede identificar esas restricciones si sus nombres aparecen en la columna AttributeName del parámetro Valores de los parámetros de atributos. El campo ParameterValue se debe especificar en el Valores de los parámetros de atributos para que la restricción se use correctamente para encontrar carreteras transitables. Nota:Algunas restricciones solo se admiten en ciertos países. Su disponibilidad se indica por región en la lista siguiente. Para las restricciones con una disponibilidad limitada dentro de una región, puede determinar si están disponibles en un país concreto revisando la tabla de la sección Lista de países de Cobertura de análisis de red. Si un país tiene el valor Sí en la columna Atributos de logística, la restricción con disponibilidad de selección en la región se admite en ese país. Si se especifican nombres de restricción que no están disponibles en el país en el que se encuentran sus incidentes, el servicio pasa por alto las restricciones no válidas. El servicio también pasa por alto las restricciones cuando el valor del parámetro de atributos Uso de restricciones está comprendido entre 0 y 1 (consulte el parámetro Valor de parámetro de atributos). Prohíbe todas las restricciones cuando el valor del parámetro Uso de restricciones es mayor que 0. Nota:Los valores introducidos para este parámetro se ignoran a menos que el parámetro Modo de viaje esté establecido en Personalizado. La herramienta admite las siguientes restricciones:
| String |
Attribute_Parameter_Values (Opcional) | 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. Nota:Los valores introducidos para este parámetro se ignoran a menos que el parámetro Modo de viaje esté establecido en Personalizado. Si especifica el parámetro Valores de los parámetros de atributos de una clase de entidad, los nombres de los campos de la clase de entidad deben coincidir con los campos que se describen a continuación:
El parámetro Valores de los parámetros de atributos depende del parámetro Restricciones. El campo ParameterValue solo se usa si el nombre de la restricción se ha especificado como valor del parámetro Restricciones. En Valores de los parámetros de atributos, cada restricción (mostrada como AttributeName) tiene un valor de campo ParameterName, Uso de restricción, que especifica si la restricción prohíbe, evita o prefiere los viajes por las carreteras asociadas con la restricción, además de en qué medida las carreteras se evitan o tienen preferencia. El Uso de restricción ParameterName se puede asignar a cualquiera de los siguientes valores de cadena de caracteres o a los valores numéricos equivalentes que se muestran entre paréntesis:
En la mayoría de casos, puede usar el valor predeterminado, PROHIBITED, como valor de Uso de restricción si la restricción depende de una característica del vehículo como su altura. Sin embargo, en algunos casos, el valor de Uso de restricción depende de las preferencias de generación de rutas del usuario. Por ejemplo, la restricción Evitar carreteras con peaje tiene el valor predeterminado AVOID_MEDIUM para el atributo Uso de restricción. Esto significa que, cuando se utilice la restricción, la herramienta intentará circular fuera de las carreteras con peaje siempre que sea posible. AVOID_MEDIUM también indica lo importante que es evitar las carreteras con peaje al buscar la mejor ruta; tiene una prioridad media. Si se selecciona AVOID_LOW, se da una importancia menor a evitar los peajes, mientras que si se selecciona AVOID_HIGH se le da más importancia y, por lo tanto, es más aceptable que el servicio genere rutas más largas para evitar los peajes. Elegir PROHIBITED no permite viajar en las carreteras con peaje y hará imposible que una ruta viaje por cualquier parte de una carretera de peaje. Tenga en cuenta que evitar o prohibir carreteras con peaje, y evitando así los pagos de peaje, es el objetivo para algunos. En cambio, otros prefieren conducir en las carreteras con peaje porque evitar el tráfico es más valioso para ellos que el dinero gastado en los peajes. En el último caso, elija PREFER_LOW, PREFER_MEDIUM o PREFER_HIGH como valor de Uso de la restricción. Cuanto más alta sea la preferencia, más se apartará la herramienta de su camino para viajar por las carreteras asociadas con la restricción. | Record Set |
Allocation_Line_Shape (Opcional) | Especifica el tipo de entidades de línea que produce la herramienta. El parámetro acepta uno de los valores siguientes:
Sea cual sea el valor elegido para el parámetro Forma de línea de asignación, la ruta más corta siempre se determina minimizando el tiempo de viaje o la distancia de viaje; nunca usando la distancia en línea recta entre puntos de demanda e instalaciones. Es decir, este parámetro solo cambia las formas de las líneas de salida; no cambia el método de medición. | String |
Travel_Mode (Opcional) | El modo de transporte que se debe modelar en el análisis. Los modos de viaje se administran en ArcGIS Online y el administrador de su organización puede configurarlos para reflejar los flujos de trabajo de la organización. Debe especificar el nombre de un modo de viaje admitido con su organización. Para obtener una lista de los nombres de modos de viaje admitidos, use la misma conexión de servidor SIG que utilizó para acceder a esta herramienta y ejecute la herramienta GetTravelModes de la caja de herramientas Utilidades. La herramienta GetTravelModes agrega la tabla Supported Travel Modes a la aplicación. Cualquier valor del campo Travel Mode Name de la tabla Supported Travel Modes se puede especificar como entrada. También puede especificar el valor del campo Travel Mode Settings como entrada. Con ello se reduce el tiempo de ejecución de la herramienta, ya que esta no tiene que encontrar la configuración a partir del nombre del modo de viaje. El valor predeterminado, Personalizado, le permite configurar su propio modo de viaje usando los parámetros de modo de viaje personalizado (Giros en U en cruces, Utilizar jerarquía, Restricciones, Valores de los parámetros de atributos e Impedancia). Los valores predeterminados de los parámetros de modo de viaje personalizado se basan en viajes en coche. Puede elegir el modo Personalizado y establecer los parámetros de modo de viaje personalizado enumerados arriba 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 ciertos materiales peligrosos. Puede probar distintas configuraciones hasta conseguir los resultados de análisis que desee. Una vez que haya identificado la configuración de análisis, trabaje 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 ejecutar el análisis con la misma configuración. Precaución:Al elegir el modo Personalizado, los valores que establezca para los parámetros del modo de viaje personalizado se incluirán en el análisis. Si se especifica otro modo de viaje definido por su organización, se pasará por alto cualquier valor que haya establecido para los parámetros del modo de viaje personalizado; la herramienta los sobrescribirá con valores del modo de viaje especificado. | String |
Impedance (Opcional) | Especifica la impedancia, que es un valor que representa el esfuerzo o el coste de viajar a lo largo de segmentos de carretera o en otras partes de la red de transporte. El tiempo de viaje es una impedancia: un coche puede tardar 1 minuto en viajar un kilómetro a lo largo de una carretera vacía. Los tiempos de viaje pueden variar según el modo de viaje: un peatón puede tardar más de 20 minutos en caminar el mismo kilómetro, por lo que es importante elegir la impedancia correcta para el modo de viaje que se está modelando. La distancia de viaje también puede ser una impedancia; la longitud de una carretera en kilómetros se puede considerar impedancia. En este sentido, la distancia de viaje es la misma para todos los modos: un kilómetro para un peatón es, igualmente, un kilómetro para un coche. (Lo que puede cambiar son los caminos por los que los diferentes modos tienen permitido viajar, lo cual afecta a la distancia entre puntos, que se modela mediante la configuración del modo de viaje.) Precaución:El valor introducido para este parámetro se ignora a menos que el parámetro Modo de viaje esté establecido en Personalizado, que es el valor predeterminado.
Si elige una impedancia basada en el tiempo, como TravelTime, TruckTravelTime, Minutes, TruckMinutes o WalkTime, el parámetro Unidades de medición se debe configurar con un valor basado en el tiempo. Si prefiere una impedancia basada en la distancia, como Miles o Kilometers, las Unidades de medición deben estar basadas en la distancia. Heredado:Los valores de impedancia de Tiempo de conducción, Tiempo en camión, Tiempo de recorrido a pie y Distancia de viaje ya no se admiten y se eliminarán en versiones futuras. Si utiliza uno de estos valores, la herramienta usa el valor del parámetro Impedancia de tiempo para valores basados en el tiempo y del parámetro Impedancia de distancia para valores basados en la distancia. | String |
Save_Output_Network_Analysis_Layer (Opcional) | Especifica la configuración del análisis se guardará como un archivo de capa de análisis de red. No puede trabajar directamente con este archivo, aunque lo abra en una aplicación de ArcGIS Desktop, por ejemplo, ArcMap. Se debe enviar al Soporte técnico de Esri para diagnosticar la calidad de los resultados devueltos por la herramienta.
| Boolean |
Overrides (Opcional) | Ajustes adicionales que pueden influir en el comportamiento del solucionador al buscar soluciones para problemas de análisis de red. Se debe especificar el valor para este parámetro en la notación de objetos JavaScript (JSON). Por ejemplo, un valor válido tiene el siguiente formato: {"overrideSetting1" : "value1", "overrideSetting2" : "value2"}. El nombre del parámetro de invalidación siempre está incluido entre comillas dobles. Los valores pueden ser un número, operador booleano o cadena de caracteres. El valor predeterminado para este parámetro es ningún valor, lo que indica que no se debe invalidar ningún parámetro del solucionador. Las invalidaciones son parámetros avanzados que se deben utilizar solamente después de un análisis cuidadoso de los resultados obtenidos antes y después de aplicar los parámetros. Para obtener una lista de los parámetros de invalidación admitidos para cada solucionador y sus valores admisibles, póngase en contacto con el Soporte técnico de Esri. | String |
Time_Impedance (Opcional) | La impedancia basada en el tiempo es un valor que representa el tiempo de viaje a lo largo de segmentos de carretera o en otras partes de la red de transporte. Nota:Si la impedancia del modo de viaje, según se especifica con el parámetro Impedancia, está basada en el tiempo, los valores de los parámetros Impedancia de tiempo e Impedancia deben ser los mismos. De lo contrario, el servicio devolverá un error.
| String |
Distance_Impedance (Opcional) | La impedancia basada en la distancia es un valor que representa la distancia de viaje a lo largo de segmentos de carretera o en otras partes de la red de transporte. Nota:Si la impedancia del modo de viaje, según se especifica con el parámetro Impedancia, está basada en la distancia, los valores de los parámetros Impedancia de distancia e Impedancia deben ser los mismos. De lo contrario, el servicio devolverá un error.
| String |
Output_Format (Opcional) | Especifica el formato en el que se crearán las entidades de salida.
Cuando se especifica un formato de salida basado en archivos, como Archivo JSON o Archivo GeoJSON, no se agregará ninguna salida a la visualización, puesto que la aplicación, por ejemplo, ArcMap o ArcGIS Pro, no puede dibujar el contenido del archivo de resultados. En cambio, el archivo de resultados se descarga en un directorio temporal en su equipo. En ArcGIS Pro, la ubicación del archivo descargado se puede determinar visualizando el valor del parámetro Archivo de resultados de salida en la entrada correspondiente a la ejecución de la herramienta en el historial de geoprocesamiento del proyecto. En ArcMap, la ubicación del archivo se puede determinar accediendo a la opción Copiar ubicación del menú de acceso directo del parámetro Archivo de resultados de salida de la entrada correspondiente a la ejecución de la herramienta en la ventana Resultados de geoprocesamiento. | String |
Salida derivada
Nombre | Explicación | Tipo de datos |
Solve_Succeeded | Determina si el servicio identificó correctamente las mejores instalaciones. | Booleano |
Output_Allocation_Lines | Ofrece acceso a las líneas que conectan puntos de demanda con las instalaciones a las que fueron asignados. Se hace referencia a esas líneas en la documentación como líneas de asignación. Dichas líneas de asignación incluyen datos sobre la demanda asignada desde cada punto de demanda a la instalación asociada. | Conjunto de entidades |
Output_Facilities | Proporciona acceso a las instalaciones elegidas, requeridas y competidoras, así como a cualquier instalación candidata no elegida. | Conjunto de entidades |
Output_Demand_Points | Ofrece acceso a los puntos de demanda que han participado en los análisis: tanto los que se asignaron a instalaciones como los que se dejaron sin asignar. | Conjunto de entidades |
Output_Network_Analysis_Layer | La capa de análisis de red con propiedades configuradas en los parámetros de la herramienta que se puede utilizar para análisis posteriores o para depurar el mapa. | Archivo |
Output_Result_File | Un archivo .zip que contiene los resultados del análisis, con uno o varios archivos para cada salida. El formato de los archivos individuales viene especificado por el parámetro Formato de salida. | Archivo |
Muestra de código
El siguiente script de Python muestra cómo usar la herramienta Solve Location Allocation en un script.
"""This example shows how to choose the best locations for stores that can service the maximum number of customers."""
import sys
import time
import arcpy
# Change the username and password applicable to your own ArcGIS Online account
username = "<your user name>"
password = "<your password>"
la_service = "https://logistics.arcgis.com/arcgis/services;World/LocationAllocation;{0};{1}".format(username, password)
# Add the geoprocessing service as a toolbox.
# Check https://pro.arcgis.com/en/pro-app/arcpy/functions/importtoolbox.htm for
# other ways in which you can specify credentials to connect to a geoprocessing service.
arcpy.ImportToolbox(la_service)
# Set the variables to call the tool
facilities = "C:/data/Inputs.gdb/Stores"
demand_points = "C:/data/Inputs.gdb/Customers"
output_lines = "C:/data/Results.gdb/AllocationLines"
output_facilities = "C:/data/Results.gdb/Facilities"
output_demand_points = "C:/data/Results.gdb/DemandPoints"
# Call the tool to find two best store locations that can reach a maxmimum number of customers
# with ten minutes of drive time
result = arcpy.SolveLocationAllocation_LocationAllocation(facilities, demand_points, "Minutes",
Problem_Type="Maximize Attendance",
Number_of_Facilities_to_Find=2,
Default_Measurement_Cutoff=10.0)
arcpy.AddMessage("Running the analysis with result ID: {}".format(result.resultID))
# Check the status of the result object every 1 second until it has a
# value of 4 (succeeded) or greater
while result.status < 4:
time.sleep(1)
# print any warning or error messages returned from the tool
result_severity = result.maxSeverity
if result_severity == 2:
arcpy.AddError("An error occured when running the tool")
arcpy.AddError(result.getMessages(2))
sys.exit(2)
elif result_severity == 1:
arcpy.AddWarning("Warnings were returned when running the tool")
arcpy.AddWarning(result.getMessages(1))
# Store the allocation lines that connect customers to allocated stores, the chosen stores,
# and the allocated customer locations to a geodatabase
result.getOutput(1).save(output_lines)
arcpy.analysis.Select(result.getOutput(2), output_facilities, "DemandCount > 0")
result.getOutput(3).save(output_demand_points)
El siguiente ejemplo muestra cómo realizar un análisis de ubicación y asignación con un modo de viaje personalizado para camiones.
"""This example shows how to perform a location-allocation analysis using a custom travel mode for trucks."""
import sys
import time
import json
import arcpy
username = "<your user name>"
password = "<your password>"
la_service = "https://logistics.arcgis.com/arcgis/services;World/LocationAllocation;{0};{1}".format(username, password)
# Add the geoprocessing service as a toolbox.
arcpy.ImportToolbox(la_service)
# Set the variables to call the tool
facilities = "C:/data/Inputs.gdb/Stores"
demand_points = "C:/data/Inputs.gdb/Customers"
output_lines = "C:/data/Results.gdb/AllocationLines"
output_facilities = "C:/data/Results.gdb/Facilities"
output_demand_points = "C:/data/Results.gdb/DemandPoints"
# Change to moderately prefer trucking roads for the Trucking Time travel mode
# used for the analysis
portal_url = "https://www.arcgis.com"
arcpy.SignInToPortal(portal_url, username, password)
travel_mode_list = arcpy.na.GetTravelModes(portal_url)
tt = travel_mode_list["Trucking Time"]
tt_json = str(tt)
tt_dict = json.loads(tt_json)
for attr_param in tt_dict["attributeParameterValues"]:
if attr_param['attributeName'] == 'Use Preferred Truck Routes' and attr_param['parameterName'] == 'Restriction Usage':
attr_param['value'] = 'PREFER_MEDIUM'
travel_mode = json.dumps(tt_dict)
# Call the tool
result = arcpy.SolveLocationAllocation_LocationAllocation(facilities, demand_points, "Minutes",
Problem_Type="Maximize Attendance",
Number_of_Facilities_to_Find=2,
Default_Measurement_Cutoff=10.0,
Travel_Mode=travel_mode)
# Check the status of the result object every 1 second until it has a
# value of 4 (succeeded) or greater
while result.status < 4:
time.sleep(1)
# print any warning or error messages returned from the tool
result_severity = result.maxSeverity
if result_severity == 2:
arcpy.AddError("An error occured when running the tool")
arcpy.AddError(result.getMessages(2))
sys.exit(2)
elif result_severity == 1:
arcpy.AddWarning("Warnings were returned when running the tool")
arcpy.AddWarning(result.getMessages(1))
# Store the allocation lines that connect customers to allocated stores, the chosen stores,
# and the allocated customer locations to a geodatabase
result.getOutput(1).save(output_lines)
arcpy.analysis.Select(result.getOutput(2), output_facilities, "DemandCount > 0")
result.getOutput(3).save(output_demand_points)