Há múltiplas ferramentas na caixa de ferramentas do GeoAnalytics Tools que permitem a você aplicar uma expressão :
- Expressões de buffer em Criar Buffers
- Expressões de buffer em Reconstruir Caminhos
- Condições de ligação em Ligar Feições
- Condições de incidentes em Detectar Incidentes
- Para calcular valores de campo em Calcular Campo
As GeoAnalytics Tools que utilizam expressões têm diferentes usos, como também, limitações sobre quais expressões podem ser aplicadas. Na versão 11.1 10.6, 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 você pode usar estã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
Operador | Explanação | Exemplo | Resultado |
---|---|---|---|
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 e 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) | Retorna 0 se distance for menor que 0, 10 se distance for maior que 10, e caso contrário, distance . Retorna 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
Operador | Explanação | Exemplo | Resultado |
---|---|---|---|
concatenate( <values>, <separator>) | Concatena valores e retorna uma string.
| 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.
| 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.
| 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 Arcade retornam valores de tempo na localização de seu GeoAnalytics Server
Operador | Explanação | Exemplo | Resultado |
---|---|---|---|
date( <value>, <month>, <day>, <hour>, <minute>) | Analisa um valor ou conjunto de valores em uma string de data.
| 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 de Janeiro de 2017 12:00:00 am Exemplo 3: Retorna a hora atual |
DateDiff(<date1>, <date2>, <units>) | Subtrai duas datas, e retorna a diferença nas unidades especificadas.
| 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.
| 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:
Operador | Explanação | Exemplo | Resultados |
---|---|---|---|
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, você pode utilizar operadores mais avançados lógicos com Detectar Incidentes.
Obtenha mais informações sobre funções lógicas disponíveis no Arcade
Função | Explanação | Exemplo | Resultado |
---|---|---|---|
iif(<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:
| iif($feature["field1"] > $feature["field2"], $feature["field1"], 0) iif($feature["field1"] > $feature["field2"], iif($feature["field2"] = 0, $feature["field3"], $feature["field4"]), 0) | Retorna field1 se field1 for maior que field2, e caso contrário, 0. Retorna o resultado da segunda função iif 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.
| 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.
| 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 GeoAnalytics Tools, como Detectar Incidentes e Calclar Campo, pode utilizar equações de caminhos cientes no Arcade.
Função | Explanação | Exemplo | Resultado | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TrackStartTime() | Calcula o tempo inicial de um caminho em milissegundos a partir da época. | Utilizando um caminho que inicia em 2 de Janeiro de 2017. TrackStartTime() | 1483315200000 | ||||||||||||
TrackDuration() | Calcula a duração de um caminho em milissegundos a partir do inicí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. TrackDuration() | 172800000 | ||||||||||||
TrackCurrentTime() | Calcula o tempo atual em um caminho. | Utilizando um recurso que ocorre em 3 de janeiro de 2017 as 09:00 AM. TrackCurrentTime() | 1483434000000 | ||||||||||||
TrackIndex | Retorna o índice de tempo da feição sendo calculada. | Calculando este valor na primeira feição em um caminho. TrackIndex | 0 | ||||||||||||
TrackFieldWindow(<fieldName>, <startIndex>, <endIndex>) | 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.
| 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: TrackFieldWindow("MyField,-1,2) Exemplo 2: TrackFieldWindow("MyField,-2,0)[0] Exemplo 3: TrackFieldWindow("MyField,0,3)[2] | Exemplo 1: Quando avaliada em cada feição, a tabela mostra os resultados seguintes.
Exemplo 2: Quando avaliado no índice 2 (o valor é 30), retorna: 10. Exemplo 3: Quando avaliado no índice 2 (o valor é 30), retorna: 50. | ||||||||||||
TrackGeometryWindow(<startIndex>, <endIndex>) | 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.
| MyField tem valores ordenados consecutivamente do [10, 20, 30, 40, 50]. A geometria das feições é [{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: TrackGeometryWindow(-1,2) Exemplo 2: TrackGeometryWindow(0,1)[0] em um conjunto de dados de polilinha Exemplo 3: TrackGeometryWindow(0,1)[0] em um conjunto de dados de polígono Exemplo 4: Localizar o valor X do ponto anterior TrackGeometryWindow(-1,0)[0]["x"] | Exemplo 1: Quando avaliada em cada feição, a tabela mostra os resultados seguintes.
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 é 30): 2 | ||||||||||||
TrackWindow(<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.
| MyField tem valores ordenados consecutivamente de [10, 20, 30, 40, 50], além dos campos objectID, globalID e instant_datetime. A geometria das feições é [{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: TrackWindow(-1,0)[0] Exemplo 2: geometry(TrackWindow(-1,0)[0]["x"] | Exemplo 1: Quando avaliada em cada feição, a tabela mostra os resultados seguintes.
Exemplo 2: Avaliado no índice 2 (o valor é 30): 2 |
Use as seguintes expressões de pista para calcular distância, velocidade e aceleração nas pistas.
Todos os cálculos de distância são calculados em metros, a velocidade em metros por segundo e a aceleração em metros por segundo ao quadrado. As distâncias são medidas usando distâncias geodésicas.
Função | Explanação |
---|---|
TrackCurrentDistance() | A soma das distâncias percorridas entre as observações da primeira até a observação atual. |
TrackDistanceAt(value) | A soma das distâncias percorridas entre as observações da primeira até a observação atual mais o valor fornecido. |
TrackDistanceWindow(value1, value2) | As distâncias entre o primeiro (inclusive) e o último valor (exclusivo) em uma janela sobre a observação atual (0). |
TrackCurrentSpeed() | A velocidade entre a observação anterior e a observação atual. |
TrackSpeedAt(value1) | A velocidade na observação em relação à observação atual. Por exemplo, no valor 2, é a velocidade na observação duas observações após a observação atual. |
TrackSpeedWindow(value1, value2) | Os valores de velocidade entre o primeiro (inclusivo) e o último valor (exclusivo) em uma janela ao redor da observação atual (0). |
TrackCurrentAcceleration() | A aceleração entre a observação anterior e a observação atual. |
TrackAccelerationAt(value1) | A aceleração na observação em relação à observação atual. |
TrackAccelerationWindow(value1, value2) | Os valores de aceleração entre o primeiro (inclusive) e o último valor (exclusivo) em uma janela em torno da observação atual (0). |
Os cálculos de exemplo para distância, velocidade e aceleração usarão exemplos da seguinte imagem:
Função | Resultado de exemplo | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TrackCurrentDistance() |
| ||||||||||||||
TrackDistanceAt(2) |
| ||||||||||||||
TrackDistanceWindow(-1, 2) |
| ||||||||||||||
TrackCurrentSpeed() |
| ||||||||||||||
TrackSpeedAt(2) |
| ||||||||||||||
TrackSpeedWindow(-1, 2) |
| ||||||||||||||
TrackCurrentAcceleration() |
| ||||||||||||||
TrackAccelerationAt(2) |
| ||||||||||||||
TrackAccelerationWindow(-1, 2) |
|