Conseils & Astuces ArcGIS Online - N°185
N° 185 - Représenter des données ordinales dans des fenêtres contextuelles avec Arcade
Lorsque vous disposez de données ordinales (qui ont un ordre sans obligatoirement être numériques), il peut s'avérer efficace de les représenter dans vos fenêtres contextuelles de manière graphique, en utilisant par exemple une barre de valeurs colorisée. Pour effectuer ce type de représentation, il est possible d'utiliser une expression Arcade renvoyant la chaîne HTML qui assurera ce rendu.
Prenons l'exemple d'une couche d'entités contenant un champ décrivant l'indice de qualité écologique de chaque tronçon hydrographique de mon territoire. Cet indice est stocké selon les 5 valeurs ordinales suivantes : très faible, faible, moyen, bon, très bon.
Voici comment vous pouvez utiliser Arcade pour afficher l'indice écologique de l'entité, dans la fenêtre contextuelle, à travers une barre de valeurs colorisée.
- Après avoir ajouté la couche des tronçons hydrographiques dans la carte, vous afficherez l'interface de définition des fenêtres contextuelles. Vous supprimerez la liste des champs proposée par défaut et vous ajouterez une expression Arcade.
- Vous donnerez tout d'abord un nom à votre expression, par exemple ici : "Qualité Ecologique".
- Vous saisirez ensuite l'expression Arcade suivante :
// Tableau contenant les différentes valeurs possibles (ordonnées) var valeurs_possibles=['Très faible','Faible','Moyen','Bon','Très bon'] // Tableau contenant les couleurs correspondantes en hexadecimal var couleurs=['CC3717','F38C62','E6AC54','B5E654','70B23D'] // Attribut contenant les valeurs var valeur = $feature.indice_qualite_ecologique // 'Vertical' ou 'Horizontal' var affichage = 'Horizontal' // Largeur/Hauteur en pixels var taille = 600 // couleur du texte en hexadecimal var couleur_texte = "000000" // Titre de l'indicateur à afficher var strHTML = 'Qualité écologique :' // Fonction permettant la conversion de couleurs Hexadecimal (avec opacité) // en chaîne HTML rgba() function HexaToRGBA(hexa,opacity){ var r = '0x' + Mid(hexa,0,2); var g = '0x' + Mid(hexa,2,2); var b = '0x' + Mid(hexa,4,2); return "rgba(" + Text(Number(r)) + "," + Text(Number(g)) + "," + Text(Number(b)) + "," + Text(opacity) + ")" } // On commence à générer l'expression HTML strHTML += '<br/><br/>' strHTML += "<table style='border-collapse: collapse;'>" // Cas d'une barre de valeurs colorisée horizontale if (affichage=='Horizontal'){ strHTML += '<tr>' for (var index in valeurs_possibles){ // Si la cellule du tableau est celle de la valeur courante alors l'opacité est // de 100% sinon elle est de 20% var opacite = IIF(Lower(valeurs_possibles[index])==Lower(valeur), 1, 0.2); // Affichage de la cellule du tableau avec la valeur correspondante strHTML += "<td width='" + Text(taille/Count(valeurs_possibles)) + "px' style='background-color: " + HexaToRGBA(couleurs[index],opacite)+ ";font-family: arial;font-size: 9pt; font-weight: " + Text(opacite*700) + "; color: "+ HexaToRGBA(couleur_texte,opacite) + "; text-align: center; border: 1px solid #DDDDDD;padding: 3px 3px;'>" strHTML += valeurs_possibles[index] strHTML += '</td>' } strHTML += '</tr>' } // Cas d'une barre de valeurs colorisée verticale else { for (var index in valeurs_possibles){ strHTML += '<tr>' // Si la cellule du tableau est celle de la valeur courante alors l'opacité est // de 100% sinon elle est de 20% var opacite = IIF(Lower(valeurs_possibles[index])==Lower(valeur), 1, 0.2); // Affichage de la cellule du tableau avec la valeur correspondante strHTML += "<td height='" + Text(taille/Count(valeurs_possibles)) + "px' style='background-color: " + HexaToRGBA(couleurs[index],opacite)+ ";font-family: arial;font-size: 9pt; font-weight: " + Text(opacite*700) + "; color: "+ HexaToRGBA(couleur_texte,opacite) + "; text-align: center; border: 1px solid #DDDDDD;padding: 3px 3px;'>" strHTML += valeurs_possibles[index] strHTML += '</td>' strHTML += '</tr>' } } strHTML += '</table>' // On revoit l'expression HTML pour remplir la fenêtre contextuelle return { type : 'text', text : strHTML }
- Votre carte affiche désormais les tronçons hydrographiques avec des fenêtres contextuelles présentant la barre de valeurs colorisée.
- Vous pouvez maintenant modifier la taille l'orientation de la barre de valeurs à votre convenance. Par exemple, vous pourrez afficher la barre de valeurs de manière verticale en modifiant l'expression avec les valeurs suivantes :
Vous aurez alors un résultat de ce type : - Si vous disposez de plusieurs champs contenant des valeurs ordinales, il sera intéressant de dupliquer l'expression Arcade et de l'adapter à ces différents champs.
- Il ne vous reste plus qu'à adapter cette expression au nombre de valeurs distincts que vous avez dans votre champ et aux couleurs que souhaitez leur associer.
Bonne route sur ArcGIS Online !
Pour retrouver l'ensemble des Conseils & Astuces ArcGIS Online, cliquez sur ce lien.
2 comments :
Astuce très intéressante, je tenterai de reproduire pour un de mes projets.
Attention coquille pour le point 4 "Votre carte affiche désormais les déchèteries avec des fenêtres contextuelles présentant le tableau des horaires d'ouverture pour le matin et l'après-midi. "
J'ai d'ailleurs repris le code des horaires d'ouverture, merci pour le partage.
Bonjour,
Merci pour vos retours. Un copier/coller d'un article précédent un peu trop rapide, la coquille a été corrigée.
Enregistrer un commentaire