Skip To Content

Utilizar expressões Arcade com Detectar Incidentes

Há múltiplas ferramentas na caixa de ferramentas do Ferramentas do GeoAnalytics que permitem a você aplicar uma expressão.

As Ferramentas do GeoAnalytics que utilizam expressões têm diferentes usos, como também, limitações sobre quais expressões podem ser aplicadas. Na versão 10.6.1, todas as expressões utilizadas no ArcGIS GeoAnalytics Server suportam Arcade.

Obtenha mais informações sobre Funções Arcade

Expressões em Detectar Incidentes

As expressões são utilizadas na ferramenta Detectar Incidentes para especificar as condições iniciais e finais dos incidentes. Uma condição Detectar Incidentes deve sempre resultar em true ou false. Utilize uma condição para verificar se uma feição deve ser incluída em um incidente. As condições são testadas em relação a cada feição para determinar quais feições são incidentes. Os cálculos são realizados quando a análise é executada no ArcGIS GeoAnalytics Server. Os exemplos de expressão que podem ser utilizados são incluídos nas seções abaixo.

Exemplos de operador matemático e função

As expressões podem processar números matematicamente. A seguinte tabela exibe uma amostra de operações disponíveis.

Obtenha mais informações sobre operações matemáticas e funções disponíveis no Arcade

OperadorExplanaçãoExemploResultado

a + b

a mais b.

fieldname contém um valor de 1.5

$feature["fieldname"] + 2.5

4.0

a - b

a menos b.

fieldname contém um valor de 3.3

$feature["fieldname"]- 2.2

1.1

a * b

a vezes b.

fieldname contém um valor de 2.0

$feature["fieldname"] * 2.2

4.4

a / b

a dividido por b.

fieldname contém um valor de 4.0

$feature["fieldname"] / 1.25

3.2

abs( a )

Retorna o valor absoluto (positivo) de a.

fieldname contém um valor de -1,5

abs($feature["fieldname"])

1.5

log( a )

Retorna o logaritmo natural (base E) de a.

fieldname contém um valor de 1

log($feature["fieldname"])

0

sin( a )

Retorna o seno trigonométrico de a. A entrada é assumida como sendo um ângulo em radianos.

fieldname contém um valor de 1.5707

sin($feature["fieldname"])

1

cos( a )

Retorna o co-seno trigonométrico de a. A entrada é assumida como sendo um ângulo em radianos.

fieldname contém um valor de 0

cos($feature["fieldname"])

1

tan( a )

Retorna a tangente de a. A entrada é assumida como sendo um ângulo em radianos.

fieldname contém um valor de 0

tan($feature["fieldname"])

0

sqrt( a )

Retorna a raiz quadrada de a.

fieldname contém um valor de 9

sqrt($feature["fieldname"])

3

min( a, b )

Retorna o número estimado mais baixo entre a e b.

fieldname contém um valor de 1.5 e um valor de -3

min($feature["fieldname"], -3)

-3

max( a, b )

Retorna o número estimado mais alto entre a ou b.

fieldname1 contém um valor de 1.5 e fieldname2 contém um valor de -3

max($feature["fieldname1"], $feature["fieldname2"])

1.5

constrain(<value>,<low>,<high>)

Retorna o valor de entrada se ele estiver dentro dos limites determinados. Se o valor de entrada for menor que o valor baixo, retorna o valor baixo. Se o de entrada valor for maior que o valor alto, retorna o valor alto.

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

constrain($feature['Store dist'], 6, distância)

Returna 0 se distance for menor que 0, 10 se distance for maior que 10, e caso contrário, distance.

Returna 6 se Store dist for menor que 6, distance se Store dist for maior que distance, e caso contrário, Store dist.

O exemplo de multiplicação para uma condição detectando um incidente.

$feature["Distance"] * 2 > 50

Exemplos de função de texto

Detectar Incidentes as expressões podem processar texto. A seguinte tabela exibe uma amostra de operações disponíveis.

Obtenha mais informações sobre funções de texto disponíveis no Arcade

OperadorExplanaçãoExemploResultado

concatenate( <values>, <separator>)

Concatena valores e retorna uma string.

  • values— Um vetor de valores de string para concatenar.
  • separator ( opcional)—O separador para utilizar para concatenação, se values o parâmetro for um vetor ou uma string para concatenar se um valor único for fornecido para o primeiro parâmetro. Se não fornecido, estará vazio.

fieldname contém um valor de GeoAnalytics

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

GeoAnalytics é ótimo!

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

Localiza uma string dentro de uma string. Curingas não são suportados.

  • searchText— A substring para pesquisar.
  • text—O texto para procurar.
  • startPos (opcional)— O índice baseado em zero da localização da string para pesquisar.

fieldname1 contém um valor de 14NorthStreet e fieldname2 contém um valor de North

find($feature["fieldname2"], $feature["fieldname1"])

2

lower(<value>)

Torna uma string com letra minúscula.

  • value— A string para se tornar letra minúscula.

fieldname contém um valor de GEOANALYTICS

lower($feature["fieldname"])

geoanalytics

Exemplo de texto utilizando find e lower.

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

Exemplos de função de data

Você pode utilizar Detectar Incidentes a partir de expressões que utilizam datas. A seguinte tabela exibe uma amostra de operações disponíveis.

Obtenha mais informações sobre funções de datas disponíveis no Arcade

No Arcade, valores de mês variam de 0 (Janeiro) até 11 (Dezembro), dias a partir de 1 ao 31, horas de 0 (12:00 am) até 23 (11:00 pm), minutos e segundos de 0 a 59 e milissegundos de 0 a 999. As datas do Arcade retornam valores de tempo na localização do seu GeoAnalytics Server.

OperadorExplanaçãoExemploResultado

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

Analisa um valor ou conjunto de valores em uma string de data.

  • value(opcional)— Número de milissegundos desde 1 de Janeiro de 1970, UTC ou um número representando um ano. Se um ano for especificado, então o mês e dia deverão também ser fornecidos em parâmetros subsequentes. Este valor pode ser também uma string de data ou uma string ISO 8601 a ser convertida em um data.
  • month ( opcional)—O mês (0-11) onde 0 é janeiro e 11 é dezembro.
  • day (opcional)—O dia do mês (1-31).
  • hour (opcional)—A hora do dia (0-23).
  • minute (opcional)—O minuto da hora (0-59).
  • second (opcional)— O segundo do minuto (0-59).
  • millisecond (opcional)— O milissegundo do segundo (0-999).

fieldname contém um valor de 1476987783555

Exemplo 1: Date($features["fieldname"])

Exemplo 2: Date(2017,0,14,0)

Exemplo 3: Date()

Exemplo 1: 20 de Outubro de 2016 11:23:03 am

Exemplo 2: 14 Jan 2017 12:00:00 am

Exemplo 3: Retorne a hora atual

DateDiff(<date1>, <date2>, <units>)

Subtrai duas datas, e retorna a diferença nas unidades especificadas.

  • date1— O valor de data do qual subtrai uma segunda data.
  • date2—O valor de data para subtrair da primeira data fornecida.
  • startpos (opcional)— As unidades na qual retorna a diferença das duas datas fornecidas. Os tipos de unidades suportadas incluem milliseconds, seconds, minutes, hours, days, months, e years. O valor padrão é milissegundos.

Exemplo 1: Date(2017,1,14,0)

Exemplo 2: DateDiff(Date(2017,1,14,0), Date(), "Years")

O resultado variará dependendo de quando você executar este comando.

Exemplo 1: -20532129137

Exemplo 2: -0.6546783768647119

Year(<dateValue>)

Retorna o ano da data fornecida.

  • value—Um valor de data do qual obter o ano.

Exemplo 1: fieldname é um campo de tipo Date com um valor de 09 Oct 2017 04:30:43 pm

Year($feature["fieldname"])

