Expresiones de Calcular campo

La herramienta Calcular campo utiliza expresiones de Arcade para determinar los valores de los campos. Puede realizar cálculos simples y avanzados que se apliquen a todos los registros. Este cálculo se aplica a cada entidad. Las siguientes secciones incluyen ejemplos del uso de una expresión de campo calculado. Los cálculos se realizan cuando el análisis se ejecuta en su ArcGIS GeoAnalytics Server y siempre crearán una nueva capa.

En ArcGIS Enterprise 10.6 y posteriores, las expresiones se formatean mediante 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.

Más información sobre expresiones de Arcade

Las expresiones de Arcade se utilizan en GeoAnalytics Server por las siguientes herramientas:

Ejemplos de operación y función matemáticas

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

OperadorExplicaciónEjemplo

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

Ejemplo 1: constrain( $feature["distance"], 0, 10)

Devuelve 0 si distance es menor que 0, 10 si distance es mayor que 10 y distance en los demás casos.

Ejemplo 2: constrain($feature['Store dist'], 6, distance)

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.

Ejemplos de la función Texto

Las expresiones Calcular campo 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.

OperadorExplicaciónEjemploResultado

concatenate(<values>, <separator>)

Concatena valores juntos y devuelve una cadena de caracteres.

  • values: un conjunto de valores de cadena de caracteres a concatenar.
  • separator (opcional): separador a utilizar para la concatenación si el parámetro values es un conjunto o bien una cadena de caracteres para concatenar si se proporciona un valor único para el primer parámetro. Si no se proporciona, estará vacío.

fieldname contiene un valor de GeoAnalytics

Concatenate ([$features["fieldname"], "is", "great!"], ' ')

¡El geoanálisis es fantástico!

find(<searchText>, <text>, <startPos>)

Busca una cadena de caracteres dentro de otra cadena de caracteres. Los comodines no se admiten.

  • searchText: la cadena de caracteres que se va a buscar.
  • text: el texto en el que buscar.
  • startPos (opcional): el índice basado en cero de la ubicación de la cadena donde buscar.

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.

  • value: la cadena de caracteres que se desea cambiar a minúsculas.

fieldname contiene un valor de GEOANALYTICS

lower($feature["fieldname"])

geoanálisis

Ejemplo de texto utilizando find y lower.

find(("north"), lower("146NorthStreet"))

Ejemplos de la función Fecha

Las expresiones Calcular campo pueden procesar fechas. La siguiente tabla recoge una muestra de las operaciones disponibles. 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 am) y 23 (11:00 pm), 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.

Más información sobre las funciones de fecha disponibles en Arcade

OperadorExplicaciónEjemploResultado

date(<value>, <month>, <day>, <hour>, <minute>)

Analiza un valor o conjunto de valores en una cadena de caracteres de fecha.

  • value (opcional): el número de milésimas de segundo desde el 1 de enero de 1970 UTC o un número que represente un año. Si se especifica un año, el mes y el día también deben proporcionarse en los parámetros correspondientes. Este valor también puede ser una cadena de caracteres de fecha o una cadena de caracteres ISO 8601 para convertir en una fecha.
  • month (opcional): el mes (0–11) donde 0 es enero y 11 es diciembre.
  • day (opcional): el día del mes (1–31).
  • hour (opcional): la hora del día (0–23).
  • minute (opcional): el minuto de la hora (0–59).
  • second (opcional): el segundo del minuto (0–59).
  • millisecond (opcional): la milésima de segundo del segundo (0–999).

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>)

Resta dos fechas y devuelve la diferencia en las unidades especificadas.

  • date1: el valor de fecha del cual se sustrae una segunda fecha.
  • date2: el valor de fecha a sustraer desde la primera fecha dada.
  • units (opcional): las unidades utilizadas para devolver la diferencia entre las dos fechas dadas. Los tipos de unidad admitidos son milliseconds, seconds, minutes, hours, days, months y years. El valor predeterminado es milliseconds.

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.

  • value: un valor de fecha que identifica el año.

Ejemplo 1: fieldname es un campo de tipo Fecha 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

Ejemplos de función lógica

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

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

Además, algunas GeoAnalytics Tools, tales como Detectar incidentes y Calcular campo, pueden utilizar ecuaciones que realicen seguimiento en Arcade. En Calcular campo, las ecuaciones de seguimiento se pueden utilizar cuando la capa de entrada tenga la función de tiempo habilitada, la expresión realice seguimiento y se usen uno o más campos para identificar rastreos.

Utilice la siguiente expresión de seguimiento en ArcGIS Enterprise 10.6.

FunciónExplicaciónEjemploResultado

$track.field["fieldname"].history(<value1>)

