Conseils & Astuces ArcGIS Online - N°164
N° 164 - Utiliser Arcade et une API tiers pour comparer les valeurs des
entités dans vos fenêtres contextuelles
Lors de la conception de vos fenêtres contextuelles, il peut s'avérer
pertinent de pouvoir comparer la valeur de l'entité actuelle aux valeurs des
autres entités de la couche. Que ce soit à l'aide d'un diagramme à barre, un
diagramme circulaire ou autre, cela permet de voir la part que représente
l'entité interrogée par rapport à l'ensemble des autres entités. Par exemple,
si je dispose d'une couche contenant les principales retenues hydroélectriques
de Corrèze, il peut être intéressant d'afficher dans la fenêtre contextuelle
ce que représente le volume de cette retenue par rapport aux autres retenues
du département afin d'apprécier son rang.
Une option intéressante consiste à proposer une visualisation dans laquelle
on va afficher, avec une couleur distinctive, la valeur de l'entités au sein
d'un digramme circulaire. Etant donné que ce type de diagramme n'est pas
encore disponible dans les diagrammes standards des fenêtres contextuelles
ArcGIS, nous utiliserons donc une API tiers pour générer ce diagramme. Voici
comment nous allons procéder :
-
Connectez-vous tout d'abord sur votre portail puis ouvrez la carte web
contenant la couche d'entités des retenues hydroélectriques. Ici dans
notre exemple, nous disposons pour chaque retenue d'un attribut
"Volume" qui représente le volume du barrage (en milliers de
m³).
La couche dispose de pièces jointes pour associer une photo à chaque retenue. La fenêtre contextuelle contient donc, par défaut, la liste des champs et les pièces jointes.
-
Dans la zone de configuration des fenêtres contextuelles la couche de
polygones vous pouvez supprimer l'élément "Liste des champs"
proposé par défaut puis ajouter un élément de contenu Arcade. Ce dernier
nous permettra de réaliser les calculs statistiques nécessaires et
configurer un rendu personnalisé (en HTML) de nos informations.
-
Dans l'éditeur Arcade, vous effacerez les instructions déjà présentes,
par l'expression Arcade ci-dessous :
On notera l'usage de l'API QuickChart qui permet de générer différents types de diagrammes à partir d'une url et une série de paramètres. Celle-ci est basée sur des librairies Open Source que vous pouvez installer sur votre propre serveur, ou utiliser en ligne de manière gratuite (avec une limite sur le nombre de requêtes). Une version payante permet un accès illimité.// On précise les attributs dont on va avoir besoin Expects($feature, ["Volume"]) // Il nous faut deux tableaux, array_data pour les valeurs de volume // et array_colors pour les ouleurs du diagramme circulaire var array_data = [] var array_colors = [] // On boucle sur chaque entité de la couche des retenues, en la triant par // ordre croissant sur l'attribut "Volume" for (var f in OrderBy($layer,"Volume ASC")){ // On ajoute le volume du barrage stocké en milliers de m3 mais on va l'afficher // en millions, on le divise donc par 1000 Push(array_data,f.Volume/1000) // Si l'entité de la boucle est l'entité de la fenêtre contextuelle // alors on l'affichera en bleu, sionon en gris Push(array_colors,IIf(f.Nom==$feature.Nom, '#458ec0', '#EEEEEE')) } // On construit les paramètres d'un diagramme avec l'API QuickChart sur la base de // modèle de diagramme circulaire https://bit.ly/3RcNegG var url_params = { type: 'doughnut', data: { datasets: [ { data: array_data, borderColor: '#000000', borderWidth: 0.5, backgroundColor: array_colors, label: 'Volumes', }, ], }, options: { cutoutPercentage: 30, title: { display: true, fontFamily: 'Arial', fontSize: 17, text: 'Volumes (en millions de m³) des retenues hydroélectriques en Corrèze', }, plugins: { datalabels: { display: true, }, }, }, } // On construit l'URL complète pour l'appel à l'API QuickChart var url_chart = "https://quickchart.io/chart?width=500&height=300&c=" + UrlEncode(Text(url_params)) // On construit la chaine HTML que l'on veut renvoyer return { type : 'text', text : `<img src='${url_chart}'/>` }
On notera également l'usage du caractère backtick ( ` et non ') pour utiliser des littéraux et construire la chaîne HTML souhaitée.
-
Vous pouvez maintenant cliquer sur le bouton "Terminé" pour
valider l'expression.
-
La fenêtre contextuelle s'affiche désormais avec les informations de
volume pour chaque entité et avec une couleur spécifique pour l'entité
interrogée.
J'espère que cet exemple vous inspirera et que vous pourrez l'adapter à
vos cas d'usage.
Bonne route sur ArcGIS Online !
Pour retrouver l'ensemble des Conseils & Astuces ArcGIS
Online, cliquez sur ce lien
0 comments :
Enregistrer un commentaire