Skip To Content

Utilizzare espressioni buffer con GeoAnalytics Tools

Nella casella degli strumenti di GeoAnalytics Tools sono disponibili i seguenti strumenti che consentono di applicare un'espressione:

I GeoAnalytics Tools che utilizzano espressioni hanno scopi diversi, nonché limitazioni sulle espressioni da applicare. In ArcGIS 10.6, tutte le espressioni utilizzate in GeoAnalytics supportano Arcade.

Ulteriori informazioni sulle funzioni Arcade

Ricostruisci Tracce e Crea Buffer

Le espressioni buffer sono utilizzate dagli strumenti Ricostruisci tracce e Crea buffer.

Le dimensioni del buffer sono in genere immesse utilizzando valori costanti o valori di campo. Tuttavia, l'immissione dei valori non è l'unico modo per specificare la dimensione di un buffer utilizzando GeoAnalytics Tools. In alcuni casi, è possibile eseguire un calcolo matematico per impostare la dimensione del buffer. Il calcolo viene applicato a ogni feature analizzata. I calcoli sono eseguiti quando l'analisi viene eseguita su ArcGIS GeoAnalytics Server.

Nelle seguenti sezioni sono inclusi esempi di espressioni di buffer.

Esempi di operatori matematici e funzioni

Le espressioni buffer elaborano numeri matematicamente. La seguente tabella mostra un esempio delle operazioni disponibili.

Ulteriori informazioni sulle operazioni matematiche e le funzioni disponibili in Arcade

OperatoreSpiegazioneEsempioRisultato

a + b

a più b.

fieldname contiene un valore di 1.5.

$feature["fieldname"] + 2.5

4.0

a - b

a meno b.

fieldname contiene un valore di 3.3.

$feature["fieldname"]- 2.2

1,1

a * b

a per b.

fieldname contiene un valore di 2.0.

$feature["fieldname"] * 2.2

4,4

a / b

a diviso b.

fieldname contiene un valore di 4.0.

$feature["fieldname"] / 1.25

3,2

abs( a )

Restituisce il valore assoluto (positivo) di a.

fieldname contiene un valore di -1.5.

abs($feature["fieldname"])

1,5

log( a )

Restituisce il logaritmo naturale (base E) di a.

fieldname contiene un valore di 1.

log($feature["fieldname"])

0

sin( a )

Restituisce il seno trigonometrico di a. Si presuppone che l'input sia un angolo espresso in radianti.

fieldname contiene un valore di 1.5707.

sin($feature["fieldname"])

1

cos( a )

Restituisce il coseno trigonometrico di a. Si presuppone che l'input sia un angolo espresso in radianti.

fieldname contiene un valore di 0.

cos($feature["fieldname"])

1

tan( a )

Restituisce la tangente di a. Si presuppone che l'input sia un angolo espresso in radianti.

fieldname contiene un valore di 0.

tan($feature["fieldname"])

0

rq( a )

Restituisce la radice quadrata di a.

fieldname contiene un valore di 9.

rq($feature["fieldname"])

3

min( a, b )

Restituisce il valore più basso compreso tra a e b.

fieldname contiene un valore di 1.5 e un valore di -3.

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

-3

max( a, b )

Restituisce il valore più alto tra a e b.

fieldname1 contiene un valore di 1.5 e fieldname2 contiene un valore di -3.

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

1,5

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

Restituisce il valore di input se rientra nei limiti vincolanti. Se il valore di input è inferiore al valore basso, restituisce il valore basso. Se il valore di input è superiore al valore alto, restituisce il valore alto.

limite($feature["distanza"], 0, 10)

limite($feature['Store dist'], 6, distanza)

Restituisce 0 se distance è minore di 0, 10 se distance è maggiore di 10, altrimenti distance.

Restituisce 6 se Store dist è minore di 6, distance se Store dist è maggiore di distance, altrimenti Store dist.

Esempio di moltiplicazione per un'espressione buffer

$feature["Distance"] * 2

Esempi di funzioni di distanza

Le funzioni as distance eseguono il cast dei valori numerici in una distanza lineare che può essere utilizzata in un'espressione matematica. Gli strumenti Ricostruisci tracce e Crea Buffer possono utilizzare le funzioni as distance. Se un valore numerico è utilizzato senza una funzione as distance, si presume che l'unità sia espressa in metri.

FunzioneSpiegazioneEsempioRisultato

in_metri( <valore> )

Applica un calcolo presupponendo che i valori di input siano in metri.

in_metri( $feature["fieldname"] )

in_metri(150)

I risultati sono memorizzati nel buffer entro 150 metri.