Exemplo 2: fieldname é um campo de string formatado como uma string ISO 8601 com um valor de 2012-09-27

Exemplo 1: 2017

Exemplo 2: 2012

Operadores condicionais

As declarações condicionais podem utilizar os seguintes operadores:

OperadorExplanaçãoExemploResultados

a > b

a < b

a é maior que b

a é menor que b

10 > 2

Falso

a >= b

a <= b

a é maior ou igual a b

a é menor ou igual a b

abs(-10) >= 10

Verdadeiro

a != b

a não é igual a b

abs(-3) != -3

Verdadeiro

a == b

a é igual a b

abs(-5) == 5

Verdadeiro

<condition1> || <condition2>

Condição 1 ou condição 2 é atendida.

(abs(-5) == 5) || (10 < 2)

Verdadeiro

<condition1> && <condition2>

Condição 1 e condição 2 são atendidas.

(abs(-5) == 5) && (10 < 2)

Falso

Exemplos de operador lógico

Além dos operadores condicionais, operadores mais avançados lógicos podem ser utilizados com Detectar Incidentes.

Obtenha mais informações sobre funções lógicas disponíveis no Arcade

FunçãoExplanaçãoExemploResultado

iff(<condition>,<true value>,<false value>)

Retorna um valor se uma condição avaliar para true, e outro valor se esta condição avaliar para false.

<true value> e <false value> podem ser o seguinte:

  • Um campo numérico. Se houver um espaço no nome de campo, utilize colchetes.
  • Um número.
  • Uma função.

iff($feature["field1"] > $feature["field2"], $feature["field1"], 0)

iff($feature["field1"] > $feature["field2"], iff($feature["field2"] = 0, $feature["field3"], $feature["field4"]), 0)

Returna field1 se field1 for maior que field2, e caso contrário, 0.

Retorna o resultado da segunda função iff se field1 for maior que field2, e caso contrário, 0.

when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>)

Avalia uma série de expressões na sua vez, até que uma avalie para true.

  • expression—Uma expressão.
  • result—Pode ser um número ou campo.
  • default—Um valor opcional se nenhuma das expressões for compatível.

when(($feature["field1"] + 10) > 1, 1,($feature["field2"] + 10) > 2 , 2, $feature["field3"])

Se field1 + 10 for maior que 1, retorna 1. Se não, marque se field2 + 10 for maior que 2. Se for, retorna 2. Se não, retorna field3.

decode(<conditional val> , <case1> , <result1>, <case2>, <result2>, ... <caseN>, <resultN>, <defaultValue> )

A função decode avalia uma expressão e compara seu valor com os parâmetros subsequentes. Se a expressão corresponder, ela retorna o próximo valor de parâmetro. Se nenhuma corresponder, há a opção do último parâmetro para ser um valor de retorno padrão.

  • conditional val—Pode ser um campo ou uma expressão.
  • case—Um valor a ser comparado à conditional val.
  • result—O resultado se o caso for correspondente à conditional val.
  • defaultValue—Um valor opcional se nenhum outro valor for true.

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

Compara a igualdade entre o conditional val field1 + 3 e case1 field1. Se true, retorna 1. Se false, compara a igualdade entre field1 + 3 e field2. Se true, retorna 2; caso contrário, retorna 0.

Exemplos de rastreamento

Além disso, algumas Ferramentas do GeoAnalytics, como Detectar Incidentes e Calclar Campo, pode utilizar equações de caminhos cientes no Arcade.

FunçãoExplanaçãoExemploResultado

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

Retorna um vetor de valores no campo fornecido para o índice de tempo especificado.

  • Um número positivo retorna um vetor iniciando a partir do índice fornecido até a feição atual.
  • Um número negativo retorna a etapa de tempo atual e os valores de etapas precedentes <value1> - 1 .

MyField tem valores ordenados consecutivamente do [10, 20, 30, 40, 50, 60, 70, 80]. O valor 10 está no índice 0 e o valor 80 está no índice 7. As expressões são avaliadas em cada índice e os exemplos esboçam o índice sendo utilizado para os exemplos. n representa o número de feições na sequência e k representa o índice sendo avaliado.

