Skip To Content

Utiliser des expressions de zone tampon avec des Outils GeoAnalytics

Les outils suivants de la boîte à outils Outils GeoAnalytics permettent d’appliquer une expression.

Les outils Outils GeoAnalytics qui utilisent des expressions ont des fonctions diverses, mais sont également limités quant aux expressions qu’ils peuvent appliquer. Dans ArcGIS 10.6, toutes les expressions utilisées dans GeoAnalytics prennent en charge Arcade.

Pour en savoir plus sur les fonctions Arcade

Reconstruct Tracks (Reconstruire les pistes) et Create Buffers (Créer des zones tampon)

Les expressions de zone tampon sont utilisées par les outils Reconstruire les pistes et Créer des zones tampon.

La taille des zones tampon est habituellement spécifiée à l’aide de valeurs de constantes ou de champs. Toutefois, vous pouvez spécifier une taille de zone tampon dans les Outils GeoAnalytics autrement qu’en saisissant des valeurs. Dans certains cas, vous pouvez effectuer un calcul mathématique pour définir la taille de la zone tampon. Ce calcul s’applique à chaque entité analysée. Les calculs sont appliqués lorsque l’analyse est exécutées sur votre instance ArcGIS GeoAnalytics Server.

Les sections ci-après proposent des exemples d’expressions de zone tampon.

Exemples d’opérateur mathématique et de fonction

Les expressions de zone tampon peuvent traiter mathématiquement les chiffres. Le tableau ci-dessous présente des exemples d’opérations disponibles.

En savoir plus sur les opérations mathématiques et les fonctions disponibles dans Arcade

OpérateurExplicationExempleRésultat

a + b

a plus b.

fieldname contient la valeur 1.5

$feature["nom du champ"] + 2.5

4.0

a - b

a moins b.

fieldname contient la valeur 3.3

$feature["fieldname"] - 2.2

1.1

a * b

a multiplié par b.

fieldname contient la valeur 2.0

$feature["nom du champ"] * 2.2

4.4

a / b

a divisé par b.

fieldname contient la valeur 4.0

$feature["nom du champ"] / 1.25

3.2

abs( a )

Renvoie la valeur absolue (positive) de a.

fieldname contient la valeur -1.5

abs($feature["nom du champ"])

1.5

log ( a )

Renvoie le logarithme naturel (base E) de a.

fieldname contient la valeur 1

log($feature["nom du champ"])

0

sin ( a )

Renvoie le sinus trigonométrique de a. On suppose que l'entrée est un angle en radians.

fieldname contient la valeur 1.5707

sin($feature["nom du champ"])

1

cos( a )

Renvoie le cosinus trigonométrique de a. On suppose que l'entrée est un angle en radians.

fieldname contient la valeur 0

cos($feature["nom du champ"])

1

tan( a )

Renvoie la tangente de a. On suppose que l'entrée est un angle en radians.

fieldname contient la valeur 0

tan($feature["nom du champ"])

0

sqrt( a )

Renvoie la racine carrée de a.

fieldname contient la valeur 9

sqrt($feature["nom du champ"])

3

min( a, b )

Renvoie la valeur la plus basse entre a et b.

fieldname contient les valeurs 1.5 et -3

min($feature["nom du champ"], -3)

-3

max( a, b )

Renvoie la valeur la plus élevée entre a et b.

fieldname1 contient la valeur 1.5 et fieldname2 contient la valeur -3

max($feature["nom du champ1"], $feature["nom du champ2"])

1.5

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

Renvoie la valeur en entrée si elle est comprise dans les limites de contrainte. Si la valeur en entrée est inférieure à la valeur basse, elle renvoie la valeur basse. Si la valeur en entrée est supérieure à la valeur haute, elle renvoie la valeur haute.

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

constrain($feature[’Store dist’], 6, distance)

Renvoie 0 si distance est inférieure à 0, 10 si distance est supérieure à 10 et distance dans les autres cas.

Renvoie 6 si Store dist est inférieure à 6, distance si Store dist est supérieure à distance et Store dist dans les autres cas.

Exemple de multiplication pour une expression de zone tampon

$feature["Distance"] * 2

Exemples de fonctions de distance

Les fonctions as distance appliquent des valeurs numériques à une distance linéaire, lesquelles peuvent ensuite être utilisées dans une expression mathématique. Les outils Reconstruire les pistes et Créer des zones tampon peuvent utiliser des fonctions as distance. Si vous utilisez une fonction numérique sans fonction as distance, l’unité est le mètre par défaut.

FonctionExplicationExempleRésultat

