Las siguientes herramientas de la caja de herramientas GeoAnalytics Tools le permiten aplicar una expresión:
- Crear zonas de influencia para expresiones de zona de influencia.
- Reconstruir recorridos para expresiones de zona de influencia.
- Entidades de unión para condiciones de unión.
- Detectar incidentes para condiciones de incidentes.
Más información sobre las expresiones en Detectar incidentes
- Calcular campo para calcular valores de campo.
Las GeoAnalytics Tools que utilizan expresiones tienen distintos objetivos, así como limitaciones sobre las expresiones que se pueden aplicar. En ArcGIS 10.6, todas las expresiones utilizadas en GeoAnalytics admiten Arcade.
Más información sobre las funciones de Arcade
Reconstruir recorridos y Crear zonas de influencia
Las expresiones de zona de influencia se usan en las herramientas Reconstruir recorridos y Crear zonas de influencia.
Los tamaños de las zonas de influencia se suelen introducir utilizando valores constantes o de campo. No obstante, la introducción de valores no es la única forma en la que puede especificar el tamaño de una zona de influencia utilizando GeoAnalytics Tools. En algunos casos, puede que desee realizar un cálculo matemático para establecer el tamaño de la zona de influencia. El cálculo se aplica a cada entidad analizada. Los cálculos se realizan cuando se ejecuta el análisis en su ArcGIS GeoAnalytics Server.
En las siguientes secciones se incluyen ejemplos de expresiones de zona de influencia.
Ejemplos de operadores matemáticos y funciones
Las expresiones de zona de influencia procesan 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 el valor 1,5. $feature["fieldname"] + 2.5 | 4.0 |
a - b | a menos b. | fieldname contiene el valor 3,3. $feature["fieldname"]- 2.2 | 1.1 |
a * b | a por b. | fieldname contiene el valor 2,0. $feature["fieldname"] * 2.2 | 4.4 |
a/b | a dividido por b. | fieldname contiene el valor 4,0. $feature["fieldname"] / 1.25 | 3.2 |
abs( a ) | Devuelve el valor absoluto (positivo) de a. | fieldname contiene el valor -1,5. abs($feature["fieldname"]) | 1.5 |
log( a ) | Devuelve el logaritmo natural (base e) de a. | fieldname contiene el valor 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 el valor 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 el valor 0. cos($feature["fieldname"]) | 1 |
tan( a ) | Devuelve la tangente de a. Se presupone que la entrada es un ángulo en radianes. | fieldname contiene el valor 0. tan($feature["fieldname"]) | 0 |
sqrt( a ) | Devuelve la raíz cuadrada de a. | fieldname contiene el valor 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 el valor 1,5 y el valor -3. min($feature["fieldname"], -3) | -3 |
max( a, b ) | Devuelve el número que tenga el valor más alto entre a y b. | fieldname1 contiene el valor 1,5, y fieldname2 contiene el valor -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 expresión de zona de influencia
$feature["Distance"] * 2
Ejemplos de la función Como distancia
Las funciones de as distance proyectan valores numéricos en una distancia lineal que, a continuación, se puede utilizar en una expresión matemática. En las herramientas Reconstruir recorridos y Crear zonas de influencia se pueden utilizar las funciones de as distance. Si se utiliza un valor numérico sin una función de as distance, se asume que la unidad se expresará en metros.
Función | Explicación | Ejemplo | Resultado |
---|---|---|---|
as_meters( <valor> ) | Aplica un cálculo presuponiendo que los valores de entrada están en metros. | as_meters( $feature["fieldname"] ) as_meters(150) | Los resultados se incluyen en una zona de influencia de 150 metros. |
as_kilometers( <valor> ) | Aplica un cálculo presuponiendo que los valores de entrada están en kilómetros. | as_kilometers( $feature["fieldname"] ) as_kilometers(150) | Los resultados se incluyen en una zona de influencia de 150 kilómetros. |
as_feet( <valor> ) | Aplica un cálculo presuponiendo que los valores de entrada están en pies. | as_feet( $feature["fieldname"] ) as_feet(150) | Los resultados se incluyen en una zona de influencia de 150 pies. |
as_yards( <valor> ) | Aplica un cálculo presuponiendo que los valores de entrada están en yardas. | as_yards( $feature["fieldname"] ) as_yards(150) | Los resultados se incluyen en una zona de influencia de 150 yardas. |
as_nautical_miles( <valor> ) | Aplica un cálculo presuponiendo que los valores de entrada están en millas náuticas. | as_nautical_miles( $feature["fieldname"] ) as_nautical_miles(150) | Los resultados se incluyen en una zona de influencia de 150 millas náuticas. |
as_miles( <valor> ) | Aplica un cálculo presuponiendo que los valores de entrada están en millas. | as_miles( $feature["fieldname"] ) as_miles(150) | Los resultados se incluyen en una zona de influencia de 150 millas. |
Para cada entidad, multiplique el campo Distance, presuponiendo que está en kilómetros, y sume 10 metros para una expresión de zona de influencia.
as_kilometers($feature["Distance"]) * 3 + as_meters(10)
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 | False |
a >= b a <= b | a es mayor o igual que b a es menor o igual que b | abs(-10) >= 10 | True |
a != b | a no es igual que b | abs(-3) != -3 | True |
a == b | a es igual que b | abs(-5) == 5 | True |
<condition1> || <condition2> | Se cumplen la condición 1 o la condición 2. | (abs(-5) == 5) || (10 < 2) | True |
<condition1> && <condition2> | Se cumplen la condición 1 y la condición 2. | (abs(-5) == 5) && (10 < 2) | False |
Ejemplo de una expresión de zona de influencia en la que se utilizan funciones avanzadas y condiciones
iff(field1 > field2, iff(field2 = 0, field3, field4), 0)
Ejemplo de multiplicación para una condición de unión
iff(field1 > field2, iff(field2 = 0, field3, field4), 0) > $join["Distance"] * 2
Ejemplos de operadores lógicos
Además de los operadores condicionales, se pueden utilizar operadores lógicos más avanzados para crear zonas de influencia, como se muestra en la siguiente tabla.
Más información sobre las funciones lógicas disponibles en Arcade
Función | Explicación | Ejemplo | Resultado |
---|---|---|---|
iif(<condition>,<true value>,<false value>) | Devuelve un valor si una condición es true y devuelve otro valor si esa condición es false. <true value> y <false value> pueden ser lo siguiente:
| iif($feature["field1"] > $feature["field2"], $feature["field1"], 0) iif($feature["field1"] > $feature["field2"], iif($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 iif 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 en orden hasta que una es 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 es así, devuelve 2. Si no, devuelve field3. |
decode(<conditional val> , <case1> , <result1>, <case2>, <result2>, ... <caseN>, <resultN>, <defaultValue> ) | Evalúa una expresión y compara su valor con los parámetros siguientes. 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 valor condicional field1 + 3 y case1 field1. Si es true, devuelve 1. Si es false, compara la igualdad entre field1 + 3 y field2. Si es true, devuelve 2; de lo contrario, devuelve 0. |
Ejemplos con seguimiento
Reconstruir recorridos puede utilizar ecuaciones que realicen seguimiento en Arcade, como se muestra en la siguiente tabla:
Función | Explicación | Ejemplo | Resultado | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TrackStartTime() | Calcula la hora de inicio de un recorrido en milisegundos desde epoch. | Con un recorrido que empieza el 2 de enero de 2017. TrackStartTime() | 1483315200000 | ||||||||||||
TrackDuration() | 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. TrackDuration() | 172800000 | ||||||||||||
TrackCurrentTime() | 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. TrackCurrentTime() | 1483434000000 | ||||||||||||
TrackIndex | Devuelve el índice de tiempo de la entidad que se está calculando. | Calculando este valor en la primera entidad de un recorrido. TrackIndex | 0 | ||||||||||||
TrackFieldWindow(<fieldName>, <startIndex>, <endIndex>) | 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.
| MyField tiene valores ordenados secuencialmente de [10, 20, 30, 40, 50]. 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: TrackFieldWindow("MyField,-1,2) Ejemplo 2: TrackFieldWindow("MyField,-2,0)[0] Ejemplo 3: TrackFieldWindow("MyField,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. | ||||||||||||
TrackGeometryWindow(<startIndex>, <endIndex>) | 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.
| MyField tiene valores ordenados secuencialmente de [10, 20, 30, 40, 50]. 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: TrackGeometryWindow(-1,2) Ejemplo 2: TrackGeometryWindow(0,1)[0] en un dataset de polilínea Ejemplo 3: TrackGeometryWindow(0,1)[0] en un dataset de polígono Ejemplo 4: encontrar el valor X del punto anterior TrackGeometryWindow(-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 30): 2 | ||||||||||||
TrackWindow(<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.
| MyField tiene valores de ordenados secuencialmente de [10, 20, 30, 40, 50], 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: TrackWindow(-1,0)[0] Ejemplo 2: geometry(TrackWindow(-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 30): 2 |
Utilice las siguientes expresiones de rastreo para calcular distancia, velocidad y aceleración en rastreos.
Todos los cálculos de la distancia se calculan en metros, la velocidad en metros por segundo y la aceleración en metros por segundo cuadrado. Las distancias se miden utilizando distancias geodésicas.
Función | Explicación |
---|---|
TrackCurrentDistance() | La suma de las distancias recorridas entre observaciones de la primera observación a la actual. |
TrackDistanceAt(valor) | La suma de las distancias recorridas entre observaciones de la primera observación a la actual más el valor dado. |
TrackDistanceWindow(valor1, valor2) | Las distancias entre el primer valor (inclusivo) y el último valor (exclusivo) en una ventana sobre la observación actual (0). |
TrackCurrentSpeed() | La velocidad entre la observación anterior y la observación actual. |
TrackSpeedAt(valor1) | La velocidad en la observación en relación con la observación actual. Por ejemplo, en el valor 2, es la velocidad en la observación dos observaciones después de la observación actual. |
TrackSpeedWindow(valor1, valor2) | Los valores de velocidad entre el primer valor (inclusivo) y el último valor (exclusivo) en una ventana alrededor de la observación actual (0). |
TrackCurrentAcceleration() | La aceleración entre la observación anterior y la observación actual. |
TrackAccelerationAt(valor1) | La aceleración en la observación en relación con la observación actual. |
TrackAccelerationWindow(valor1, valor2) | Los valores de aceleración entre el primer valor (inclusivo) y el último valor (exclusivo) en una ventana alrededor de la observación actual (0). |
Los cálculos de ejemplo para la distancia, velocidad y aceleración utilizan ejemplos de la siguiente imagen:
Función | Resultado de ejemplo | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TrackCurrentDistance() |
| ||||||||||||||
TrackDistanceAt(2) |
| ||||||||||||||
TrackDistanceWindow(-1, 2) |
| ||||||||||||||
TrackCurrentSpeed() |
| ||||||||||||||
TrackSpeedAt(2) |
| ||||||||||||||
TrackSpeedWindow(-1, 2) |
| ||||||||||||||
TrackCurrentAcceleration() |
| ||||||||||||||
TrackAccelerationAt(2) |
| ||||||||||||||
TrackAccelerationWindow(-1, 2) |
|