Exemplo 1:$track.field["MyField"].history(3))

Exemplo 2:$track.field["MyField"].history(-3))

Exemplo 3:$track.field["MyField"].history(-2))

Exemplo 4:$track.field["MyField"].history(-3)[0]

Quando o exemplo 1 é avaliado no índice k, ele retornará um vetor de valores no índice 3 por k. Se você avaliar no índice 6 (70), um vetor dos valores no índice [3, 4, 5, 6] é retornado de forma que o vetor é [40, 50, 60, 70].

Exemplo 2 retorna um vetor de valores calculados como índice k menos o valor fornecido menos 1 (k-2). Se este for avaliado no índice 6 (value = 70), os valores de k-2, k-1, e k são retornados [50, 60, 70].

Exemplo 3 retorna a média dos valores no índice k-1 e k. Se você avaliar isto no índice 4 (value = 50), você localizará a média de value 50 (índice 3) e value 60 (índice 4), que equipara a 65. Se você fosse avaliar isto no índice 7, o resultado seria a média de 70 e 80, que equipara 75.

Exemplo 4 retorna o primeiro item (índice 0) do vetor criado no exemplo 2, que é 50.

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

Retorna um vetor de valores a partir do index1 (<value1>) até index2 (<value2>).

MyField tem valores ordenados consecutivamente de [10, 20, 30, 40, 50, 60, 70, 80]. 10 está no índice 0 e 80 está no índice 7. Para este exemplo, as expressões são avaliadas no índice 7 (80).

Exemplo 1:$track.field["MyField"].history(-3, -2))

Exemplo 2:$track.field["MyField"].history(-5, -2))

Exemplo 1: [60]

Exemplo 2: [40, 50, 60]

$track.time.start

Calcula o tempo inicial de um caminho em milissegundos a partir da época.

Utilizando um caminho que inicia em 2 de janeiro de 2017

$track.time.start

1483315200000

$track.time.duration

Calcula a duração de um caminho em milissegundos a partir do início até a etapa de tempo atual.

Utilizando um caminho que inicia em 2 de janeiro de 2017 e o tempo atual é 4 de janeiro de 2017.

$track.time.duration

172800000

$track.time.current

Calcula o tempo atual em um caminho.

Utilizando um recurso que ocorre em 3 de janeiro de 2017 as 09:00 AM.

$track.time.current

1483434000000

$track.index

Retorna o índice de tempo da feição sendo calculada.

Calculando este valor na primeira feição em um caminho.

$track.index

0

$track.T(<value>, "<units>")

Retorna o tempo de feição mais o tempo criado utilizando o <value> numérico e <units> fornecidas.

  • value—O valor numérico para adicionar ao tempo da feição.
  • units—As unidades do <value> numérico. Os tipos de unidade suportadas são milissegundos, segundos, minutos, horas, dias, meses e anos. O valor padrão é milissegundos.

Utilizando um recurso que ocorre em 2 de janeiro de 2017 as 2 PM.

Exemplo 1: $track.T(1, "horas")

Exemplo 2: $track.T(-2, "dias")

Exemplo 1: Retorna 2 de janeiro as 3 p.m.: 1483369200000

Exemplo 2: Retorna 31 de dezembro as 2 p.m.: 1483192800000

$track.field["fieldname"].window(<value1>, <value2>)

Retorna um vetor de valores no campo fornecido para o índice de tempo especificado. A função da janela permite a você ir para frente e para trás no tempo. A expressão é avaliada em cada feição no caminho.

  • A feição atual está no índice 0.
  • Os valores positivos representam feições que ocorrem no futuro, após o valor atual. Por exemplo, posição 1 é o próximo valor no vetor.
  • Os números negativos representam feições que ocorreram no passado, antes da feição anterior. Por exemplo, -1 é o valor anterior no vetor.