in_chilometri( <valore> )

Applica un calcolo presupponendo che i valori di input siano in chilometri.

in_chilometri( $feature["fieldname"] )

in_chilometri(150)

I risultati sono memorizzati nel buffer entro 150 chilometri.

in_piedi( <valore> )

Applica un calcolo presupponendo che i valori di input siano in piedi.

in_piedi( $feature["fieldname"] )

in_piedi(150)

I risultati sono memorizzati nel buffer entro 150 piedi.

in_iarde( <valore> )

Applica un calcolo presupponendo che i valori di input siano in iarde.

in_iarde( $feature["fieldname"] )

in_iarde(150)

I risultati sono memorizzati nel buffer entro 150 iarde.

in_miglia_nautiche( <valore> )

Applica un calcolo presupponendo che i valori di input siano in miglia nautiche.

in_miglia_nautiche( $feature["fieldname"] )

in_miglia_nautiche(150)

I risultati sono memorizzati nel buffer entro 150 miglia nautiche.

in_miglia( <valore> )

Applica un calcolo presupponendo che i valori di input siano in miglia.

in_miglia( $feature["fieldname"] )

in_miglia(150)

I risultati sono memorizzati nel buffer entro 150 miglia.

Per ogni feature, moltiplicare il campo Distance presupponendo che sia in chilometri e aggiungere 10 metri per un'espressione buffer.

as_kilometers($feature["Distance"]) * 3 + as_meters(10)

Operatori condizionali

Le istruzioni condizionali possono utilizzare i seguenti operatori:

OperatoreSpiegazioneEsempioRisultati

a > b

a < b

a è maggiore di b

a è minore di b

10 > 2

False

a >= b

a <= b

a è maggiore o uguale a b

a è minore o uguale a b

abs(-10) >= 10

True

a != b

a non è uguale a b

abs(-3) != -3

True

a == b

a è uguale a b

abs(-5) == 5

True

<condition1> || <condition2>

Condition 1 o condition 2 viene soddisfatta.

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

True

<condition1> && <condition2>

Condition 1 e condition 2 vengono soddisfatte.

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

False

Esempio di un'espressione buffer che utilizza condizioni e funzioni avanzate

iff(field1 > field2, iff(field2 = 0, field3, field4), 0)

Esempio di moltiplicazione per una condizione di join

iff(field1 > field2, iff(field2 = 0, field3, field4), 0) > $join["Distance"] * 2

Esempi di operatore logico

Oltre ad operatori condizionali, è possibile utilizzare operatori logici più avanzati per creare buffer, come illustrato nella seguente tabella.

Ulteriori informazioni sulle funzioni logiche disponibili in Arcade

FunzioneSpiegazioneEsempioRisultato

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

Restituisce un valore se una condizione risulta essere true e restituisce un altro valore se la condizione risulta essere false.

<true value> e <false value> possono essere i seguenti:

  • Un campo numerico. Utilizzare le parentesi quadre se c'è uno spazio nel nome del campo.
  • Un numero.
  • Una funzione.

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

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

Restituisce field1 se field1 è maggiore di field2, altrimenti 0.

Restituisce il risultato della seconda funzione iif se field1 è maggiore di field2, altrimenti 0.

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

Valuta una serie di espressioni in ordine fino a quando una non risulta essere true.

  • expression: un'espressione.
  • result: il risultato dell'espressione. Può essere un numero o un campo.
  • default: un valore facoltativo se nessuna delle espressioni corrisponde.

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

Se field1 + 10 è maggiore di 1, restituisce 1. In caso contrario, verifica se field2 + 10 è maggiore di 2. In tal caso, restituisce 2. In caso contrario, restituisce field3.

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

Valuta un'espressione e ne confronta il valore con i parametri successivi. Se l'espressione corrisponde, restituisce il successivo valore di parametro. In assenza di corrispondenze, è disponibile l'opzione per cui l'ultimo parametro è un valore restituito predefinito.

  • conditional val: il valore condizionale. Può essere un campo o un’espressione.
  • case: un valore da confrontare con conditional val.
  • result: il risultato se il caso corrispondente corrisponde a conditional val.
  • defaultValue: un valore facoltativo se nessun altro valore è true.

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

Confronta l'uguaglianza tra il valore condizionale field1 + 3 e il caso 1 field1. Se true, restituisce 1. Se false, confronta l'uguaglianza tra field1 + 3 e field2. Se true, restituisce 2; altrimenti, restituisce 0.

Esempi di considerazione tracce

Ricostruisci Tracce può utilizzare equazioni che prendono in considerazione le tracce in Arcade, come illustrato nella seguente tabella:

FunzioneSpiegazioneEsempioRisultato

TrackStartTime()

Calcola il periodo temporale di inizio di un rilevamento in millisecondi da epoca.

Se si usa un rilevamento che inizia il 2 gennaio 2017.

TrackStartTime()

1483315200000

TrackDuration()

Calcola la durata di una traccia in millisecondi dall’inizio fino al passaggio temporale attuale.

Se si usa un rilevamento che inizia il 2 gennaio 2017 e il periodo temporale corrente è il 4 gennaio 2017.

TrackDuration()

172800000

TrackCurrentTime()

Calcola l’ora attuale in una traccia.

Se si usa una feature del 3 gennaio 2017 alle 9:00

TrackCurrentTime()

1483434000000

TrackIndex

Restituisce l’indice temporale della feature calcolata.

Calcolo di questo valore sulla prima feature di una traccia.

TrackIndex

0

TrackFieldWindow(<fieldName>, <startIndex>, <endIndex>)

Restituisce un array di valori nel campo specificato per l’indice temporale specificato. La funzione finestra consente di andare avanti e indietro nel tempo. L'espressione viene valutata su ciascuna feature nella traccia.

  • La feature attuale è sull'indice 0.
  • I valori positivi rappresentano feature che si verificano in futuro, dopo il valore corrente. Ad esempio, la posizione 1 è il valore successivo nell'array.
  • I numeri negativi rappresentano feature accadute nel passato, prima della feature precedente. Ad esempio, -1 è il valore precedente nell'array.

MyField ha ordinato i valori di [10, 20, 30, 40, 50] in maniera sequenziale. L'espressione viene valutata su ciascuna feature nella traccia. I risultati restituiti includono la feature iniziale ma non la feature finale.

Esempio 1:TrackFieldWindow("MyField,-1,2)

Esempio 2: TrackFieldWindow("MyField,-2,0)[0]

Esempio 3: TrackFieldWindow("MyField,0,3)[2]

Esempio 1: se si esegue la valutazione su ciascuna feature, la tabella mostra i risultati seguenti.

Feature valutata

Risultato

10

[10, 20]

20

[10, 20, 30]

30

[20,30,40]

40

[30, 40, 50]

50

[40, 50]

Esempio 2: se si esegue la valutazione sull'indice 2 (il valore è 30), restituisce: 10.

Esempio 3: se si esegue la valutazione sull'indice 2 (il valore è 30), restituisce: 50.

TrackGeometryWindow(<startIndex>, <endIndex>)

Restituisce un array di valori rappresentante la geometria per l'indice temporale specificato. La funzione finestra consente di andare avanti e indietro nel tempo. L'espressione viene valutata su ciascuna feature nella traccia.

  • La feature attuale è sull'indice 0.
  • I valori positivi rappresentano feature che si verificano in futuro, dopo il valore corrente. Ad esempio, la posizione 1 è il valore successivo nell'array.
  • I numeri negativi rappresentano feature accadute nel passato, prima della feature precedente. Ad esempio, -1 è il valore precedente nell'array.

MyField ha ordinato i valori di [10, 20, 30, 40, 50] in maniera sequenziale. La geometria delle feature [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]. L'espressione viene valutata su ciascuna feature nella traccia. I risultati restituiti includono la feature iniziale ma non la feature finale.

Esempio 1: TrackGeometryWindow(-1,2)

Esempio 2: TrackGeometryWindow(0,1)[0] su un dataset polilinea

Esempio 3: TrackGeometryWindow(0,1)[0] su un dataset polilinea

Esempio 4: trova il valore X del punto precedente TrackGeometryWindow(-1,0)[0]["x"]

Esempio 1: se si esegue la valutazione su ciascuna feature, la tabella mostra i risultati seguenti.

Feature valutata

Risultato

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

Esempio 2: le polilinee vengono restituite nel seguente 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]]]}]

Esempio 3: i poligoni vengono restituiti nel seguente formato: [{"rings":[[[-7882559.1197999995,6376090.883500002],[-7893142.474300001,6042715.216800004],[-8544018.775999999,6045361.0554000065],[-8544018.775999999,6376090.883500002],[-7882559.1197999995,6376090.883500002]]]}]

Esempio 4: valutato sull'indice 2 (il valore è 30): 2.

TrackWindow(<value1>, <value2>)

Restituisce un array di valori rappresentante la geometria e tutti gli attributi per l'indice temporale specificato. La funzione finestra consente di andare avanti e indietro nel tempo.

  • La feature attuale è sull'indice 0.
  • I valori positivi rappresentano feature che si verificano in futuro, dopo il valore corrente. Ad esempio, la posizione 1 è il valore successivo nell'array.
  • I numeri negativi rappresentano feature accadute nel passato, prima della feature precedente. Ad esempio, -1 è il valore precedente nell'array.