as_meters( <valeur> )

Applique un calcul en supposant que les valeurs en entrée sont en mètres.

as_meters( $feature["nom du champ"] )

as_meters(150)

Les résultats sont bufférisés avec une distance de 150 mètres.

as_kilometers( <valeur> )

Applique un calcul en supposant que les valeurs en entrée sont en kilomètres.

as_kilometers( $feature["nom du champ"] )

as_kilometers(150)

Les résultats sont bufférisés avec une distance de 150 kilomètres.

as_feet( <valeur> )

Applique un calcul en supposant que les valeurs en entrée sont en pieds.

as_feet( $feature["nom du champ"] )

as_feet(150)

Les résultats sont bufférisés avec une distance de 150 pieds.

as_yards( <valeur> )

Applique un calcul en supposant que les valeurs en entrée sont en yards.

as_yards( $feature["nom du champ"] )

as_yards(150)

Les résultats sont bufférisés avec une distance de 150 yards.

as_nautical_miles( <valeur> )

Applique un calcul en supposant que les valeurs en entrée sont en milles nautiques.

as_nautical_miles( $feature["nom du champ"] )

as_nautical_miles(150)

Les résultats sont bufférisés avec une distance de 150 milles nautiques.

as_miles( <valeur> )

Applique un calcul en supposant que les valeurs en entrée sont en milles terrestres.

as_miles( $feature["nom du champ"] )

as_miles(150)

Les résultats sont bufférisés avec une distance de 150 miles.

Pour chaque entité, multipliez le champ Distance, en supposant que la valeur est exprimée en kilomètres, puis ajoutez 10 mètres pour une expression de zone tampon.

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

Opérateurs conditionnels

Les instructions conditionnelles peuvent utiliser les opérateurs suivants :

OpérateurExplicationExempleRésultats

a > b

a < b

a est supérieur à b

a est inférieur à b

10 > 2

False

a >= b

a <= b

a est supérieur ou égal à b

a est inférieur ou égal à b

abs(-10) >= 10

Vrai

a != b

a est différent de b

abs(-3) != -3

Vrai

a == b

a est égal à b

abs(-5) == 5

Vrai

<condition1> || <condition2>

La condition 1 ou la condition 2 est satisfaite.

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

Vrai

<condition1> && <condition2>

La condition 1 et la condition 2 sont satisfaites.

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

False

Exemple d'une expression de zone tampon qui utilise des conditions et fonctions avancées

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

Exemple de multiplication pour une condition de jointure

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

Exemples d’opérateurs logiques

Outre les opérateurs conditionnels, des opérateurs logiques plus avancés peuvent être utilisés pour créer des zones tampon, comme illustré dans le tableau ci-après.

En savoir plus sur les fonctions logiques disponibles dans Arcade

FonctionExplicationExempleRésultat

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

Renvoie une valeur si une condition est true et renvoie une autre valeur si la condition est false.

<true value> et <false value> peuvent être :

  • Un champ numérique. Si le nom du champ renferme un espace, utilisez des crochets.
  • Un nombre.
  • Une fonction.

iff($feature["champ1"] > $feature["champ2"], $feature["champ1"], 0)

iff($feature["champ1"] > $feature["champ2"], iff($feature["champ2"] = 0, $feature["champ3"], $feature["champ4"]), 0)

Renvoie field1 si field1 est supérieur à field2 et 0 dans les autres cas.

Renvoie le résultat de la deuxième fonction iff si field1 est supérieur à field2 et 0 dans les autres cas.

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

Évalue une série d’expressions jusqu’à ce que l’une soit true.

  • expression : une expression.
  • result : résultat de l’expression. Il peut s’agir d’un nombre ou d’un champ.
  • default : une valeur facultative si les expressions ne font l’objet d’aucune correspondance.

when(($feature["champ1"] + 10) > 1, 1,($feature["champ2"] + 10) > 2, 2, $feature["champ3"])

Si field1 + 10 est supérieur à 1, renvoie 1. Sinon, vérifie si field2 + 10 est supérieur à 2. Renvoie 2 si c'est le cas. Si ce n'est pas le cas, renvoie field3.

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

Évalue une expression et compare sa valeur aux paramètres suivants. Si l’expression correspond, elle renvoie la valeur du paramètre suivant. Si aucune correspondance n’est trouvée, le dernier paramètre peut être une valeur de renvoi par défaut.

  • conditional val : valeur conditionnelle. Il peut s’agir d’un champ ou d’une expression.
  • case : une valeur à comparer à la conditional val.
  • result : le résultat si le cas correspond à la conditional val.
  • defaultValue : une valeur facultative si aucune autre valeur n'est true.