Devuelve un conjunto de valores en el campo indicado para el índice de tiempo especificado.

  • Un número positivo devuelve un conjunto desde el índice especificado hasta la entidad actual.
  • Un número negativo devuelve el periodo de tiempo actual y los valores de periodo de tiempo de <value1> - 1 anteriores.

MyField tiene valores ordenados secuencialmente de [10, 20, 30, 40, 50, 60, 70, 80]. 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 40 (índice 3) y value 50 (índice 4), que equivale a 45. Si esto se evalúa en el índice 7, el resultado es la media 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.

  • value: el valor numérico que se va a agregar al tiempo de la entidad.
  • units: las unidades de <value> numérico. Los tipos de unidad admitidos son: milisegundos, segundos, minutos, horas, días, meses y años. El valor predeterminado es milésimas de segundo.

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

La función de ventana está disponible en ArcGIS Enterprise 10.6.1 o versiones posteriores.

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

Entidad evaluadaResultado

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.

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

La función de ventana está disponible en ArcGIS Enterprise 10.6.1 o versiones posteriores.

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

Entidad evaluadaResultado

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

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

La función de ventana está disponible en ArcGIS Enterprise 10.6.1 o versiones posteriores.

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.

Entidad evaluadaResultado

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

Utilice la siguiente expresión de seguimiento en ArcGIS Enterprise 10.6.1 o versiones posteriores.

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

Entidad evaluadaResultado

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

Entidad evaluadaResultado

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 evaluadaResultado

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

Utilice las siguientes expresiones de seguimiento para calcular la distancia, la velocidad y la aceleración en rastreos de ArcGIS Enterprise 10.9 o posterior.

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ónExplicación

TrackCurrentDistance()

La suma de las distancias recorridas entre observaciones de la primera observación a la actual.

TrackDistanceAt(value)

La suma de las distancias recorridas entre observaciones de la primera observación a la actual más el valor dado.

TrackDistanceWindow(value1, value2)

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(value1)

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

TrackSpeedWindow(value1, value2)

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(value1)

La aceleración en la observación en relación con la observación actual.

TrackAccelerationWindow(value1, value2)

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.

Imagen de ejemplo de recorrido con seis puntos

FunciónResultado de ejemplo

TrackCurrentDistance()

Id. de puntoResultado (metros)

P1

0

P2

60

P3

80 + 60 = 140

P4

30 + 80 + 60 = 170

P5

35 + 30 + 80 + 60 = 205

P6

25 + 35 + 30 + 80 + 60 = 230

TrackDistanceAt(2)

Id. de puntoResultado (metros)

P1

0 + 80 + 60 = 140

P2

30 + 80 + 60 = 170

P3

35 + 30 + 80 + 60 = 205

P4

25 + 35 + 30 + 80 + 60 = 230

P5

nulo

P6

nulo

TrackDistanceWindow(-1, 2)

Id. de puntoResultado (metros)

P1

[0,60]

P2

[0, 60, 140]

P3

[60, 140, 170]

P4

[140, 170, 205]

P5

[170, 205, 230]

P6

[205, 230]

TrackCurrentSpeed()

Id. de puntoResultado (metros/segundo)

P1

0

P2

60/60

1

P3

80/60

1,33

P4

30/60

0,5

P5

35/60

0,5833

P6

25/60

0,4167

TrackSpeedAt(2)

Id. de puntoResultado (metros/segundo)

P1

80/60

1,33

P2

30/60

0,5

P3

35/60

0,5833

P4

25/60

0,4167

P5

nulo

P6

nulo

TrackSpeedWindow(-1, 2)

Id. de puntoResultado (metros/segundo)

P1

[0, 1]

P2

[0, 1, 1,3]

P3

[1, 1,3, 0,5]

P4

[1,3, 0,5, 0,583]

P5

[0,5, 0,583, -0,4167]

P6

[0,583, -0,4167]

TrackCurrentAcceleration()

Id. de puntoResultado (metros/segundo²)

P1

0

P2

0,0167

P3

0,0056

P4

-0,0014

P5

0,0014

P6

-0,0028

TrackAccelerationAt(2)

Id. de puntoResultado (metros/segundo²)

P1

0,0056

P2

-0,0014

P3

0,0014

P4

-0,0028

P5

nulo

P6

nulo

TrackAccelerationWindow(-1, 2)

Id. de puntoResultado (metros/segundo²)

P1

[0, 0,0167]

P2

[0, 0,0167, 0,0056]

P3

[0,0167, 0,0056 , -0,0014]

P4

[ 0,0056 , -0,0014, 0,0014]

P5

[-0,0014, 0,0014, -0,0028]

P6

[0,0014, -0,0028]

Temas relacionados