Webinaire « Un jeu d’Arcade : exploration du langage de script d’Esri » — Q et R – Partie 2
Nous continuons à nous surpasser pour répondre à vos questions sur Arcade.
Bienvenue à la deuxième partie du billet de blogue sur les questions à propos du webinaire Un jeu d’Arcade : exploration du langage de script d’Esri.
Dans la première partie, Emilie Rabeau a répondu à vos questions générales sur Arcade ainsi que sur les profils Visualization (visualisation) et Attribute Rules (règles d’attributs). C’est maintenant à mon tour de répondre à vos commentaires sur mes démonstrations concernant les profils Labeling (étiquetage) et Popup (fenêtre contextuelle).
Avant de commencer, veuillez admirer la photo que j’ai prise à un concert d’Arcade Fire.
Vue de Mark lors du concert d’Arcade Fire à Las Vegas en 2017 (avec une étrange banderole qui s’interpose)
Profil Labeling (étiquetage)
Les étiquettes habituelles vous ennuient? Faites passer votre étiquetage à un niveau supérieur avec Arcade. Créez des étiquettes à partir de plusieurs champs ou utilisez des étiquettes multilignes. Manipulez le texte et lancez des calculs sans modifier vos données de base! Avec quelques lignes de code Arcade, vous pouvez rehausser vos étiquettes d’entité et les utiliser dans tout le système ArcGIS.
Exemple d’utilisation du profil Labeling (étiquetage) pour créer des étiquettes multilignes avec texte formaté, calculs à la volée et instructions conditionnelles [voir la carte web présentée lors de la démonstration]
Q : Peut-on désormais ajouter une ligne dans les étiquettes? / Existe-t-il un moyen de créer des étiquettes multilignes dans une carte web ArcGIS Online? J’ai ajouté la constante TextFormatting.NewLine, mais elle ne semble pas s’afficher correctement sur la carte.
R : Comme vous pouvez le voir dans la capture d’écran ci-dessus, il est possible d’obtenir des étiquettes multilignes avec Arcade en ajoutant la constante TextFormatting.NewLine à votre expression. Toutefois, elles sont uniquement prises en charge par ArcGIS API for JavaScript 4.x, qui comprend la nouvelle visionneuse de carte (en version bêta au moment de la publication de ce billet de blogue) d’ArcGIS Online et d’ArcGIS Enterprise. La version « classique » de la visionneuse de carte n’a pas été créée à partir de la dernière génération de l’API. Essayez donc d’ajouter vos étiquettes multilignes dans une carte web en utilisant la nouvelle visionneuse de carte et tout devrait fonctionner à merveille.
Q : ArcGIS Pro prend-il également en charge les étiquettes multilignes créées avec des expressions Arcade?
R : Oui. Dans ArcGIS Pro, vous pouvez ajouter la constante TextFormatting.NewLine à vos expressions Arcade pour créer des étiquettes empilées. Toutefois, vous devez taper manuellement la constante lorsque vous ajoutez des expressions d’étiquetage dans ArcGIS Pro, car les constantes ne sont pas énumérées dans ce dialogue d’ArcGIS Pro.
Q : L’ajout de plusieurs expressions à une étiquette ralentit-il la génération des étiquettes lorsque les jeux de données sont volumineux?
R : Le langage de programmation Arcade est léger et agile. Comme la valeur de retour du profil d’étiquetage est du texte (qui est léger par nature), l’ajout d’une expression d’étiquetage en plusieurs parties ne devrait pas ralentir la génération. Toutefois, ça dépend toujours de la complexité de l’expression : plus vous écrivez de lignes de code, plus le temps de calcul pour créer l’étiquette est long. Par exemple, si votre code contient de nombreuses boucles qui se répètent dans de grands jeux de données, il est possible que la vitesse de génération soit réduite. En règle générale, il est recommandé de garder votre code aussi simple que possible et de le tester.
Q : Pourquoi utilisez-vous un guillemet simple (') pour encadrer du texte et un guillemet double (") pour encadrer un espace?
R : Une personne très observatrice a remarqué que j’ai utilisé des guillemets simples autour de certaines parties de texte et des guillemets doubles pour concaténer un caractère d’espace dans une de mes expressions.
Extrait de code montrant les guillemets simples et doubles utilisés pour représenter les objets de texte
Cet extrait de code illustre bien le concept d’« indulgence » d’Arcade. Vous pouvez entourer les chaînes de guillemets simples ou doubles; il n’y a pas de règles de syntaxe strictes à cet égard.
Q : Peut-on utiliser Arcade pour changer la couleur d’une partie d’une étiquette?
R : Bonne nouvelle : vous pouvez utiliser ArcGIS API for JavaScript 4.x pour créer des expressions Arcade qui définissent les propriétés de couleur des étiquettes de votre couche d’entités ou de scène. Vous devez toutefois concevoir une application à partir de zéro. Mauvaise nouvelle : cette fonctionnalité n’est actuellement pas offerte dans le profil Labeling (étiquetage). Cette amélioration a cependant été demandée sur le site ArcGIS Ideas. Nous n’avons plus qu’à croiser les doigts et à souhaiter qu’elle soit mise en œuvre bientôt.
Q : Pourriez-vous effectuer un étiquetage à partir de données d’une table reliée?
R : Arcade peut interagir avec des données provenant de tables reliées avec l’objet FeatureSet (ensemble d’entités). Toutefois, cette fonction est uniquement offerte pour les profils Attribute Rules (règles d’attributs), Popup (fenêtre contextuelle) et Field Calculate (calcul de champ), et non pour le profil Labeling (étiquetage). Consultez la section sur les fenêtres contextuelles de ce billet de blogue pour en apprendre plus sur la façon d’accéder aux tables reliées à l’aide du profil Popup (fenêtre contextuelle).
Q : Peut-on lier les données d’étiquette aux renseignements présentés en temps réel par les flux GeoEvent ou d’autres couches de service d’entité hébergé afin de créer des supports visuels toujours à jour (pour la météo, la circulation, la vitesse du vent, le débit des rivières, la circulation aérienne, etc.)?
R : Au fur et à mesure qu’Arcade recalcule les valeurs affichées, les étiquettes s’actualisent en fonction des modifications apportées en temps réel aux données du flux. Par exemple, la démonstration sur l’étiquetage comprenait une couche d’entités de stations météorologiques qui présentait les conditions météorologiques actualisées toutes les heures. De plus, ArcGIS Velocity, un outil de traitement et d’analyse de données massives en temps réel d’ArcGIS Online, prend en charge les expressions Arcade. Le profil Velocity (vitesse) permet d’utiliser des expressions dans plusieurs outils exclusifs à ArcGIS Velocity.
Profils Popup (fenêtre contextuelle) et Field Calculate (calcul de champ)
Arcade vous permet d’agrémenter le contenu des fenêtres contextuelles. Vous pouvez créer des expressions qui accèdent à des ensembles d’entités à partir de plusieurs couches et qui affichent les valeurs de retour dans la fenêtre contextuelle. Il est même possible de générer des géométries d’entités à la volée afin d’intégrer des relations spatiales à vos expressions. Ces expressions peuvent ensuite être employées pour mettre à jour votre source de données selon les valeurs calculées.
Exemple d’utilisation du profil Popup (fenêtre contextuelle) qui a généré des valeurs à la volée en fonction des attributs et de la géométrie des polygones de zone locale ainsi que des points de graffiti [voir la carte web présentée lors de la démonstration]
Q : Pouvez-vous créer des fenêtres contextuelles dans ArcGIS Pro au moyen d’expressions d’attributs, puis partager cette couche sur ArcGIS Online? / Pouvez-vous transférer la fenêtre contextuelle d’ArcGIS Pro à ArcGIS Online?
R : Oui, oui, oui! Le point fort d’Arcade est sa portabilité. J’aurais pu concevoir la fenêtre contextuelle avec des expressions Arcade dans une carte ArcGIS Pro et la partager sur ArcGIS Online. La carte web générée aurait les mêmes expressions que celles de la fenêtre contextuelle. Comme toujours, vous devez tester la fenêtre contextuelle dans ArcGIS Online pour vous assurer que son apparence et sa fonctionnalité vous conviennent.
Q : Doit-on tenir compte de facteurs de performance lorsqu’on utilise Arcade pour appliquer des fonctions à la volée sur les géométries (c’est-à-dire, des points dans un polygone)? / Vous mentionnez qu’Arcade peut être intense dans ArcGIS Online. Parlez-vous de la vitesse ou de l’utilisation de crédits?
R : Tout d’abord, Arcade ne consomme PAS de crédits! Les crédits ne sont utilisés que dans des circonstances précises (par exemple, stockage de données en ligne, exécution de certaines analyses ou utilisation de contenu supérieur). Arcade ne correspond à aucune de ces circonstances.
Lorsque j’ai mentionné l’« intensité » d’Arcade, je faisais référence à l’accès aux renseignements des objets FeatureSet (ensemble d’entités). Cette fonction vous permet d’accéder aux attributs de n’importe quelle couche de votre carte, y compris les données spatiales. Vous pouvez alors utiliser les fonctions Geometry (géométrie) pour déterminer les relations spatiales entre les couches. Comme vous l’avez vu dans la démonstration, ces fonctions sont puissantes. Elles permettent la création d’une fenêtre contextuelle avec des expressions utilisant les géométries de plusieurs couches pour générer des valeurs.
C’est à cette étape que vous devez faire preuve de prudence. Normalement, lorsque vous cliquez sur une entité, la fenêtre contextuelle s’affiche rapidement. Dans la démonstration sur les graffitis (qui comprenait des fonctions géométriques appliquées à des ensembles d’entités), on remarque un petit délai entre le moment où on clique sur l’entité et où la fenêtre contextuelle s’affiche. Le délai est très court, mais il y en a bien un. De nombreux calculs sont effectués en arrière-plan pour obtenir les valeurs en temps réel. Imaginez si j’avais fait la même démonstration avec des jeux de données plus volumineux ou des géométries plus complexes. L’affichage sera encore plus lent. Conclusion : utilisez les objets FeatureSet (ensemble d’entités) de façon intelligente dans vos fenêtres contextuelles. Trouvez un équilibre entre les performances et l’expérience utilisateur.
Vous voulez en savoir davantage sur les objets FeatureSet (ensemble d’entités)? Ce billet de blogue est un excellent point de départ.
Q : Pouvez-vous extraire des données de tables reliées et les transférer dans des fenêtres contextuelles avec Arcade? / Si une table reliée comprend un filtre, Arcade respectera-t-il ce filtre ou effectuera-t-il l’analyse sur l’ensemble de la table?
R : Comme je l’ai mentionné ci-dessus, l’objet FeatureSet (ensemble d’entités) vous permet d’extraire des renseignements d’une autre couche et de les intégrer à votre carte ainsi que d’accéder aux données d’une table reliée. Et, oui, Arcade respectera les filtres. Exploitez les filtres pour extraire uniquement les données pertinentes d’une table reliée. Il s’agit d’un sujet trop vaste pour l’espace dont je dispose ici, alors je vous invite à consulter ce billet de blogue qui vous explique comment afficher les données tirées d’une table reliée dans une fenêtre contextuelle avec l’objet FeatureSet (ensemble d’entités) d’Arcade.
Q : Est-il facile de sélectionner quelque chose selon la zone tampon ou une distance (par exemple, le tronçon routier le plus près d’un point)?
R : « Facile » est un mot relatif, mais il est possible de le faire en créant un peu de script. Arcade offre une multitude de fonctions Geometry (géométrie) pour accomplir ce type de tâches. Voici une approche théorique (mais non testée) :
- Créez une zone tampon autour du point sur lequel vous avez cliqué pour afficher la fenêtre contextuelle (« $feature »).
- À partir du polygone créé, utilisez la fonction Intersects (intersections) pour obtenir un objet FeatureSet (ensemble d’entités) avec les rues qui se trouvent dans la zone tampon.
- À l’aide d’une boucle « For » (pour), répétez la commande pour chaque entité de l’objet FeatureSet (ensemble d’entités) et calculez la distance entre la rue et le point.
- Examinez les distances pour trouver la plus courte (à l’aide d’un tableau, d’un dictionnaire ou d’un code qui compare les valeurs pendant le calcul) et déterminer l’entité la plus près.
- Obtenez les valeurs de l’entité qui doivent s’afficher dans la fenêtre contextuelle.
Cette conversation sur le site Communauté Esri porte également sur un processus similaire.
Q : Pourquoi multiplier par 100,1 plutôt que par 100 pour obtenir un pourcentage?
R : Une personne très attentive a remarqué ce détail dans la démonstration. Examinons le code.
Extrait de code d’une expression qui calcule une valeur en pourcentage
Cette expression divise la somme des graffitis de chaque zone locale par le total des graffitis dans toute la ville afin d’obtenir un ratio. Puisque je voulais afficher cette valeur sous forme de pourcentage (0-100) plutôt qu’avec une décimale (0-1), j’ai multiplié le résultat par 100. Le « 1 » après « 100 » est en fait un paramètre de la fonction Round (arrondir), qui indique le nombre de décimales auquel arrondir la valeur.
Q : Pour l’appariement de champ Transfer Attributes (transférer des attributs), peut-on utiliser Python ou SQL plutôt qu’Arcade pour créer les expressions?
R : Dans ArcGIS Pro, la fonction Transfer Attributes (transférer des attributs) vous permet de transférer les attributs d’une entité dans une couche source vers une entité dans une couche cible. Pour établir les conditions du transfert, vous devez configurer la fonction d’appariement de champ. Arcade comprend un profil Field Mapping (appariement de champ) afin de définir la correspondance entre les champs des couches source et cible. Pour le moment, Arcade est la seule option pour créer des scripts d’expressions logiques avec l’outil Transfer Attributes (transférer des attributs). Si vous devez employer SQL ou Python pour exécuter cet outil, veuillez soumettre l’idée sur le site ArcGIS Ideas; les développeurs logiciels le consultent régulièrement.
Q : Les valeurs calculées pour les champs seraient-elles automatiquement appliquées à la nouvelle base de données?
R : Dans la démonstration, j’ai montré rapidement comment utiliser l’objet FeatureSet (ensemble d’entités) pour calculer les valeurs de champ. Malheureusement, je n’avais pas le temps nécessaire pour exécuter l’expression et consulter les résultats. Si j’avais eu plus de temps, j’aurais pu vous montrer comment les calculs s’appliquent à tous les enregistrements de ma table. Toutefois, si j’avais eu une sélection ou un filtre, les calculs ne se seraient appliqués qu’à ce sous-ensemble d’enregistrements. Vous pouvez également modifier votre expression Arcade afin qu’elle détermine les enregistrements auxquels vous voulez appliquer les valeurs de retour.
Q : Est-il prévu que la fonction Attachments (pièces jointes) soit ajoutée à Arcade pour les fenêtres contextuelles? Pour l’instant, elle n’est accessible que pour la fonction Field Calculate (calcul de champ).
R : Il est vrai que la fonction Attachments (pièces jointes) est offerte uniquement pour les profils Field Calculate (calcul de champ) et Attribute Rules (règles d’attributs). À ma connaissance, il n’est pas prévu que cette fonction soit ajoutée au profil Popup (fenêtre contextuelle). Ce serait une excellente suggestion à soumettre sur le site ArcGIS Ideas. En attendant, si vous souhaitez afficher l’image jointe dans la fenêtre contextuelle plutôt qu’un simple hyperlien menant à l’image, consultez ce document génial qui explique comment afficher les pièces jointes dans des fenêtres contextuelles avec des expressions Arcade.
Et voilà qui conclut la deuxième partie exhaustive du billet de blogue regroupant vos questions pointues sur Arcade. Merci encore d’avoir lu nos billets de blogue et assisté au webinaire Un jeu d’Arcade : exploration du langage de script d’Esri le 11 février 2021. Si vous voulez revivre la magie, l’enregistrement du webinaire et le fichier PDF des diapositives de la présentation sont accessibles en ligne.
Une dernière petite publicité avant votre départ! Vous pouvez accéder au groupe du webinaire sur ArcGIS Online pour revoir nos démonstrations, consulter des extraits de code et parcourir d’autres ressources intéressantes (d’autres sont à venir!). Tout ce contenu se trouve à l’adresse suivante : bit.ly/arcadesfirewebinar (tout en minuscules).
Ce groupe ArcGIS Online propose des ressources supplémentaires issues de ce webinaire sur Arcade.
C’est tout! Emilie et moi vous remercions encore une fois d’avoir participé à notre version de « jeu d’Arcade ». C’était amusant pour nous; j’espère que ça l’était aussi pour vous. D’ici notre prochaine rencontre, AMUSONS-NOUS!
Mark et Emilie vous envoient la main et vous souhaitent bonne chance dans votre programmation Arcade
Ce billet a été écrit en anglais par Mark Ho et peut être consulté ici.