L’outil Entités jointes utilise les expressions Arcade pour spécifier les conditions de jointure. Dans certains cas, vous voudrez spécifier une condition pour sélectionner des 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é. 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 d’Arcade. Avec Arcade, les noms de champ sont présentés sous la forme $target["field name"] et $join["field name"] ou $target.fieldname et $jon.fieldname. La première option, $target["field name"] et $join["field name"], est requise lorsqu’un nom de champ contient un espace. Tous les exemples proposés ci-après utilisent cette option.
Remarque :
Entités jointes requiert deux entrées, une couche cible et une couche jointe. Ainsi, toute expression Arcade utilisée dans Entités jointes doit indiquer le jeu de données utilisé. Par exemple, l’opération permettant de calculer si un champ de la couche cible nommé field1 est supérieur à un champ de la couche jointe nommé field2 est la suivante : $target["field1"] > $join["field2"]. Dans les autres GeoAnalytics Tools, les expressions utilisent un format différent : $feature["fieldname"].Pour en savoir plus sur les expressions Arcade
Les expressions Arcade sont utilisées par les outils suivants dans GeoAnalytics Server :
- Expressions de zone tampon dans Reconstruire les pistes
- Expressions de zone tampon dans Créer des zones tampon
- Entités jointes utilisant des expressions de début et de fin dans Entités jointes
- Valeurs des champs de calcul dans Calculer un champ
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 $target["fieldname"] + 2.5 | 4.0 |
a - b | a moins b. | fieldname contient la valeur 3.3 $target["fieldname"]- 2.2 | 1,1 |
a * b | a multiplié par b. | fieldname contient la valeur 2.0 $join["fieldname"] * 2.2 | 4.4 |
a / b | a divisé par b. | fieldname contient la valeur 4.0 $join["fieldname"] / 1.25 | 3.2 |
abs( a ) | Renvoie la valeur absolue (positive) de a. | fieldname contient la valeur -1.5 abs($target["fieldname"]) | 1.5 |
log ( a ) | Renvoie le logarithme naturel (base E) de a. | fieldname contient la valeur 1 log($join["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($target["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($join["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($target["fieldname"]) | 0 |
sqrt( a ) | Renvoie la racine carrée de a. | fieldname contient la valeur 9 sqrt($join["fieldname"]) | 3 |
min( a, b ) | Renvoie la valeur la plus basse entre a et b. | fieldname contient les valeurs 1,5 et -3 min($join["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($target["fieldname1"], $join["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 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($target["distance"], 0, 10) constrain($join['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 condition de jointure utilisant un champ du jeu de données cible.
$target["Distance"] * 2 > $join["DistField"]
Exemples de fonctions de texte
Les expressions de condition de jointure 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 ([$target["fieldname"], "is", "great!"], ' ') | 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($target["fieldname2"], $join["fieldname1"]) | 2 |
lower(<value>) | Passe un segment en minuscules.
| fieldname contient la valeur GEOANALYTICS lower($join["fieldname"]) | GeoAnalytics |
Exemple de texte utilisant find et lower.
find(("north"), lower("146NorthStreet")) == False
Exemples de fonctions de date
Les expressions de condition de jointure 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($target["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()) Exemple 2 : DateDiff(Date(2017,1,14,0), Date(), "Years") | 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($join["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 2 : fieldname est un champ de type chaîne au format chaîne ISO 8601 dont la valeur est Year(Date($target["fieldname"])) | 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 | 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’opérateurs logiques
Outre les opérateurs conditionnels, des opérateurs logiques plus avancés peuvent être utilisés pour joindre des entités.
En savoir plus sur les fonctions logiques disponibles dans Arcade
Fonction | Explication | Exemple | Résultat |
---|---|---|---|
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( $target["distance"], 0, 10) constrain($join['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. |
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($target["field1"] > $join["field2"], $join["field1"], 0) iif($target["field1"] > $join["field2"], iif($target["field2"] = 0, $join["field3"], $target["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(($target["field1"] + 10) > 1, 1,($join["field2"] + 10) > 2 , 2, $target["field3"]) | 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> ) | É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($target["field1"] + 3 , $join["field1"], 1, $target["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. |
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?