A função de janela está disponível no ArcGIS Enterprise 10.6.1.

MyField tem valores ordenados consecutivamente do [10, 20, 30, 40, 50]. A expressão é avaliada em cada feição no caminho. Os resultados são retornados inclusive da feição inicial e exclusivo da feição final.

Exemplo 1:$track.field["MyField"].window(-1,2)

Exemplo 2:$track.field["MyField"].window(-2,0)[0]

Exemplo 3:$track.field["MyField"].window(0,3)[2]

Exemplo 1: Quando avaliada em cada feição, a tabela mostra os resultados seguintes.

Feição avaliada

Resultado

10

[10,20]

20

[10, 20, 30]

30

[20,30,40]

40

[30,40,50]

50

[40, 50]

Exemplo 2: Quando avaliado no índice 2 (o valor é 30), retorna: 10.

Exemplo 3: Quando avaliado no índice 2 (o valor é 30), retorna: 50.

$track.geometry.window(<value1>, <value2>)

Retorna um vetor de valores representando a geometria do índice de tempo especificado. A função da janela permite a você ir para frente e para trás no tempo. A expressão é avaliada em cada feição no caminho.

  • A feição atual está no índice 0.
  • Os valores positivos representam feições que ocorrem no futuro, após o valor atual. Por exemplo, posição 1 é o próximo valor no vetor.
  • Os números negativos representam feições que ocorreram no passado, antes da feição anterior. Por exemplo, -1 é o valor anterior no vetor.

A função de janela está disponível no ArcGIS Enterprise 10.6.1.

MyField tem valores ordenados consecutivamente do [10, 20, 30, 40, 50]. A geometria das feições são [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}] A expressão é avaliada em cada feição no caminho. Os resultados são retornados inclusive da feição inicial e exclusivo da feição final.

Exemplo 1:$track.geometry.window(-1,2)

Exemplo 2: $track.geometry.window(0,1)[0] em um conjunto de dados de polilinha

Exemplo 3: $track.geometry.window(0,1)[0] em um conjunto de dados de polígono

Exemplo 4: Localize o valor X do ponto anterior $track.geometry.window(-1,0)[0]["x"]

Exemplo 1: Quando avaliada em cada feição, a tabela mostra os resultados seguintes.

Feição avaliada

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}]

Exemplo 2: As polilinhas são retornadas no formato seguinte: [{"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]]]}]

Exemplo 3: Os polígonos são retornados no formato seguinte: [{"rings":[[[-7882559.1197999995,6376090.883500002],[-7893142.474300001,6042715.216800004],[-8544018.775999999,6045361.0554000065],[-8544018.775999999,6376090.883500002],[-7882559.1197999995,6376090.883500002]]]}]

Exemplo 4: Avaliado no índice 2 (o valor é 20): 1

$track.window(<value1>, <value2>)

Retorna um vetor de valores representando geometria e todos os atributos do índice de tempo especificado. A função da janela permite a você ir para frente e para trás no tempo.

  • A feição atual está no índice 0.
  • Os valores positivos representam feições que ocorrem no futuro, após o valor atual. Por exemplo, posição 1 é o próximo valor no vetor.
  • Os números negativos representam feições que ocorreram no passado, antes da feição anterior. Por exemplo, -1 é o valor anterior no vetor.

A função de janela está disponível no ArcGIS Enterprise 10.6.1.

MyField tem valores ordenados consecutivamente [10, 20, 30, 40, 50], além dos campos objectID, globalID e instant_datetime . A geometria das feições são [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}] A expressão é avaliada em cada feição no caminho. Os resultados são retornados inclusive da feição inicial e exclusivo da feição final.

Exemplo 1:$track.window(-1,0)[0]

Exemplo 2:geometry($track.window(-1,0)[0]["x"]

Exemplo 1: Quando avaliada em cada feição, a tabela mostra os resultados seguintes.

Feição avaliada

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"}}]

Exemplo 2: Avaliado no índice 2 (o valor é 20): 1