Skip to main content

Expressions de l’outil Join Features (Joindre les entités)

L’outil Join Features (Joindre les entités) utilise des expressions ArcGIS 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 lors de l’exécution de l’analyse sur ArcGIS GeoAnalytics Server.

Dans ArcGIS Enterprise 10.6 et versions ultérieures, les expressions sont mises en forme à l’aide d’Arcade. Dans Arcade, les noms de champ dans Join Features (Joindre des entités) sont présentés sous la forme $target["field name"] et $join["field name"] ou $target.fieldname et $join.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 :

L’option Join Features (Joindre des entités) requiert deux entrées, une couche cible et une couche de jointure. Ainsi, toute expression Arcade utilisée dans Join Features (Joindre des entités) 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 de jointure nommé field2 est la suivante : $target["field1"] > $join["field2"]. Dans les autres outils GeoAnalytics, les expressions utilisent un format différent : $feature["fieldname"].

En savoir plus sur les expressions Arcade

Les outils suivants utilisent des expressions Arcade dans GeoAnalytics Server :

Héritage :

L’extension ArcGIS GeoAnalytics Server sera bientôt obsolète dans ArcGIS Enterprise. La version finale de GeoAnalytics‏ Server a été incluse avec ArcGIS Enterprise 11.3. Ces outils sont disponibles dans ArcGIS Enterprise 11.3 et les versions antérieures.

Exemples d’opérations et de fonctions mathématiques

Les expressions peuvent traiter les nombres mathématiquement. Le tableau suivant présente des exemples d’opérations disponibles :

En savoir plus sur les fonctions et opérations mathématiques 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.

fieldnamecontient 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 la valeur distance est inférieure à 0, 10 si la valeur 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 suivant présente des exemples d’opérations disponibles :

En savoir plus sur les fonctions de texte dans Arcade

Opérateur

Explication

Exemple

Résultat

concatenate( <values>, <separator>)

Concatène les valeurs et renvoie une chaîne.

  • values : tableau de valeurs de chaînes à concaténer.

  • separator (facultatif) : séparateur à utiliser pour la concaténation si le paramètre values est un tableau ou chaîne à concaténer si une valeur unique est fournie pour le premier paramètre. Si elle n’est pas renseignée, elle sera vide.

fieldname contient la valeur GeoAnalytics

Concatenate ([$target["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.

  • searchText : sous-chaîne à rechercher.

  • text : texte à rechercher.

  • startPos (facultatif) : l’index en base zéro de l’emplacement dans la chaîne où s’effectue la recherche.

fieldname1 contient la valeur 14NorthStreet et fieldname2 contient la valeur North

find($target["fieldname2"], $join["fieldname1"])

2

lower(<value>)

Convertit une chaîne en minuscule.

  • value : chaîne à convertir 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 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 dans Arcade

Dans Arcade, les valeurs relatives aux mois sont comprises entre 0 (janvier) et 11 (décembre), les valeurs relatives aux jours sont comprises entre 1 et 31, les valeurs relatives aux heures sont comprises entre 0 (minuit) et 23 (23 h 00), les valeurs relatives aux minutes et aux secondes sont comprises entre 0 et 59, et les valeurs relatives aux millisecondes sont comprises entre 0 et 999. Les dates Arcade renvoient les valeurs temporelles de la localisation GeoAnalytics Server.

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.

  • value (facultatif) : nombre de millisecondes écoulées depuis le 1er janvier 1970 UTC ou nombre représentant une année. Si une année est spécifiée, le mois et le jour doivent être également renseignés dans les paramètres suivants. Cette valeur peut également être une chaîne de date ou une chaîne ISO 8601 à convertir en date.

  • month (facultatif) : mois (de 0 à 11), où 0 correspond à janvier et 11 à décembre.

  • day (facultatif) : jour du mois (de 1 à 31).

  • hour (facultatif) : heure de la journée (de 0 à 23).

  • minute (facultatif) : minute de l’heure (de 0 à 59).

  • second (facultatif) : seconde de la minute (de 0 à 59).

  • millisecond (facultatif) : milliseconde de la seconde (de 0 à 999).

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

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.

  • date1 : valeur de date à partir de laquelle une deuxième date est soustraite.

  • date2 : valeur de date à soustraire de la première date indiquée.

  • units (facultatif) : unités utilisées pour renvoyer la différence entre les deux dates données. Les unités prises en charge sont milliseconds, seconds, minutes, hours, days, months et years. La valeur par défaut est milliseconds.

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

  • value : valeur de date identifiant l’anné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 : le champ fieldname est un champ de type chaîne au format chaîne ISO 8601 dont la valeur est 2012-09-27

Exemple 2 : le champ 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, illustrés dans le tableau suivant, peuvent être utilisés pour joindre des entités :

En savoir plus sur les fonctions logiques 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 la valeur distance est inférieure à 0, 10 si la valeur 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 :

  • Un champ numérique. Si le nom du champ renferme un espace, utilisez des crochets.

  • Un nombre.

  • Une fonction.

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.

  • expression : une expression.

  • result : résultat de l’expression. Il peut s’agir d’un nombre ou d’un champ.

  • default : valeur facultative si les expressions ne font l’objet d’aucune correspondance.

when(($target["field1"] + 10) > 1, 1,($join["field2"] + 10) > 2 , 2, $target["field3"])

Si field1 + 10 est supérieur à 1, renvoie 1. Sinon, vérifie si field2 + 10 est supérieur à 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.

  • conditional val : valeur conditionnelle. Il peut s’agir d’un champ ou d’une expression.

  • case : valeur à comparer à conditional val.

  • result : résultat si le cas correspond à conditional val.

  • defaultValue : valeur facultative si aucune autre valeur n’est true.

decode($target["field1"] + 3 , $join["field1"], 1, $target["field2"], 2, 0)

Compare l’égalité entre la valeur conditionnelle field1 + 3 et le cas 1 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.