Vous pouvez spécifier la taille d'une zone tampon à l'aide des Outils GeoAnalytics en saisissant des valeurs, en utilisant un champ ou en faisant appel à d'autres méthodes. Dans certains cas, vous pouvez effectuer un calcul mathématique pour définir la taille de la zone tampon. Vous pouvez effectuer des calculs simples ou complexes et les appliquer à tous les enregistrements. Ce calcul s'applique à chaque entité. Les sections suivantes comprennent des exemples d'utilisation d'une expression de zone tampon. Les calculs sont effectués lorsque l'analyse est exécutée sur votre instance d'ArcGIS GeoAnalytics Server.
Dans ArcGIS Enterprise 10.6 et ultérieur, les expressions sont mises en forme à l’aide des expressions Arcade. Avec Arcade, les noms de champ sont présentés sous la forme $feature["field name"] ou $feature.fieldname. La première option, $feature["field name"], est requise lorsqu’un nom de champ contient un espace. Tous les exemples proposés ci-après utilisent cette option. GeoAnalytics Server n’utilise pas d’expressions Arcade dans Enterprise 10.5 ou 10.5.1.
En savoir plus sur les expressions de zone tampon gérées par les versions 10.5 et 10.5.1
Pour en savoir plus sur les expressions Arcade
Les expressions de zone tampon sont utilisées par les outils Reconstruire les pistes et Créer des zones tampon.
Les outils suivants utilisent des expressions Arcade dans GeoAnalytics Server pour Enterprise 10.6 et version ultérieure :
- Reconstruct Tracks (Reconstruire les pistes) pour mettre des expressions en zone tampon
- Create Buffers (Créer des zones tampon) pour mettre des expressions en zone tampon
- Join Features (Joindre des entités) pour joindre des expressions
- Calculate Field (Calculer un champ) pour calculer des valeurs de champ
- Detect Incidents (Détecter les incidents) pour détecter des incidents avec des expressions de début et de fin
Exemples d’opérateur mathématique et de fonction
Les expressions de zone tampon peuvent traiter les nombres mathématiquement. Le tableau ci-dessous présente des exemples d’opérations disponibles.
Pour en savoir plus sur les opérations mathématiques et les fonctions dans Arcade
Opérateur | Explication | Exemple |
---|---|---|
a + b | Renvoie la somme de a plus b. | fieldname contient la valeur 1.5 $feature["fieldname"] + 2.5 4.0 |
a - b | Renvoie la différence de a moins b. | fieldname contient la valeur 3.3 $feature["fieldname"]- 2.2 1,1 |
a * b | Renvoie le produit de a multiplié par b. | fieldname contient la valeur 2.0 $feature["fieldname"] * 2.2 4.4 |
a / b | Renvoie le quotient de a divisé par b. | fieldname contient la valeur 4.0 $feature["fieldname"] / 1.25 3.2 |
abs( a ) | Renvoie la valeur absolue (positive) de a. | fieldname contient la valeur -1.5 abs($feature["fieldname"]) 1.5 |
log ( a ) | Renvoie le logarithme naturel (base E) de a. | fieldname contient la valeur 1 log($feature["fieldname"]) 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["fieldname"]) 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["fieldname"]) 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["fieldname"]) 0 |
sqrt( a ) | Renvoie la racine carrée de a. | fieldname contient la valeur 9 sqrt($feature["fieldname"]) 3 |
min( a, b ) | Renvoie la valeur a ou b la plus faible. | fieldname contient les valeurs 1.5 et -3 min($feature["fieldname"], -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["fieldname1"], $feature["fieldname2"]) 1.5 |
constrain(<value>,<low>,<high>) | Renvoie la valeur en entrée si elle est comprise dans les limites de contrainte. Si la valeur est inférieure à la valeur basse, elle renvoie la valeur basse. Si la valeur est supérieure à la valeur élevée, elle renvoie la valeur élevée. | Exemple 1 : constrain( $feature["distance"], 0, 10) Renvoie 0 si distance est inférieure à 0, 10 si distance est supérieure à 10 et distance dans les autres cas. Exemple 2 : constrain($feature['Store dist'], 6, distance) Renvoie 6 si Store dist est inférieure à 6, distance si Store dist est supérieure à distance et Store dist dans les autres cas. |
Multiplication
$feature["Distance"] * 2
Exemples d’opérateurs logiques
Outre les expressions mathématiques simples, vous pouvez utiliser d'autres fonctions avancées pour appliquer des expressions de zone tampon.
Fonction | Explication | Exemple | Résultat |
---|---|---|---|
iif(<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 :
| iif($feature["field1"] > $feature["field2"], $feature["field1"], 0) iif($feature["field1"] > $feature["field2"], iif($feature["field2"] = 0, $feature["field3"], $feature["field4"]), 0) | Renvoie field1 si field1 est supérieur à field2 et 0 dans les autres cas. Renvoie le résultat de la deuxième fonction iif 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.
| when(($feature["field1"] + 10) > 1, 1,($feature["field2"] + 10) > 2 , 2, $feature["field3"]) | 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.
| decode($feature["field1"] + 3 , $feature["field1"], 1, $feature["field2"], 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 de fonctions de distance
Les expressions de zone tampon peuvent redéfinir des valeurs numériques en distance linéaire.
Fonction | Explication | Exemple | Résultat |
---|---|---|---|
as_meters( <value> ) | Applique un calcul en supposant que les valeurs en entrée sont exprimées en mètres. | as_meters( $feature["fieldname"] ) as_meters(150) | Les résultats sont bufférisés avec une distance de 150 mètres. |
as_kilometers( <value> ) | Applique un calcul en supposant que les valeurs en entrée sont en kilomètres. | as_kilometers( $feature["fieldname"] ) as_kilometers(150) | Les résultats sont bufférisés avec une distance de 150 kilomètres. |
as_feet( <value> ) | Applique un calcul en supposant que les valeurs en entrée sont en pieds. | as_feet( $feature["fieldname"] ) as_feet(150) | Les résultats sont bufférisés avec une distance de 150 pieds. |
as_yards( <value> ) | Applique un calcul en supposant que les valeurs en entrée sont en yards. | as_yards( $feature["fieldname"] ) as_yards(150) | Les résultats sont bufférisés avec une distance de 150 yards. |
as_nautical_miles( <value> ) | Applique un calcul en supposant que les valeurs en entrée sont en milles nautiques. | as_nautical_miles( $feature["fieldname"] ) as_nautical_miles(150) | Les résultats sont bufférisés avec une distance de 150 milles nautiques. |
as_miles( <value> ) | Applique un calcul en supposant que les valeurs en entrée sont en milles terrestres. | as_miles( $feature["fieldname"] ) as_miles(150) | Les résultats sont bufférisés avec une distance de 150 miles. |
Opérateurs conditionnels
Les instructions conditionnelles peuvent utiliser les opérateurs suivants :
Opérateur | Explication | Exemple | Ré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 | True |
a != b | a est différent de b | abs(-3) != -3 | True |
a == b | a est égal à b | abs(-5) == 5 | True |
<condition1> || <condition2> | La condition 1 ou la condition 2 est satisfaite. | (abs(-5) == 5) || (10 < 2) | True |
<condition1> && <condition2> | La condition 1 et la condition 2 sont satisfaites. | (abs(-5) == 5) && (10 < 2) | False |
Exemples d’expressions permettant de gérer les pistes
Dans ArcGIS Enterprise 10.6.1 ou version ultérieure, vous pouvez utiliser des équations de gestion du suivi dans Arcade avec l’outil Reconstruire les pistes.
Fonction | Explication | Exemple | Résultat | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TrackStartTime() | 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 TrackStartTime() | 1483315200000 | ||||||||||||
TrackDuration() | 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. TrackDuration() | 172800000 | ||||||||||||
TrackCurrentTime() | Calcule l’heure actuelle dans une piste. | Utilisation d’une entité survenant le 3 janvier 2017 à 9 h 00. TrackCurrentTime() | 1483434000000 | ||||||||||||
TrackIndex | Renvoie l’index temporel de l’entité en cours de calcul. | Calculant cette valeur sur la première entité dans une piste. TrackIndex | 0 | ||||||||||||
TrackFieldWindow(<fieldName>, <startIndex>, <endIndex>) | Renvoie une matrice de valeurs dans le champ donné pour l’index de temps spécifié. La fonction de fenêtre vous permet d’avancer et de reculer dans le temps. L’expression est évaluée à chaque entité de la piste.
| MyField comporte les valeurs classées séquentiellement suivantes : [10, 20, 30, 40, 50]. L’expression est évaluée au niveau de chaque entité de la trace. Les résultats sont renvoyés en intégrant l’entité de départ et en excluant l’entité de fin. Exemple 1 : TrackFieldWindow("MyField,-1,2) Exemple 2 : TrackFieldWindow("MyField,-2,0)[0] Exemple 3 : TrackFieldWindow("MyField,0,3)[2] | Exemple 1 : lorsque l’expression est évaluée à chaque entité, la table présente les résultats suivants.
Exemple 2 : si l’expression est évaluée à l’index 2 (valeur de 30), elle renvoie : 10. Exemple 3 : si l’expression est évaluée à l’index 2 (valeur de 30), elle renvoie : 50. | ||||||||||||
TrackGeometryWindow(<startIndex>, <endIndex>) | 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 à chaque entité de la piste.
| MyField comporte les valeurs classées séquentiellement suivantes : [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 intégrant l’entité de départ et en excluant l’entité de fin. Exemple 1 : TrackGeometryWindow(-1,2) Exemple 2 : TrackGeometryWindow(0,1)[0] sur un jeu de données polylignes Exemple 3 : TrackGeometryWindow(0,1)[0] sur un jeu de données surfaciques Exemple 4 : recherche de la valeur X du point précédent TrackGeometryWindow(-1,0)[0]["x"] | Exemple 1 : lorsque l’expression est évaluée à chaque entité, la table présente les résultats suivants.
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 : l’expression est évaluée à l’index 2 (valeur de 30) : 2 | ||||||||||||
TrackWindow(<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 de fenêtre vous permet d’avancer et de reculer dans le temps.
| MyField comporte les valeurs classées séquentiellement suivantes : [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 au niveau de chaque entité de la trace. Les résultats sont renvoyés en intégrant l’entité de départ et en excluant l’entité de fin. Exemple 1 : TrackWindow(-1,0)[0] Exemple 2 : geometry(TrackWindow(-1,0)[0]["x"] | Exemple 1 : lorsque l’expression est évaluée à chaque entité, la table présente les résultats suivants.
Exemple 2 : l’expression est évaluée à l’index 2 (valeur de 30) : 2 |
Utilisez les expressions de piste suivantes pour calculer la distance, la vitesse et l’accélération sur les pistes dans ArcGIS Enterprise 10.9 ou version ultérieure.
Tous les calculs de distance sont exprimés en mètres, la vitesse est exprimée en mètres par seconde et l’accélération, en mètres par seconde carré. Les distances sont mesurées à l’aide des distances géodésiques.
Fonction | Explication |
---|---|
TrackCurrentDistance() | Somme des distances parcourues entre les observations de la première observation à l’observation actuelle. |
TrackDistanceAt(value) | Somme des distances parcourues entre les observations de la première observation à l’observation le service actuelle, plus la valeur donnée. |
TrackDistanceWindow(value1, value2) | Distances entre la première valeur (incluse) et la dernière valeur (exclue) dans une fenêtre sur l’observation actuelle (0). |
TrackCurrentSpeed() | Vitesse entre l’observation précédente et l’observation actuelle. |
TrackSpeedAt(value1) | Vitesse au niveau de l’observation par rapport à l’observation actuelle. Par exemple, à la valeur 2, il s’agit de la vitesse au niveau de l’observation, deux observations après l’observation actuelle. |
TrackSpeedWindow(value1, value2) | Valeurs de vitesse entre la première valeur (incluse) et la dernière valeur (exclue) dans une fenêtre autour de l’observation actuelle (0). |
TrackCurrentAcceleration() | Accélération entre l’observation précédente et l’observation actuelle. |
TrackAccelerationAt(value1) | Accélération au niveau de l’observation par rapport à l’observation actuelle. |
TrackAccelerationWindow(value1, value2) | Valeurs d’accélération entre la première valeur (incluse) et la dernière valeur (exclue) dans une fenêtre autour de l’observation actuelle (0). |
Les exemples de calcul de distance, de vitesse et d’accélération utilisent les exemples de l’image ci-après.
Fonction | Exemple de résultat | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TrackCurrentDistance() |
| ||||||||||||||
TrackDistanceAt(2) |
| ||||||||||||||
TrackDistanceWindow(-1, 2) |
| ||||||||||||||
TrackCurrentSpeed() |
| ||||||||||||||
TrackSpeedAt(2) |
| ||||||||||||||
TrackSpeedWindow(-1, 2) |
| ||||||||||||||
TrackCurrentAcceleration() |
| ||||||||||||||
TrackAccelerationAt(2) |
| ||||||||||||||
TrackAccelerationWindow(-1, 2) |
|
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?