Resumen
Crea una capa que detecta entidades que cumplen una condición determinada.
Ilustración
Uso
La siguiente tabla describe la terminología de la herramienta Detectar incidentes:
Plazo Descripción Pista
Una secuencia de entidades que tenga la función de tiempo habilitada con el tipo de tiempo de instante. Las entidades están definidas para estar en la secuencia por un campo de identificación de recorrido y están ordenadas por el tiempo. Por ejemplo, una ciudad podría tener una flota de camiones quitanieves que registren su ubicación cada 10 minutos. El Id. del vehículo podría representar los diferentes recorridos.
Incidente
Entidades que cumplen una condición de interés.
Instante
Un único momento en el tiempo representado por una hora de inicio y sin hora de finalización. Las entradas de Detectar incidentes deben tener el tipo de tiempo de instante.
Intervalo
Una duración de tiempo representada por una hora de inicio y una hora de finalización.
Entidad de interés
Describe la entidad que se está analizando. Durante el análisis, se analizan todas las entidades.
Los incidentes son entidades que cumplen una condición específica.
Detectar incidentes creará una nueva salida. No modificará la entrada.
Detectar incidentes se puede completar en entidades de puntos, líneas o polígonos. La capa de entrada debe tener el tiempo habilitado con entidades que representen un instante en el tiempo.
Solo se utilizarán entidades de entrada que presenten una entrada de tiempo. Se excluirá cualquier entidad que no presente ninguna entrada de tiempo.
Los recorridos se representan mediante la combinación única de campos de recorrido. Por ejemplo, si se utilizan los campos flightID y Destination como identificadores de recorrido, las entidades [ID007, Solden] y [ID007, Tokyo] estarían separadas en dos recorridos, dado que tienen valores diferentes para el campo Destination.
Las condiciones se crean mediante expresiones de Arcade. La condición inicial es obligatoria; la condición final es opcional. Si solo aplica una condición inicial, el incidente comienza cuando la condición inicial se ha evaluado como verdadera y finaliza cuando la condición inicial se ha evaluado como falsa. Por ejemplo, si los valores en un recorrido son [0, 10, 15, 20, 40, 10, 12, -2, -12] y la condición inicial es $feature["values"] > 15, las entidades que son incidentes son aquellas con [True] y sería: [0: False, 10: False, 15: False, 20: True, 40: True, 10: False, 12: False, -2: False, -12: False]; solo los valores por encima de 15 son incidentes. Si aplica una condición final de $feature["values"] < 0, los resultados serían: [0: False, 10: False, 15: False, 20: True, 40: True, 10: True, 12: True, -2: False, -12: False]. En este ejemplo, el incidente comienza cuando se cumple la condición inicial y cada entidad secuencial es un incidente hasta que la condición final sea verdadera. Estos ejemplos se describen en la siguiente tabla:
Posición 1 2 3 4 5 6 7 8 9 Valor
0
10
15
20
40
10
12
-2
-12
Inicial: $feature["values"] > 15 y sin Final
False
False
False
True
True
False
False
False
False
Inicial: $feature["values"] > 15 y Final: $feature["values"] < 0
False
False
False
True
True
True
True
False
False
Aplicar segmentos de intervalos de tiempo realiza un seguimiento en un intervalo definido. Por ejemplo, si establece el límite de intervalo de tiempo en 1 día, a partir de las 9:00 AM del 1 de enero de 1990, cada recorrido se truncará a las 9:00 AM cada día. Esta división acelera el tiempo de procesamiento, ya que crea recorridos más pequeños para el análisis. Si a su análisis le conviene dividir por un límite de intervalo de tiempo recurrente, le recomendamos que lo haga para procesar big data.
Las condiciones se crean mediante expresiones de Arcade y pueden realizar seguimiento. Consulte Expresiones de Arcade en las herramientas de GeoAnalytics Desktop para obtener más información.
Un recorrido puede tener varios incidentes.
Las entidades de salida recuperarán los campos en la entrada, así como los siguientes campos adicionales:
- IncidentID: un Id. único dado a toda entidad que sea un incidente.
- IncidentStatus: un campo de cadena de caracteres que representa el estatus de un incidente. El valor será null si la entidad no es un incidente, Started si la entidad es el primer incidente que cumple la condición de inicio, OnGoing si la entidad es todavía un incidente y Ended cuando una entidad ya no sea un incidente. Un solo recorrido puede tener varios segmentos de incidentes. Por ejemplo, un recorrido con valores [0, 10, 15, 20, 40, 10, 12, -2, -12] y una condición inicial de $feature["values"] > 15 resultará en valores IncidentStatus de [0: null, 10: null, 15: null, 20: Started, 40: OnGoing, 10: Ended, 12: null, -2: null, -12: null].
- IncidentDuration: el tiempo, en milésimas de segundo, en el que ocurre un incidente. Se calcula como la diferencia entre la entidad de interés y la entidad que comenzó el incidente.
- Instant_Datetime: la hora a la que ocurre una entidad.
Las entidades se ordenan secuencialmente en el tiempo por recorrido. Comenzando desde la primera entidad, la condición inicial se evalúa hasta que sea verdadera. Una vez que una entidad cumple la condición inicial, las siguientes entidades se evalúan hasta que la condición de inicio sea falsa (si no se especifica ninguna condición final) o hasta que la condición final sea verdadera (si se especifica una condición final). Una vez que se cumple esa condición, el incidente termina y el proceso comienza de nuevo. Puede haber varios segmentos de incidentes en un recorrido individual. Por ejemplo, con un recorrido con los valores [10, 20, 30, 40, 50, 10, 20, 30, 40, 50, 10, 20] y una condición inicial de $feature["values"] > 20, habría dos segmentos de incidentes [10: null, 20: null, 30: Started, 40: OnGoing, 50: OnGoing, 10: Ended, 20: null, 30: Started, 40: OnGoing, 50: OnGoing, 10: Ended, 20: null].
La duración de un incidente se calcula en milésimas de segundo como la hora de la entidad menos el comienzo de un incidente. La duración solo se calcula si la entidad tiene un estatus de Started, OnGoing o Ended. La duración de una entidad con el estatus de Started es siempre 0.
Es posible mejorar el rendimiento de la herramienta Detectar incidentes realizando una o varias de las siguientes acciones:
- Defina el entorno de extensión para analizar únicamente datos de interés.
- Genere como salida únicamente las entidades de incidentes.
- Dividida los recorridos con el parámetro División de límite de tiempo.
- Utilice datos locales en los que se ejecute el análisis.
Esta herramienta de geoprocesamiento se basa en Spark. El análisis se completa en su equipo de escritorio utilizando varios núcleos en paralelo. Consulte Consideraciones acerca de las herramientas de GeoAnalytics Desktop para obtener más información acerca de la ejecución de análisis.
Al ejecutar herramientas de GeoAnalytics Desktop, el análisis se completa en su equipo de escritorio. Para un rendimiento óptimo, los datos deben estar disponibles en su escritorio. Si utiliza una capa de entidades alojada, se recomienda utilizar ArcGIS GeoAnalytics Server. Si sus datos no están almacenados localmente, se tardará más tiempo en ejecutar una herramienta. Para utilizar ArcGIS GeoAnalytics Server con el fin de realizar un análisis, consulte GeoAnalytics Tools.
Sintaxis
arcpy.gapro.DetectIncidents(input_layer, output, track_fields, start_condition, {end_condition}, {output_mode}, {time_boundary_split}, {time_boundary_reference})
Parámetro | Explicación | Tipo de datos |
input_layer | Las entidades de entrada que contienen incidentes potenciales. | Table View |
output | Un dataset de salida nuevo que contiene incidentes. | Feature Class;Table |
track_fields [track_fields,...] | Uno o varios campos que se utilizarán para identificar recorridos únicos. | Field |
start_condition | La condición que se utilizará para identificar incidentes. Las expresiones están escritas en Arcade y pueden incluir los operadores [+ - * / ] y varios campos. | Calculator Expression |
end_condition (Opcional) | La condición que se utilizará para terminar incidentes. Si no se especifica ninguna condición final, los incidentes terminarán cuando la condición inicial ya no sea verdadera. | Calculator Expression |
output_mode (Opcional) | Especifica las entidades que se devolverán.
| String |
time_boundary_split (Opcional) | Un intervalo de tiempo en el que dividir los datos de entrada para el análisis. Un límite de tiempo permite analizar los valores dentro de un intervalo de tiempo definido. Por ejemplo, si utiliza un límite de tiempo de 1 día y establece la referencia de límite de tiempo en el 1 de enero de 1980, los recorridos se dividirán al comienzo de cada día. | Time Unit |
time_boundary_reference (Opcional) | El tiempo de referencia utilizado para dividir los datos de entrada para el análisis. Se crearán límites de tiempo para todo el intervalo de los datos y no es necesario que el tiempo de referencia se encuentre en el comienzo. Si no se especifica ningún tiempo de referencia, se utilizará el 1 de enero de 1970. | Date |
Muestra de código
El siguiente script de la ventana de Python muestra cómo utilizar la herramienta DetectIncidents.
#-------------------------------------------------------------------------------
# Name: DetectIncidents.py
# Description: Detect Incidents when wind speed is greater than 100 miles per hour
# Import system modules
import arcpy
arcpy.env.workspace = "C:/data/Weather.gdb"
# Set local variables
inFeatures = "Hurricanes"
out = "HurricaneTracks_Incidents"
trackIdentifier = "STAGE"
start_condition = "$feature['WINDSPEED'] > 100"
# Execute Reconstruct Tracks
arcpy.gapro.DetectIncidents(inFeatures, out, trackIdentifier, calcExpression)
Entornos
Información de licenciamiento
- Basic: No
- Standard: No
- Advanced: Sí