decode($feature["champ1"] + 3 , $feature["champ1"], 1, $feature["champ2"], 2, 0)

Compare l'égalité entre la valeur conditionnelle field1 + 3 et cas1 field1. Si la condition est true, renvoie 1. Si la condition est false, compare l'égalité entre field1 + 3 et field2. Si la condition est true, renvoie 2 ; sinon, renvoie 0.

Exemples d’expressions permettant de gérer les pistes

Dans ArcGIS 10.6.1, Reconstruct Tracks (Reconstruire les pistes) peut utiliser des équations permettant de gérer les pistes dans Arcade, comme illustré dans le tableau suivant :

FonctionExplicationExempleRésultat

$track.field["nom de champ"].history(<value1>)

Renvoie un groupe de valeurs dans le champ donné pour l'index de temps spécifié.

  • Un nombre positif renvoie une matrice allant de l’index donné à l’entité actuelle.
  • Un nombre négatif renvoie l’intervalle de temps actuel et les valeurs d’intervalles de temps <value1> - 1 précédentes.

Le champ MyField a des valeurs ordonnées de manière séquentielle : [10, 20, 30, 40, 50, 60, 70, 80]. La valeur 10 est à l’index 0 et la valeur 80, à l’index 7. Les expressions sont évaluées à chaque index et des exemples présentent l’index utilisé pour les exemples. n Représente le nombre d’entités dans la séquence et k, l’index évalué.

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

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

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

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

Si l’exemple 1 est évalué à l’index k, il renvoie une matrice de valeurs allant de l’index 3 à l’index k. Si vous évaluez à l’index 6 (70), une matrice de valeurs à l’index [3, 4, 5, 6] est renvoyée de sorte que la matrice soit [40, 50, 60, 70].

L’exemple 2 renvoie une matrice de valeurs calculées à l’aide de la formule index k moins la valeur donnée moins 1 (k-2). Si elle est évaluée à l’index 6 (value = 70), les valeurs de k-2, k-1 et k sont renvoyées [50, 60, 70].

L’exemple 3 renvoie la moyenne des valeurs de l’index k-1 à k. Si vous l’évaluez à l’index  4 (value = 50), vous obtenez la moyenne de value 50 (index 3) et value 60 (index 4), qui est égale à 65. Si vous l’évaluiez à l’index 7, le résultat correspondrait à la moyenne de 70 et 80, qui est égale à 75.

L’exemple 4 renvoie le premier élément (index 0) de la matrice créée dans l’exemple 2, qui est 50.

$track.field["nom de champ"].history(< value1>,<value2>)

Renvoie un groupe de valeurs en commençant par l’index1 (<value1>) jusqu’à l’index2 (<value2>).

MyField a des valeurs ordonnées séquentiellement de [10, 20, 30, 40, 50, 60, 70, 80]. 10 se trouve à l’index 0, et 80 à l’index 7. Pour cet exemple, les expressions sont évaluées à l’index 7 (80).

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

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

Exemple 1 : [60]

Exemple 2 : [40, 50, 60]

$track.time.start

Calcule l’heure de début d’une piste en millisecondes depuis la dernière époque.

Utilisation d’une piste commençant le 2 janvier 2017

$track.time.start

1483315200000

$track.time.duration

Calcule la durée d'une piste en millisecondes depuis le début jusqu’à l’intervalle temporel actuel.

Utilisation d’une piste commençant le 2 janvier 2017, la date actuelle étant le 4 janvier 2017.

$track.time.duration

172800000

$track.time.current

Calcule l’heure actuelle dans une piste.

Utilisation d’une entité survenant le 3 janvier 2017 à 9 h 00.

$track.time.current

1483434000000

$track.index

Renvoie l’index temporel de l’entité en cours de calcul.

Calculant cette valeur sur la première entité dans une piste.

$track.index

0

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

Renvoie l’heure d’entité plus l’heure créée à l'aide de la <valeur> numérique et des <unités> données.

  • value : la valeur numérique à ajouter à l’heure de l’entité.
  • units : les unités de la valeur (<value>) numérique. Les unités prises en charge sont les millisecondes, secondes, minutes, heures, jours, mois et années. La valeur par défaut est en millisecondes.

Utilisation d’une entité en date du 2 janvier 2017 à 14 h.

Exemple 1 : $track.T(1, "hours")

Exemple 2 : $track.T(-2, "days")

Exemple 1 : renvoie le 2 janvier à 15 h : 1483369200000

Exemple 2 : renvoie le 31 décembre à 14 h : 1483192800000

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

Renvoie une matrice de valeurs dans le champ donné pour l’index de temps spécifié. La fonction window permet d’avancer et de remonter dans le temps. L’expression est évaluée au niveau de chaque entité dans la piste.

  • L’entité actuelle est à l’index 0.
  • Les valeurs positives représentent les entités qui ont lieu dans le futur, après la valeur actuelle. Par exemple, la position 1 est la prochaine valeur de la matrice.
  • Les nombres négatifs représentent les entités qui ont eu lieu dans le passé, avant l’entité précédente. Par exemple, -1 est la valeur précédente dans la matrice.

La fonction window est disponible dans ArcGIS Enterprise 10.6.1.

Le champ MyField a des valeurs ordonnées de manière séquentielle : [10, 20, 30, 40, 50]. L’expression est évaluée au niveau de chaque entité de la piste. Les résultats sont renvoyés en incluant l’entité de début, mais pas l’entité de fin.

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

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

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

Exemple 1 : si elle est évaluée à chaque entité, la table contient les résultats suivants.

Entité évaluée

Résultat

10

[10,20]

20

[10, 20, 30]

30

[20,30,40]

40

[30,40,50]

50

[40, 50]

Exemple 2 : si elle est évaluée à l’index 2 (valeur 30), elle renvoie : 10.

Exemple 3 : si elle est évaluée à l’index 2 (valeur 30), elle renvoie : 50.

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

Renvoie une matrice de valeurs représentant la géométrie pour l’index de temps spécifié. La fonction window permet d’avancer et de remonter dans le temps. L’expression est évaluée au niveau de chaque entité de la piste.

  • L’entité actuelle est à l’index 0.
  • Les valeurs positives représentent les entités qui ont lieu dans le futur, après la valeur actuelle. Par exemple, la position 1 est la prochaine valeur de la matrice.
  • Les nombres négatifs représentent les entités qui ont eu lieu dans le passé, avant l’entité précédente. Par exemple, -1 est la valeur précédente dans la matrice.

La fonction window est disponible dans ArcGIS Enterprise 10.6.1.

Le champ MyField a des valeurs ordonnées de manière séquentielle : [10, 20, 30, 40, 50]. La géométrie des entités est [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}] L’expression est évaluée à chaque entité de la piste. Les résultats sont renvoyés en incluant l’entité de début, mais pas l’entité de fin.

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

Exemple 2 : $track.geometry.window(0,1)[0] sur un jeu de données de polylignes

Exemple 3 : $track.geometry.window(0,1)[0] sur un jeu de données de polygones

Exemple 4 : recherchez la valeur X du point précédent $track.geometry.window(-1,0)[0]["x"]

Exemple 1 : si elle est évaluée à chaque entité, la table contient les résultats suivants.

Entité évaluée

Résultat

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

Exemple 2 : les polylignes sont renvoyées au format suivant : [{"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]]]}]

Exemple 3 : les polygones sont renvoyés au format suivant : [{"rings":[[[-7882559.1197999995,6376090.883500002],[-7893142.474300001,6042715.216800004],[-8544018.775999999,6045361.0554000065],[-8544018.775999999,6376090.883500002],[-7882559.1197999995,6376090.883500002]]]}]

Exemple 4 : évaluée à l’index 2 (valeur 20) : 1

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

Renvoie une matrice de valeurs représentant la géométrie et tous les attributs pour l’index de temps spécifié. La fonction window permet d’avancer et de remonter dans le temps.

  • L’entité actuelle est à l’index 0.
  • Les valeurs positives représentent les entités qui ont lieu dans le futur, après la valeur actuelle. Par exemple, la position 1 est la prochaine valeur de la matrice.
  • Les nombres négatifs représentent les entités qui ont eu lieu dans le passé, avant l’entité précédente. Par exemple, -1 est la valeur précédente dans la matrice.

La fonction window est disponible dans ArcGIS Enterprise 10.6.1.

MyField a des valeurs ordonnées de manière séquentielle : [10, 20, 30, 40, 50], en plus des champs objectID, globalID et instant_datetime. La géométrie des entités est [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}] L’expression est évaluée à chaque entité de la piste. Les résultats sont renvoyés en incluant l’entité de début, mais pas l’entité de fin.

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

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

Exemple 1 : si elle est évaluée à chaque entité, la table contient les résultats suivants.

Entité évaluée

Résultat

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

Exemple 2 : évaluée à l’index 2 (valeur 20) : 1