Le blog francophone consacré
aux technologies Esri

Conseils & Astuces ArcGIS Online - N°166

N° 166 - Utiliser Arcade et une API tiers pour ajouter un diagramme polaire dans vos fenêtres contextuelles

Représenter les valeurs de différents attributs de vos entités dans une fenêtre contextuelle, c'est très simple et cela peut se faire de plusieurs manières (liste de champ, tableau de chiffres, diagramme en barre, texte formaté, ...) sans aucune expression Arcade à écrire. Si vous souhaitez être un peu plus original, et si le nombre d'attributs n'est pas trop important, vous pouvez essayer des représentations plus graphiques comme les diagrammes polaires (ou radiaux). Vous en voyez un exemple ci-dessous.


Dans cet exemple, nous disposons d'une couche d'entités des communes sur la région Haut-de-France avec, pour chaque commune, le nombre d'équipements. Ces équipements sont classés dans 10 catégories (donc 10 attributs). Etant donné que les diagrammes polaires ne sont pas des éléments disponibles en standard dans les fenêtres contextuelles ArcGIS, nous utiliserons donc une API tiers pour les générer. Voici donc comment nous allons procéder :

  1. Connectez-vous tout d'abord sur votre portail ArcGIS puis ouvrez la carte web contenant la couche d'entités. Par défaut, la fenêtre contextuelle présente la liste des différents attributs. 


  2. Dans la zone de configuration des fenêtres contextuelles la couche, vous pouvez supprimer l'élément "Liste de 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 indique les attributs nécessaires à notre expression Arcade
    Expects($feature,"*")
    
    // On définit un tableau avec les intitulés des catégories
    var array_labels=['Services de santé', 'Action sociale', 'Commerce','Enseignement 1er degrés', 
                      'Enseignement 2nd degrés', 'Enseignement supérieur','Médical et Paramédical', 
                      'Services aux particuliers', 'Sport, Loisir et Culture', 'Tourisme et transport']
    // On définit un tableau avec les noms de attributs de chaque catégorie
    var array_fields=["Services_de_santé","Action_sociale","Commerce","Enseignement_du_1er_degré",
                      "Enseignement_du_2nd_degré","Enseignement_supérieur__formati","Fonctions_médicales_et_paramédi",
                      "Services_aux_particuliers","Sport__loisir_et_culture","Tourisme_et_transports"]
    // On définit les couleurs de représentation des catégories
    var array_colors=['rgba(255, 99, 132, 0.7)',
                      'rgba(255, 159, 64, 0.7)',
                      'rgba(154, 162, 235, 0.7)',
                      'rgba(55, 205, 86, 0.7)',
                      'rgba(54, 162, 235, 0.7)',
                      'rgba(255, 255, 32, 0.7)',
                      'rgba(155, 23, 64, 0.7)',
                      'rgba(75, 192, 192, 0.7)',
                      'rgba(75, 12, 192, 0.7)',
                      'rgba(255, 20, 86, 0.7)',
                    ]
    
    // On instancie un tableau pour stocker les valeurs de consommation
    // puis on boucle sur les différents attributs pour récupérer les valeurs
    var array_data=[]
    for (var i in array_fields){
      Push(array_data,Round($feature[array_fields[i]]))
    }
    
    // On définit les paramètres du diagramme circulaire qui sera généré par l'API QuickChart
    // On s'est basé sur le modèle de diagramme suivant : https://tinyurl.com/u8bc8vxe
    var param_chart = {
      type: 'polarArea',
      data: {
        datasets: [
          {
            data: array_data,
            backgroundColor: array_colors,
            label: 'Equipements',
          },
        ],
        labels: array_labels,
      },
      options: {
        legend: {
          position: 'right',
        },
        title: {
          display: true,
          text: 'Répartition des équipements\n',
          fontSize: 17,
        },
      },
    }
    
    // On encode la partie paramètres pour en faire une URL correctement formatée
    var param_url = UrlEncode(Text(param_chart))
    
    // On construit l'URL complète permettant de générer l'image du diagramme polaire
    var url = "https://quickchart.io/chart?c=" + param_url
    
    // Enfin, on renvoie la chaîne HTML complète
    return { 
      type : 'text', 
      text : `<img src='${url}' />`
    }
    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 sur le nombre d'équipements dans un diagramme polaire avec la légende associé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: