La boîte à outils Outils GeoAnalytics (Outils GeoAnalytics) contient de nombreux outils permettant d’appliquer une expression.
- Expressions de zone tampon dans Créer des zones tampon
- Expressions de zone tampon dans Reconstruire les pistes
- Conditions de jointures dans Entités jointes
- Conditions d’incident dans Détecter les incidents
En savoir plus sur les expressions dans Détecter les incidents
- Calcul des valeurs de champ dans Calculer un champ
Les Outils GeoAnalytics qui utilisent des expressions ont des fonctions diverses, mais sont également limités quant aux expressions qu’ils peuvent appliquer. Dans la version 10.6, toutes les expressions utilisées dans GeoAnalytics Server prennent en charge Arcade.
En savoir plus sur les fonctions Arcade
Expressions dans Calculer un champ
L’outil Calculer un champ utilise des expressions pour calculer les valeurs du champ. Utilisez des expressions pour déterminer la façon dont chaque entité doit être renseignée. Le résultat d’une expression de l’outil Calculer un champ doit être du même type que le champ. Les sections suivantes proposent des exemples d’expressions.
Exemples d’opérateur mathématique et de fonction
Les expressions peuvent traiter les nombres mathématiquement. 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é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["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 le calcul d’une valeur de champ.
$feature["Distance"] * 2
Exemples de fonctions de texte
Les expressions de l’outil Calculer un champ peuvent traiter du texte. Le tableau ci-dessous présente des exemples d’opérations disponibles.
En savoir plus sur les fonctions de texte disponibles dans Arcade
Opérateur | Explication | Exemple | Résultat |
---|---|---|---|
concatenate( <valeurs>, <séparateur>) | Concatène les valeurs et renvoie une chaîne.
| fieldname contient la valeur GeoAnalytics concatenate ([$features["fieldname"], "est", "super !"], ' ') | GeoAnalytics est formidable ! |
find(<searchText>, <text>, <startPos>) | Trouve une chaîne dans une chaîne. Les caractères génériques ne sont pas pris en charge.
| fieldname1 contient la valeur 14NorthStreet et fieldname2 contient la valeur North find($feature["nom du champ2"], $feature["nom du champ1"]) | 2 |
lower(<value>) | Passe un segment en minuscules.
| fieldname contient la valeur GEOANALYTICS lower($feature["nom du champ"]) | GeoAnalytics |
Exemple de texte utilisant find et lower.
find(("north"), lower("146NorthStreet"))
Exemples de fonctions de date
Les expressions de l’outil Calculer un champ peuvent traiter des dates. Le tableau ci-dessous présente des exemples d’opérations disponibles.
En savoir plus sur les fonctions de date disponibles dans Arcade
Dans Arcade, les valeurs de mois vont de 0 (janvier) à 11 (décembre), les jours vont de 1 à 31, les heures vont de 0 (minuit) à 23 (23 h), les minutes et secondes vont de 0 à 59 et les millisecondes, de 0 à 999. Les dates Arcade renvoient des valeurs de temps dans l’emplacement de votre GeoAnalytics Server.
Opérateur | Explication | Exemple | Résultat |
---|---|---|---|
date( <value>, <month>, <day>, <hour>, <minute>) | Décrit une valeur ou un ensemble de valeurs dans une chaîne de date.
| fieldname contient la valeur 1476987783555 Exemple 1 : Date($features["fieldname"]) Exemple 2 : Date(2017,0, 14,0) Exemple 3 : Date() | Exemple 1 : 20 oct 2016 11:23:03 am Exemple 2 : 14 jan 2017 00:00:00 am Exemple 3 : renvoie l'heure actuelle |
DateDiff(<date1>, <date2>, <unités>) | Opère une soustraction entre deux dates et renvoie la différence dans les unités spécifiées.
| Exemple 1 : DateDiff(Date(2017,1,14,0), Date()) Example 2: DateDiff(Date(2017,1,14,0), Date(), "Années") | Le résultat variera en fonction du moment où vous exécutez cette commande. Exemple 1 : -20532129137 Exemple 2 : -0,6546783768647119 |
Year(<dateValue>) | Renvoie l'année de la date donnée.
| Exemple 1 : fieldname est un champ de type Date dont la valeur est 09 Oct 2017 04:30:43 pm Year($feature["nom du champ"]) Exemple 2 : fieldname est un champ de type chaîne au format chaîne ISO 8601 dont la valeur est 2012-09-27 | Exemple 1 : 2017 Exemple 2 : 2012 |
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 | 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 |
Exemples d’opérateurs logiques
Outre les opérateurs conditionnels, des opérateurs logiques plus avancés peuvent être utilisés pour calculer des champs.
En savoir plus sur les fonctions logiques disponibles dans Arcade
Fonction | Explication | Exemple | Résultat |
---|---|---|---|
iff(<condition>,<true value>,<false value>) | Renvoie une valeur si une condition s'avère true, et une autre valeur si la condition s'avère false. <true value> et <false value> peuvent être :
| 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>) | Evalue une série d’expressions jusqu’à ce que l’une soit true.
| when(($feature["champ1"] + 10) > 1, 1,($feature["champ2"] + 10) > 2, 2, $feature["champ3"]) | Si field1 + 10 est supérieure à 1, elle renvoie 1. Si ce n’est pas le cas, elle vérifie si field2 + 10 est supérieure à 2. Si c’est le cas, elle renvoie 2. Si ce n'est pas le cas, renvoie field3. |
decode(<conditional val> , <case1> , <result1>, <case2>, <result2>, ... <caseN>, <resultN>, <defaultValue> ) | La fonction decode é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["champ1"] + 3 , $feature["champ1"], 1, $feature["champ2"], 2, 0) | Compare l'égalité entre la valeur conditionnelle (conditional val) 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
Certains Outils GeoAnalytics, tels que Détecter les incidents et Calculer un champ, peuvent utiliser des équations permettant de gérer les pistes dans Arcade. Dans Calculer un champ, ces équations peuvent être utilisées lorsque la couche en entrée est temporelle, que la case The expression is track aware (L’expression permet de gérer les pistes) est cochée et qu’un ou plusieurs champs sont définis pour identifier les pistes.
Fonction | Explication | Exemple | Résultat | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$track.field["nom de champ"].history(<value1>) | Renvoie un groupe de valeurs dans le champ donné pour l'index de temps spécifié.
| 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.
| 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.
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.
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.
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.
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.
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.
Exemple 2 : évaluée à l’index 2 (valeur 20) : 1 |
Vous avez un commentaire à formuler concernant cette rubrique ?