Le blog francophone consacré
aux technologies Esri

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 :

  1. 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.

  2. 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.


  3. Dans l'éditeur Arcade, vous effacerez les instructions déjà présentes, par l'expression Arcade ci-dessous :
    // 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 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 notera également l'usage du caractère backtick ( ` et non ') pour utiliser des littéraux et construire la chaîne HTML souhaitée. 
     
  4. Vous pouvez maintenant cliquer sur le bouton "Terminé" pour valider l'expression.

  5. 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

Partager cet article:

Rejoindre la discussion

    Les commentaires à propos de cet article: