Les outils suivants de la boîte à outils GeoAnalytics Tools permettent d’appliquer une expression :
- Create Buffers (Créer des zones tampon) pour les expressions de zones tampon.
- Reconstruct Tracks (Reconstruire les pistes) pour les expressions de zones tampon.
- Join Features (Entités jointes) pour les conditions de jointure.
En savoir plus sur les expressions dans Join Features (Entités jointes)
- Detect Incidents (Détecter les incidents) pour les conditions d’incident.
En savoir plus sur les expressions dans Detect Incidents (Détecter les incidents)
- Calculate Field (Calculer un champ) pour calculer les valeurs des champs.
En savoir plus sur les expressions dans Calculate Field (Calculer un champ)
Les GeoAnalytics Tools qui utilisent des expressions ont des fonctions diverses, mais sont également limités quant aux expressions applicables. Dans ArcGIS 10.6, toutes les expressions utilisées dans GeoAnalytic prennent en charge Arcade.
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 GeoAnalytics Tools 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ée 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 et les fonctions mathématiques disponibles dans Arcade
Opérateur | Explication | Exemple | Ré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["nom du champ"] - 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. journal($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, laquelle peut ensuite être utilisée dans une expression mathématique. Les outils Reconstruct Tracks (Reconstruire les pistes) et Create Buffers (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.
Fonction | Explication | Exemple | Résultat |
---|---|---|---|
as_meters( <valeur> ) | Applique un calcul en supposant que les valeurs en entrée sont en mètres. | as_meters( $feature["nom de 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 de 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 de 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 de 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 de 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 de 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é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 |
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
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 d’expressions permettant de gérer les pistes
Reconstruct Tracks (Reconstruire les pistes) peut utiliser des équations gérant les pistes dans Arcade, comme illustré dans le tableau suivant :
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 de temps 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 de temps de l’entité qui est calculée. | Calcul de 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 a des valeurs ordonnées de manière séquentielle : [10, 20, 30, 40, 50]. 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 : TrackFieldWindow("MyField,-1,2) Exemple 2 : TrackFieldWindow("MyField,-2,0)[0] Exemple 3 : TrackFieldWindow("MyField,0,3)[2] | Exemple 1 : si elle est évaluée à chaque entité, la table contient les résultats suivants :
Exemple 2 : si elle est évaluée à l’index 2 (valeur 30), elle renvoie 10. Exemple 3 : lorsque 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 de 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 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 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 : si elle est évaluée à chaque entité, la table contient 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 de l’index de temps spécifié. La fonction de fenêtre vous permet d’avancer et de reculer dans le temps.
| 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 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 : si elle est évaluée à chaque entité, la table contient 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.
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, depuis la première observation jusqu’à 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 (inclusive) et la dernière valeur (exclusive) dans une fenêtre autour de 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 à l’observation située deux observations après l’observation actuelle. |
TrackSpeedWindow(value1, value2) | Valeurs de vitesse entre la première valeur (inclusive) et la dernière valeur (exclusive) 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 (inclusive) et la dernière valeur (exclusive) dans une fenêtre autour de l’observation actuelle (0). |
Les calculs d’exemple de la distance, de la vitesse et de l’accélération s’appuieront sur l’image suivante :
Fonction | Exemple de résultat | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TrackCurrentDistance() |
| ||||||||||||||
TrackDistanceAt(2) |
| ||||||||||||||
TrackDistanceWindow(-1, 2) |
| ||||||||||||||
TrackCurrentSpeed() |
| ||||||||||||||
TrackSpeedAt(2) |
| ||||||||||||||
TrackSpeedWindow(-1, 2) |
| ||||||||||||||
TrackCurrentAcceleration() |
| ||||||||||||||
TrackAccelerationAt(2) |
| ||||||||||||||
TrackAccelerationWindow(-1, 2) |
|
Vous avez un commentaire à formuler concernant cette rubrique ?