Existen varias herramientas en la caja de herramientas GeoAnalytics Tools que le permiten aplicar una expresión.
- Expresiones de zona de influencia en Crear zonas de influencia
- Expresiones de zona de influencia en Reconstruir recorridos
- Condiciones de unión en Unir entidades
- Las condiciones de incidente en Detectar incidentes
Más información sobre las expresiones en Detectar incidentes
- Calcular valores de campo en Calcular campo
Las GeoAnalytics Tools que utilizan expresiones tienen distintos usos, así como limitaciones sobre las expresiones que se pueden aplicar. En 10.6.1, todas las expresiones utilizadas en ArcGIS GeoAnalytics Server admiten Arcade.
Más información sobre las Funciones de Arcade
Expresiones en Detectar incidentes
En la herramienta Detectar incidentes se utilizan expresiones para especificar las condiciones inicial y final. Una condición de Detectar incidentes siempre debe dar un resultado true o false. Use una condición para comprobar si una entidad se debería incluir en un incidente. Las condiciones se prueban con cada entidad para determinar qué entidades son incidentes. Los cálculos se realizan cuando se ejecuta el análisis en su ArcGIS GeoAnalytics Server. En las secciones de abajo se incluyen ejemplos de expresiones que se pueden utilizar.
Ejemplos de operadores matemáticos y funciones
Las expresiones pueden procesar números matemáticamente. La siguiente tabla recoge una muestra de las operaciones disponibles.
Más información sobre operaciones y funciones matemáticas disponibles en Arcade
Operador | Explicación | Ejemplo | Resultado |
---|---|---|---|
a + b | a más b. | fieldname contiene un valor de 1,5 $feature["fieldname"] + 2.5 | 4.0 |
a - b | a menos b. | fieldname contiene un valor de 3,3 $feature["fieldname"]- 2.2 | 1.1 |
a * b | a por b. | fieldname contiene un valor de 2,0 $feature["fieldname"] * 2.2 | 4.4 |
a/b | a dividido por b. | fieldname contiene un valor de 4,0 $feature["fieldname"] / 1.25 | 3.2 |
abs( a ) | Devuelve el valor absoluto (positivo) de a. | fieldname contiene un valor de -1,5 abs($feature["fieldname"]) | 1.5 |
log( a ) | Devuelve el logaritmo natural (base e) de a. | fieldname contiene un valor de 1 log($feature["fieldname"]) | 0 |
sin( a ) | Devuelve el seno trigonométrico de a. Se presupone que la entrada es un ángulo en radianes. | fieldname contiene un valor de 1,5707 sin($feature["fieldname"]) | 1 |
cos( a ) | Devuelve el coseno trigonométrico de a. Se presupone que la entrada es un ángulo en radianes. | fieldname contiene un valor de 0 cos($feature["fieldname"]) | 1 |
tan( a ) | Devuelve la tangente de a. Se presupone que la entrada es un ángulo en radianes. | fieldname contiene un valor de 0 tan($feature["fieldname"]) | 0 |
sqrt( a ) | Devuelve la raíz cuadrada de a. | fieldname contiene un valor de 9 sqrt($feature["fieldname"]) | 3 |
min( a, b ) | Devuelve el número que tenga el valor más bajo de a y b. | fieldname contiene un valor de 1,5 y un valor de -3 min($feature["fieldname"], -3) | -3 |
max( a, b ) | Devuelve el número que tenga el valor más alto de a o b. | fieldname1 contiene un valor de 1,5 y fieldname2 contiene un valor de -3 max($feature["fieldname1"], $feature["fieldname2"]) | 1.5 |
constrain(<value>,<low>,<high>) | Devuelve el valor de entrada si está contenido en los límites de la restricción. Si el valor de entrada es menor que el valor bajo, devuelve el valor bajo. Si el valor de entrada es mayor que el valor alto, devuelve el valor alto. | constrain($feature["distance"], 0, 10) constrain($feature['Store dist'], 6, distance) | Devuelve 0 si distance es menor que 0, 10 si distance es mayor que 10 y distance en los demás casos. Devuelve 6 si Store dist es menor que 6, distance si Store dist es mayor que distance y Store dist en los demás casos. |
Ejemplo de multiplicación para una condición que detecte un incidente.
$feature["Distance"] * 2 > 50
Ejemplos de la función Texto
Las expresiones Detectar incidentes pueden procesar textos. La siguiente tabla recoge una muestra de las operaciones disponibles.
Más información sobre las funciones de texto disponibles en Arcade
Operador | Explicación | Ejemplo | Resultado |
---|---|---|---|
concatenate( <values>, <separator>) | Concatena valores juntos y devuelve un cadena de caracteres.
| fieldname contiene un valor de GeoAnalytics Concatenate ([$features["fieldname"], "is", "great!"], ' ') | ¡GeoAnalytics es genial! |
find(<searchText>, <text>, <startPos>) | Busca una cadena de caracteres dentro de otra cadena de caracteres. Los comodines no se admiten.
| fieldname1 contiene un valor de 14NorthStreet y fieldname2 contiene un valor de North find($feature["fieldname2"], $feature["fieldname1"]) | 2 |
lower(<value>) | Forma una cadena de caracteres en minúscula.
| fieldname contiene un valor de GEOANALYTICS lower($feature["fieldname"]) | geoanálisis |
Ejemplo de texto utilizando find y lower.
find(("north"), lower("146NorthStreet")) == 2
Ejemplos de la función Fecha
Puede utilizar Detectar incidentes desde expresiones que usan fechas. La siguiente tabla recoge una muestra de las operaciones disponibles.
Más información sobre las funciones de fecha disponibles en Arcade
En Arcade, los valores de mes oscilan entre 0 (enero) y 11 (diciembre), los días entre 1 y 31, las horas entre 0 (12:00 a.m.) y 23 (11:00 p.m.), minutos y segundos entre 0 y 59 y las milésimas de segundo entre 0 y 999. Las fechas de Arcade devuelven los valores de tiempo en la ubicación de su GeoAnalytics Server.
Operador | Explicación | Ejemplo | Resultado |
---|---|---|---|
date( <value>, <month>, <day>, <hour>, <minute>) | Analiza un valor o conjunto de valores en una cadena de caracteres de fecha.
| fieldname contiene un valor de 1476987783555 Ejemplo 1: Date($features["fieldname"]) Ejemplo 2: Date(2017,0,14,0) Ejemplo 3: Date() | Ejemplo 1: 20 oct 2016 11:23:03 am Ejemplo 2: 14 ene 2017 12:00:00 am Ejemplo 3: devuelve la hora actual |
DateDiff(<date1>, <date2>, <units>) | Sustrae dos fechas y devuelve la diferencia en las unidades especificadas.
| Ejemplo 1: DateDiff(Date(2017,1,14,0), Date()) Ejemplo 2: DateDiff(Date(2017,1,14,0), Date(), "Years") | Los resultados pueden variar dependiendo de cuándo ejecute este comando. Ejemplo 1: -20532129137 Ejemplo 2: -0,6546783768647119 |
Year(<dateValue>) | Devuelve el año de la fecha dada.
| Ejemplo 1: fieldname es un campo de tipo Date con un valor de 09 Oct 2017 04:30:43 pm Year($feature["fieldname"]) Ejemplo 2: fieldname es un campo de cadena formateado como una cadena de caracteres ISO 8601 con un valor de 2012-09-27 | Ejemplo 1: 2017 Ejemplo 2: 2012 |
Operadores condicionales
Las declaraciones condicionales pueden usar los siguientes operadores:
Operador | Explicación | Ejemplo | Resultados |
---|---|---|---|
a > b a < b | a es mayor que b a es menor que b | 10 > 2 | Falso |
a >= b a <= b | a es mayor o igual que b a es menor o igual que b | abs(-10) >= 10 | Verdadero |
a != b | a no es igual que b | abs(-3) != -3 | Verdadero |
a == b | a es igual que b | abs(-5) == 5 | Verdadero |
<condition1> || <condition2> | Se cumplen la condición 1 o la condición 2. | (abs(-5) == 5) || (10 < 2) | Verdadero |
<condition1> && <condition2> | Se cumplen la condición 1 y la condición 2. | (abs(-5) == 5) && (10 < 2) | Falso |
Ejemplos de operadores lógicos
Además de operadores condicionales, se pueden utilizar operadores lógicos más avanzados con Detectar incidentes.
Más información sobre funciones lógicas disponibles en Arcade
Función | Explicación | Ejemplo | Resultado |
---|---|---|---|
iff(<condition>,<true value>,<false value>) | Devuelve un valor si una condición es true, y otro valor si la condición es false. <true value> y <false value> pueden ser lo siguiente:
| iff($feature["field1"] > $feature["field2"], $feature["field1"], 0) iff($feature["field1"] > $feature["field2"], iff($feature["field2"] = 0, $feature["field3"], $feature["field4"]), 0) | Devuelve field1 si field1 es mayor que field2 y 0 en los demás casos. Devuelve el resultado de la segunda función iff si field1 es mayor que field2 y 0 en los demás casos. |
when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>) | Evalúa una serie de expresiones sucesivamente hasta que una se evalúa como true.
| when(($feature["field1"] + 10) > 1, 1,($feature["field2"] + 10) > 2 , 2, $feature["field3"]) | Si field1 + 10 es mayor que 1, devuelve 1. Si no, compruebe si field2 + 10 es mayor que 2. Si lo es, devuelve 2. Si no, devuelve field3. |
decode(<conditional val> , <case1> , <result1>, <case2>, <result2>, ... <caseN>, <resultN>, <defaultValue> ) | La función decode evalúa una expresión y compara su valor con los parámetros subsiguientes. Si la expresión coincide, devuelve el valor del siguiente parámetro. Si ninguno coincide, existe la opción de que el último parámetro sea un valor de devolución predeterminado.
| decode($feature["field1"] + 3 , $feature["field1"], 1, $feature["field2"], 2, 0) | Compara la igualdad entre el conditional val field1 + 3 y case1 field1. Si true, devuelve 1. Si false, compara la igualdad entre field1 + 3 y field2. Si true, devuelve 2; de lo contrario, devuelve 0. |
Ejemplos que realizan seguimientos
Además, algunas GeoAnalytics Tools, tales como Detectar incidentes y Calcular campo, pueden utilizar ecuaciones que realicen seguimiento en Arcade.
Función | Explicación | Ejemplo | Resultado | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$track.field["fieldname"].history(<value1>) | Devuelve un conjunto de valores en el campo indicado para el índice de tiempo especificado.
| MyField tiene valores de [10, 20, 30, 40, 50, 60, 70, 80] ordenados secuencialmente. El valor 10 está en el índice 0, y el valor 80 está en el índice 7. Las expresiones se evalúan en cada índice, y los ejemplos definen el índice utilizado para los ejemplos. n representa el número de entidades en la secuencia, y k representa el índice que se está evaluando. Ejemplo 1:$track.field["MyField"].history(3)) Ejemplo 2:$track.field["MyField"].history(-3) Ejemplo 3:mean($track.field["MyField"].history(-2)) Ejemplo 4:$track.field["MyField"].history(-3)[0] | Cuando el Ejemplo 1 se evalúa en el índice k, devolverá un conjunto de valores en el índice 3 a través de k. Si evalúa en el índice 6 (70), se devuelve un conjunto de los valores en el índice [3, 4, 5, 6], de modo que el conjunto es [40, 50, 60, 70]. El Ejemplo 2 devuelve un conjunto de valores calculados como el índice k menos el valor dado menos 1 (k-2). Si esto se evalúa en el índice 6 (value = 70), se devuelven los valores de k-2, k-1 y k [50, 60, 70]. El Ejemplo 3 devuelve el valor medio de los valores en el índice k-1 y k. Si esto se evalúa en el índice 4 (value = 50), encontrará el valor medio de value 50 (índice 3) y value 60 (índice 4), que equivale a 65. Si tuviera que evaluarlo en el índice 7, el resultado sería el valor medio de 70 y 80, que equivale a 75. El Ejemplo 4 devuelve el primer elemento (índice 0) del conjunto creado en el Ejemplo 2, que es 50. | ||||||||||||
$track.field["fieldname"].history(<value1>, <value2>) | Devuelve un conjunto de valores desde index1 (<value1>) hasta index2 (<value2>). | MyField presenta valores de [10, 20, 30, 40, 50, 60, 70, 80] ordenados secuencialmente. 10 está en el índice 0, y 80 está en el índice 7. Para este ejemplo, las expresiones se evalúan en el índice 7 (80). Ejemplo 1:$track.field["MyField"].history(-3, -2)) Ejemplo 2:$track.field["MyField"].history(-5, -2)) | Ejemplo 1: [60] Ejemplo 2: [40, 50, 60] | ||||||||||||
$track.time.start | Calcula la hora de inicio de un recorrido en milisegundos desde epoch. | Con un recorrido que empieza el 2 de enero de 2017 $track.time.start | 1483315200000 | ||||||||||||
$track.time.duration | Calcula la duración de un recorrido en milisegundos desde el inicio hasta el período de tiempo actual. | El recorrido empieza el 2 de enero de 2017 y la fecha actual es el 4 de enero de 2017. $track.time.duration | 172800000 | ||||||||||||
$track.time.current | Calcula la hora actual de un recorrido. | Con una entidad que se produce el 3 de enero de 2017 a las 9:00 a.m. $track.time.current | 1483434000000 | ||||||||||||
$track.index | Devuelve el índice de tiempo de la entidad que se está calculando. | Calculando este valor en la primera entidad de un recorrido. $track.index | 0 | ||||||||||||
$track.T(<value>, "<units>") | Devuelve el tiempo de entidad más el tiempo creado con el <value> numérico y las <units> indicadas.
| Con una entidad del 2 de enero de 2017 a las 2:00 p.m. Ejemplo 1: $track.T(1, "hours") Ejemplo 2: $track.T(-2, "days") | Ejemplo 1: devuelve el 2 de enero a las 3:00 p.m.: 1483369200000 Ejemplo 2: devuelve el 31 de diciembre a las 2:00 p.m.: 1483192800000 | ||||||||||||
$track.field["fieldname"].window(<value1>, <value2>) | Devuelve un conjunto de valores en el campo indicado para el índice de tiempo especificado. La función de ventana le permite avanzar y retroceder en el tiempo. La expresión se evalúa en cada entidad del recorrido.
La función de ventana está disponible en ArcGIS Enterprise 10.6.1. | MyField tiene valores de [10, 20, 30, 40, 50] ordenados secuencialmente. La expresión se evalúa en cada entidad del recorrido. Los resultados que se devuelven incluyen la entidad de inicio, pero no la entidad de fin. Ejemplo 1:$track.field["MyField"].window(-1,2) Ejemplo 2:$track.field["MyField"].window(-2,0)[0] Ejemplo 3:$track.field["MyField"].window(0,3)[2] | Ejemplo 1: cuando se evalúa en cada entidad, la tabla muestra estos resultados.
Ejemplo 2: cuando se evalúa en el índice 2 (el valor es 30), devuelve 10. Ejemplo 3: cuando se evalúa en el índice 2 (el valor es 30), devuelve 50. | ||||||||||||
$track.geometry.window(<value1>, <value2>) | Devuelve un conjunto de valores que representan la geometría del índice de tiempo especificado. La función de ventana le permite avanzar y retroceder en el tiempo. La expresión se evalúa en cada entidad del recorrido.
La función de ventana está disponible en ArcGIS Enterprise 10.6.1. | MyField tiene valores de [10, 20, 30, 40, 50] ordenados secuencialmente. La geometría de las entidades es [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]. La expresión se evalúa en cada entidad del recorrido. Los resultados que se devuelven incluyen la entidad de inicio, pero no la entidad de fin. Ejemplo 1:$track.geometry.window(-1,2) Ejemplo 2: $track.geometry.window(0,1)[0] en un dataset de polilínea Ejemplo 3: $track.geometry.window(0,1)[0] en un dataset de polígono Ejemplo 4: encontrar el valor X del punto anterior $track.geometry.window(-1,0)[0]["x"] | Ejemplo 1: cuando se evalúa en cada entidad, la tabla muestra estos resultados.
Ejemplo 2: las polilíneas se devuelven en el formato [{"paths":[[[-180,-22.88],[-177.6,-23.6]],[[180,-18.099999999999994],[179.7,-18.4],[179.4,-18.7],[178.9,-18.9],[178.5,-19.3],[178.2,-19.7],[178.4,-20],[178.8,-20.2],[178.9,-21.8],[179,-22.2],[179.4,-22.7],[180,-22.88]],[[-178,-17],[-178.8,-17.3],[-179.2,-17.5],[-179.6,-17.8],[-179.9,-18],[-180,-18.099999999999994]]]}] Ejemplo 3: los polígonos se devuelven en el formato [{"rings":[[[-7882559.1197999995,6376090.883500002],[-7893142.474300001,6042715.216800004],[-8544018.775999999,6045361.0554000065],[-8544018.775999999,6376090.883500002],[-7882559.1197999995,6376090.883500002]]]}] Ejemplo 4: se evalúa en el índice 2 (el valor es 20): 1 | ||||||||||||
$track.window(<value1>, <value2>) | Devuelve un conjunto de valores que representan la geometría y todos los atributos del índice de tiempo especificado. La función de ventana le permite avanzar y retroceder en el tiempo.
La función de ventana está disponible en ArcGIS Enterprise 10.6.1. | MyField tiene valores de [10, 20, 30, 40, 50] ordenados secuencialmente, además de los campos objectID, globalID y instant_datetime. La geometría de las entidades es [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]. La expresión se evalúa en cada entidad del recorrido. Los resultados que se devuelven incluyen la entidad de inicio, pero no la entidad de fin. Ejemplo 1:$track.window(-1,0)[0] Ejemplo 2:geometry($track.window(-1,0)[0]["x"] | Ejemplo 1: cuando se evalúa en cada entidad, la tabla muestra estos resultados.
Ejemplo 2: se evalúa en el índice 2 (el valor es 20): 1 |