Le blog francophone consacré
aux technologies Esri

Conseils & Astuces ArcGIS Online - N°158

N° 158 - Afficher une fenêtre contextuelle avec des valeurs issues d'entités d'une autre couche

Dans mon précédent article de Conseils & Astuces ArcGIS Online, nous avons vu comment utiliser Arcade pour afficher, dans la fenêtre contextuelle, l'attribut d'une entité et la mettre en perspective de la somme, la moyenne, le min/max, ... de ce même attribut calculé pour tout ou partie des entités de cette couche. Ce type de calcul statistique peut également se faire sur les entités d'une autre couche. Par exemple, cliquer sur un département et calculer dynamiquement des statistiques sur les points des festivals culturels contenus dans ce département.


Je vous propose de voir comment mettre en oeuvre cette notion de filtrage spatial pour sélectionner et effectuer des calculs sur les entités d'une autre couche de la carte.

  1. Connectez-vous tout d'abord sur votre portail puis ouvrez la carte web contenant vos 2 couche d'entités. Ici dans notre exemple, nous disposons donc d'une couche des départements français et d'une seconde couche décrivant les festivals pour l'année 2021. Ces derniers sont représentés en fonction de la discipline prédominante de chaque festival.


  2. Dans la zone de configuration des fenêtres contextuelles la couche de polygones 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 précise les attributs dont on va avoir besoin dans l'expression Arcade
    Expects($feature,"*")

    // On prépare un dictionnaire pour référencer l'image du symbole correspondant à chaque dscipline
    // Ces imagettes ont été préalablement téléchargées sur le portail ArcGIS Online (et partagées en "public")
    var images_legende = {
    "Musique": "https://esrifrance.maps.arcgis.com/sharing/rest/content/items/aee6b904ae9e432aab95843cb0d1e1d7/data",
    "Spectacle vivant": "https://esrifrance.maps.arcgis.com/sharing/rest/content/items/d0c8c7ce2a11415c800e06da2fb1f133/data",
    "Livre, littérature": "https://esrifrance.maps.arcgis.com/sharing/rest/content/items/3aea51c2618944e8aaa1fcbe89c3e14f/data",
    "Cinéma, audiovisuel": "https://esrifrance.maps.arcgis.com/sharing/rest/content/items/753485e6fc6c460c8d202bc3cb836eb8/data",
    "Pluridisciplinaire": "https://esrifrance.maps.arcgis.com/sharing/rest/content/items/1fdbf3ff43ef4490908d5dd6d9723713/data",
    "Arts visuels, arts numériques": "https://esrifrance.maps.arcgis.com/sharing/rest/content/items/9b6955f9524c4fe1a9e5bb6995c5795c/data",
    }

    // On récupère la couche des festivals depuis la carte
    var festivals = FeatureSetByName($map, "Festivals 2022 en France")

    // On récupère la géométrie du département
    var geometrie_dept = Geometry($feature)

    // On récupère les entités "festivals" qui intersectent la géométrie du département
    var festivals_dans_dept = Intersects(festivals, geometrie_dept)

    // On génère une table regroupant les festivals par discipline et on compte le nombre de
    // festivals dans chaque discipline
    var stats = GroupBy(festivals_dans_dept, "discipline_dominante", [
    {name: "Effectif", expression: "discipline_dominante", statistic: "COUNT"}
    ])

    On notera tout d'abord l'usage de la fonction FeatureSetByName() qui permet de récupérer une couche d'entités de la carte à l'aide de son nom.

    Vous remarquerez également l'utilisation de l'opérateur spatial Intersect() qui permet de rechercher les entités d'une couche qui intersectent la géométrie passée en deuxième argument. D'autres opérateurs (Overlap(), Touches(), Distance(), Crosses(), Contains(),...) peuvent être utilisés en fonction de vos besoins.

    On notera enfin l'usage de la fonction GroupBy() qui permet de faire un regroupement statistique à partir des valeurs uniques d'un ou plusieurs attributs et de faire un comptage dans chaque groupe.
     
  4. Vous pouvez maintenant cliquer sur le bouton "Terminé" pour valider l'expression.

  5. La fenêtre contextuelle s'affiche désormais avec un tableau contenant les symboles, les disciplines et le nombre de festivals correspondants. Le tout, trié par ordre décroissant des effectifs.


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: