Ejemplos de expresiones de zonas de influencia para ArcGIS Enterprise 10.6 y posteriores

Introducir valores o usar un campo no son las únicas formas de especificar el tamaño de una zona de influencia con las GeoAnalytics Tools. En algunos casos, puede realizar un cálculo matemático para establecer el tamaño de la zona de influencia. Es posible realizar cálculos simples y avanzados que se pueden aplicar a todos los registros. Este cálculo se aplica a cada entidad. Las siguientes secciones incluyen ejemplos del uso de una expresión de zona de influencia. Los cálculos se realizan cuando el análisis se ejecuta en su ArcGIS GeoAnalytics Server.

En ArcGIS Enterprise 10.6 y posteriores, las expresiones se formatean mediante expresiones de Arcade. Utilizando Arcade, los nombres de campo se formatean como $feature["field name"] o $feature.fieldname. La primera opción, $feature["field name"], se requiere cuando un nombre de campo contiene un espacio. Todos los ejemplos siguientes utilizan esta opción. GeoAnalytics Server no utiliza expresiones de Arcade en Enterprise 10.5 o 10.5.1.

Más información sobre las expresiones de zona de influencia compatibles para 10.5 y 10.5.1

Más información sobre expresiones de Arcade

Las expresiones de zona de influencia se usan en las herramientas Reconstruir pistas y Crear zonas de influencia.

Las siguientes herramientas utilizan expresiones de Arcade en GeoAnalytics Server en Enterprise 10.6 y posteriores:

Ejemplos de operadores matemáticos y funciones

Las expresiones de zona de influencia 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 de Arcade

OperadorExplicaciónEjemploResultado

a + b

Devuelve la suma de a más b.

fieldname contiene un valor de 1,5

$feature["fieldname"] + 2.5

4.0

a - b

Devuelve la diferencia de a menos b.

fieldname contiene un valor de 3,3

$feature["fieldname"]- 2.2

1.1

a * b

Devuelve el producto de a por b.

fieldname contiene un valor de 2,0

$feature["fieldname"] * 2.2

4.4

a/b

Devuelve el cociente de a dividido entre 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 es menor que el valor bajo, devuelve el valor bajo. Si el valor 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.

Multiplicación

$feature["Distance"] * 2

Ejemplos de operadores lógicos

Además de las expresiones matemáticas sencillas, se pueden usar funciones más avanzadas para aplicar expresiones de zona de influencia.

FunciónExplicaciónEjemploResultado

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:

  • Un campo numérico. Si hay un espacio en el nombre del campo, use corchetes.
  • Un número.
  • Una función.

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.

  • expression: una expresión.
  • result: el resultado de la expresión. Puede ser un número o un campo.
  • default: valor opcional si no coincide ninguna de las expresiones.

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.

  • conditional val: el valor condicional. Puede ser un campo o una expresión.
  • case: un valor para compararlo con el conditional val.
  • result: el resultado si el caso correspondiente coincide con el conditional val.
  • defaultValue: un valor opcional si ningún otro valor es true.

decode($feature["field1"] + 3 , $feature["field1"], 1, $feature["field2"], 2, 0)

Compara la igualdad entre el valor condicional 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 de la función Como distancia

Las expresiones de zona de influencia permiten asignar valores numéricos a una distancia lineal.

FunciónExplicaciónEjemploResultado

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.

Operadores condicionales

Las declaraciones condicionales pueden usar los siguientes operadores:

OperadorExplicaciónEjemploResultados

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

Ejemplos con seguimiento

En ArcGIS Enterprise 10.6.1 o versiones posteriores, puede usar ecuaciones que realicen seguimiento en Arcade con la herramienta Reconstruir recorridos.

FunciónExplicaciónEjemploResultado

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.

  • La entidad actual está en el índice 0.
  • Los valores positivos representan entidades que ocurren en el futuro, después del valor actual. Por ejemplo, la posición 1 es el siguiente valor del conjunto.
  • Los números negativos representan entidades que ocurrieron en el pasado, antes de la entidad anterior. Por ejemplo, -1 es el valor anterior del conjunto.

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: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.

Entidad evaluada

Resultado

10

[10,20]

20

[10, 20, 30]

30

[20,30,40]

40

[30,40,50]

50

[40, 50]

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.

  • La entidad actual está en el índice 0.
  • Los valores positivos representan entidades que ocurren en el futuro, después del valor actual. Por ejemplo, la posición 1 es el siguiente valor del conjunto.
  • Los números negativos representan entidades que ocurrieron en el pasado, antes de la entidad anterior. Por ejemplo, -1 es el valor anterior del conjunto.

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: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.

Entidad evaluada

Resultado

10

[{x: 1, y: 1},{x: 2, y: 2}]

20

[{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null}]

30

[{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}]

40

[{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]

50

[{x: 4, y: 4}, {x: 5, y: 5}]

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.

  • La entidad actual está en el índice 0.
  • Los valores positivos representan entidades que ocurren en el futuro, después del valor actual. Por ejemplo, la posición 1 es el siguiente valor del conjunto.
  • Los números negativos representan entidades que ocurrieron en el pasado, antes de la entidad anterior. Por ejemplo, -1 es el valor anterior del conjunto.

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: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.

Entidad evaluada

Resultado

10

20

[{"geometry": {x: 1, y: 1}},{"attributes": {"MyField" : 10, "trackName":"ExampleTrack1"}}]

30

[{"geometry": {x: 2, y: 2}},{"attributes": {"MyField" : 20, "trackName":"ExampleTrack1"}}]

40

[{"geometry": {x: null, y: null}},{"attributes": {"MyField" : 30, "trackName":"ExampleTrack1"}}]

50

[{"geometry": {x: 4, y: 4}},{"attributes": {"MyField" : 40, "trackName":"ExampleTrack1"}}]

Ejemplo 2: se evalúa en el índice 2 (el valor es 30): 2

Temas relacionados