MyField ha ordinato in maniera sequenziale i valori di [10, 20, 30, 40, 50], oltre ai campi objectID, globalID e instant_datetime. La geometria delle feature [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]. L'espressione viene valutata su ciascuna feature nella traccia. I risultati restituiti includono la feature iniziale ma non la feature finale.

Esempio 1: TrackWindow(-1,0)[0]

Esempio 2: geometry(TrackWindow(-1,0)[0]["x"]

Esempio 1: se si esegue la valutazione su ciascuna feature, la tabella mostra i risultati seguenti.

Feature valutata

Risultato

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

Esempio 2: valutato sull'indice 2 (il valore è 30): 2.

Utilizzare le seguenti espressioni di tracce per calcolare la distanza, la velocità e l'accelerazione sulle tracce.

Tutte le distanze vengono calcolate in metri, la velocità in metri al secondo e l'accelerazione in metri al secondo quadrato. Le distanze vengono calcolate con distanze geodetiche.

FunzioneSpiegazione

TracciamentoDistanzaCorrente()

La somma delle distanze percorse tra le osservazioni dalla prima all'attuale osservazione.

TracciamentoDistanzaCorrente(valore)

La somma delle distanze percorse tra le osservazioni dalla prima all'osservazione attuale più il valore specificato.

TracciaFinestraDistanza(valore1, valore2)

Le distanze tra il primo (incluso) e l'ultimo valore (esclusivo) in una finestra sull'osservazione corrente (0).

TracciamentoVelocitàCorrente()

La velocità tra l'osservazione precedente e quella attuale.

TracciamentoVelocitàA(valore1)

La velocità all'osservazione rispetto all'osservazione corrente. Per esempio, al valore2, è la velocità dell'osservazione due osservazioni dopo l'osservazione attuale.

TracciamentoFinestraVelocità(valore1, valore2)

I valori di velocità tra il primo (incluso) e l'ultimo valore (esclusivo) in una finestra intorno all'osservazione corrente (0).

TracciamentoAccelerazioneCorrente()

L'accelerazione tra l'osservazione precedente e quella attuale.

TracciamentoAccelerazioneCorrente(valore1)

L'accelerazione all'osservazione rispetto all'osservazione corrente.

TracciamentoFinestraAccelerazione(valore1, valore2)

I valori di accelerazione tra il primo (incluso) e l'ultimo valore (esclusivo) in una finestra intorno all'osservazione corrente (0).

I calcoli di esempio per la distanza, la velocità e l'accelerazione useranno gli esempi della seguente immagine:

Traccia immagine esempio con sei punti

FunzioneRisultato esempio

TracciamentoDistanzaCorrente()

ID puntoRisultato (metri)

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

TracciamentoDistanzaA(2)

ID puntoRisultato (metri)

P1

0 + 80 + 60 = 140

P2

30 + 80 + 60 = 170

P3

35 + 30 + 80 + 60 = 205

P4

25 + 35 + 30 + 80 + 60 = 230

P5

null

P6

null

TracciamentoFinestraDistanza(-1, 2)

ID puntoRisultato (metri)

P1

[0, 60]

P2

[0, 60, 140]

P3

[60, 140, 170]

P4

[140, 170, 205]

P5

[170, 205, 230]

P6

[205, 230]

TracciamentoVelocitàCorrente()

ID puntoRisultato (metri/secondo)

P1

0

P2

60/60

1

P3

80/60

1,33

P4

30/60

,5

P5

35/60

0,5833

P6

25/60

0,4167

TracciamentoVelocitàA(2)

ID puntoRisultato (metri/secondo)

P1

80/60

1,33

P2

30/60

,5

P3

35/60

0,5833

P4

25/60

0,4167

P5

null

P6

null

TracciamentoFinestraVelocità(-1, 2)

ID puntoRisultato (metri/secondo)

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]

TracciamentoAccelerazioneCorrente()

ID puntoRisultato (metri/secondo²)

P1

0

P2

0,0167

P3

0,0056

P4

-0,0014

P5

0,0014

P6

-0,0028

TracciamentoAccelerazioneA(2)

ID puntoRisultato (metri/secondo²)

P1

0,0056

P2

-0,0014

P3

0,0014

P4

-0,0028

P5

null

P6

null

TracciamentoFinestraAccelerazione(-1, 2)

ID puntoRisultato (metri/secondo²)

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]