Certains outils GeoAnalytics Desktop utilisent des expressions Arcade dans les analyses. Les outils et la fonction des expressions sont présentés ci-après.
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. Tous les outils utilisent le format $feature["field name"], à l’exception de l’outil Joindre les entités. Pour Joindre les entités, utilisez $target["field name"] et $join["field name"] afin de spécifier le jeu de données à utiliser.
En savoir plus sur les expressions Arcade
Les expressions Arcade sont utilisées par les outils suivants de la boîte à outils GeoAnalytics Desktop :
- Reconstruire les pistes et Créer des zones tampon : utilisez des expressions de zone tampon pour effectuer un calcul mathématique afin de 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é.
- Reconstruire les pistes : utilise des expressions afin de spécifier une condition pour fractionner des pistes. Lorsque les points répondent aux critères, les pistes sont fractionnées et résumées dans différentes pistes. Vous pouvez appliquer des conditions simples et des conditions basées sur les pistes. Par exemple, vous pouvez fractionner des pistes lorsque la vitesse du point actuel est inférieure à deux mètres par seconde (TrackCurrentSpeed() < 2).
- Joindre les entités : utilisez des expressions de jointure afin de spécifier une condition pour sélectionner les entités devant être incluses dans la jointure. Vous pouvez appliquer des conditions de jointure simples (telles que field a > field c), mais également des conditions avancées. Les conditions sont testées par rapport à chaque entité pour identifier le contenu analysé.
- Calculer un champ : effectuez des calculs simples ou complexes et appliquez-les à tous les enregistrements. Ce calcul s’applique à chaque entité.
- Détecter les incidents : déterminez des conditions de début et de fin pour les incidents. Utilisez des expressions de début et de fin pour détecter les incidents. Le résultat d’une condition de l’outil Détecter les incidents doit toujours être true ou false. Utilisez une condition pour déterminer si une entité doit être incluse dans un incident. Les conditions sont testées par rapport à chaque entité pour identifier les entités qui sont des incidents.
Exemples d’opérations et de fonctions mathématiques
Les expressions peuvent traiter les nombres mathématiquement. La table suivante montre un exemple d’opérations disponibles.
En savoir plus sur les opérations et les fonctions mathématiques disponibles 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. |
Exemples de fonctions de texte
Les expressions Arcade peuvent traiter du texte. La table suivante montre un exemple d’opérations disponibles.
En savoir plus sur les fonctions de texte disponibles dans Arcade
Opérateur | Explication | Exemple | Résultat |
---|---|---|---|
concatenate(<values>, <separator>) | Concatène les valeurs et renvoie une chaîne.
| fieldname contient la valeur GeoAnalytics. Concatenate ([$features["fieldname"], "is", "great!"], ' ') | GeoAnalytics est super ! |
find(<searchText>, <text>, <startPos>) | Trouve une chaîne à l’intérieur d’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["fieldname2"], $feature["fieldname1"]) | 2 |
lower(<value>) | Convertit une chaîne en minuscule.
| fieldname contient la valeur GEOANALYTICS. lower($feature["fieldname"]) | GeoAnalytics |
Exemple de texte utilisant find et lower.
find(("north"), lower("146NorthStreet"))
Exemples de fonctions de date
Les expressions Arcade peuvent traiter des dates. La table suivante montre un exemple d’opérations disponibles. Dans Arcade, les valeurs de mois, de jour et d’heure sont comprises respectivement entre 0 (janvier) et 11 (décembre), entre le 1er et le 31, et entre 0 (12:00 a.m.) et 23 (11:00 p.m.) heures, 0 et 59 minutes, 0 et 59 secondes et 0 et 999 millisecondes.
En savoir plus sur les fonctions de date disponibles dans Arcade
Opérateur | Explication | Exemple | Résultat |
---|---|---|---|
date(<value>, <month>, <day>, <hour>, <minute>) | Analyse 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 Exemple 2 : 14 Jan 2017 00:00:00 Exemple 3 : renvoie l'heure actuelle |
DateDiff(<date1>, <date2>, <units>) | 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()) Exemple 2 : DateDiff(Date(2017,1,14,0), Date(), "Years") | Le résultat dépend du moment où est exécutée 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["fieldname"]) 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 |
Exemples de fonction logique
Outre les expressions mathématiques simples, vous pouvez utiliser des 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. |
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’équations gérant les pistes
Les outils Détecter les incidents, Calculer un champ et Reconstruire les pistes peuvent utiliser des équations de gestion du suivi dans Arcade. Dans l’outil Calculer un champ, les équations de gestion des pistes peuvent être utilisées lorsque la couche en entrée est temporelle, lorsque L’expression est dotée de propriétés de gestion de pistes et qu’un ou plusieurs champs sont spécifiés pour identifier 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 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 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 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 : 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 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. Cette opération est similaire aux calculs utilisés dans l’outil Calculer les statistiques de déplacement.
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) |
|
Vous avez un commentaire à formuler concernant cette rubrique ?