PROCÉDURE

créer une fenêtre contextuelle avec les noms et les valeurs de plusieurs champs triés par ordre décroissant dans ArcGIS Online et Portal for ArcGIS Map Viewer

Last Published: February 9, 2023

Résumé

Dans ArcGIS Online et Portal for ArcGIS Map Viewer, les fenêtres contextuelles configurées par des expressions Arcade avec plusieurs instructions peuvent être utilisées pour afficher et trier les noms et les valeurs des champs dans plusieurs champs d’une entité. Il est ainsi plus facile de déterminer quel produit ou problème présente le plus grand nombre ou le plus faible d’incidents au sein d’un polygone. Cet article fournit un exemple et des instructions sur l’utilisation d’expressions Arcade pour créer une fenêtre contextuelle avec les noms et les valeurs de plusieurs champs triés par ordre décroissant dans Map  Viewer.

L’image ci-dessous montre une fenêtre contextuelle Map Viewer avec chaque champ et les enregistrements séparés.

Fenêtre contextuelle de la couche dans Map Viewer dans Portal for ArcGIS

Procédure

  1. Ouvrez la carte dans Map Viewer. Cliquez sur Layers (Couches) dans la barre d’outils Content (Contenu) (foncée), puis sélectionnez la couche présentant la fenêtre contextuelle pour la modifier.
  2. Dans la barre d’outils Settings (Paramètres) (claire), cliquez sur Pop-ups (Fenêtres contextuelles) > Options > Attribute expressions (Expressions attributaires).
  3. Cliquez sur + Add Expression (+ Ajouter une expression) pour ouvrir la fenêtre de l’éditeur d’expressions.
  4. Dans la fenêtre de l’éditeur, spécifiez un nom pour la nouvelle expression.
  5. Dans la boîte de dialogue Expression, insérez l’expression Arcade ci-après.
    1. Définissez la fonction Comparator qui renvoie IsEmpty() comme valeur la plus faible.
function Comp (a, b) {
  When(
    IsEmpty(a[1]), -1,
    IsEmpty(b[1]), 1,
    Iif(a[1]>b[1], 1, -1)
  );
};
  1. Définissez la variable de la liste des matrices. Dans cet exemple, les matrices se composent des noms de champ et de la valeur de champ correspondante pour chaque champ.
var <variableName1> = [
  ["<fieldName1>", $feature.<fieldName1>],
  ["<fieldName2>", $feature.<fieldName2>],
  ["<fieldName3>", $feature.<fieldName3>],
  ["<fieldName4>", $feature.<fieldName4>],
  ["<fieldName5>", $feature.<fieldName5>],
  ["<fieldName6>", $feature.<fieldName6>],
  ["<fieldName7>", $feature.<fieldName7>],
  ["<fieldName8>", $feature.<fieldName8>],
  ["<fieldName9>", $feature.<fieldName9>],
];
  1. Spécifiez l’instruction suivante pour déterminer le type de tri. Le bloc de code ci-dessous est un exemple de tri décroissant. Pour un tri croissant, ignorez la fonction Reverse().
<variableName1> = Reverse(Sort(<variableName1>, Comp));
  1. Spécifiez l’instruction suivante pour renvoyer les valeurs de texte triées. Dans cet exemple, une mise en forme de texte supplémentaire a été incluse dans le bloc de code. Tous les crochets ont été supprimés du résultat final et les virgules ont été remplacées par deux-points.
var <variableName2> = "";
for (var i in <variableName1>) {
  if (<variableName2> == "") {
    <variableName2> = Replace(Replace(Replace(<variableName1>[i], '["', ""), '",', ": "), ']', "");
  } else {
    <variableName2> += TextFormatting.NewLine + Replace(Replace(Replace(<variableName1>[i], '["', ""), '",', ": "), ']', "");
  }
}

return <variableName2>;

Le bloc de code ci-dessous est un exemple d’expression opérationnelle complète.

function Comp (a, b) {
  When(
    IsEmpty(a[1]), -1,
    IsEmpty(b[1]), 1,
    Iif(a[1]>b[1], 1, -1)
  );
};

var arr = [
  ["BREASTCANCER", $feature.BREASTCANCER],
  ["CARDIOVASCULAR", $feature.CARDIOVASCULAR],
  ["CERVICALCANCER", $feature.CERVICALCANCER],
  ["COLONCANCER", $feature.COLONCANCER],
  ["DIABETES", $feature.DIABETES],
  ["INFLUENZA", $feature.INFLUENZA],
  ["LUNGCANCER", $feature.LUNGCANCER],
  ["PROSTATECANCER", $feature.PROSTATECANCER],
  ["SKINCANCER", $feature.SKINCANCER],
];

arr = Reverse(Sort(arr, Comp));

var result = "";
for (var i in arr) {
  if (result == "") {
    result = Replace(Replace(Replace(arr[i], '["', ""), '",', ": "), ']', "");
  } else {
    result += TextFormatting.NewLine + Replace(Replace(Replace(arr[i], '["', ""), '",', ": "), ']', "");
  }
}

return result;
  1. Cliquez sur Run (Exécuter) pour prévisualiser le résultat de l’expression. Si vous obtenez le résultat requis, cliquez sur Done (Terminé).
Spécification de l’expression Arcade dans la fenêtre de l’éditeur Map Viewer de Portal for ArcGIS
  1. Cliquez sur le bouton Previous (Précédent) au-dessus de l’expression Arcade dans la fenêtre Pop-up expressions (Expressions de la fenêtre contextuelle).
Fenêtre Pop-up expressions (Expressions de la fenêtre contextuelle) de Map Viewer dans Portal for ArcGIS avec icône Previous (Précédent) au-dessus de la nouvelle expression créée
  1. Cliquez sur Fields list (Liste des champs) pour développer la liste des champs affichés dans les fenêtres contextuelles, puis cliquez sur Select fields (Sélectionner des champs).
  2. Vérifiez le champ d’expression sous la section Expressions, puis cliquez sur Done (Terminé).
  3. Si vous le souhaitez, cliquez et faites glisser Reorder (Réorganiser) L’icône de réorganisation en regard du champ d’expression vers une nouvelle position sous la section Select fields (Sélectionner des champs).

L’image ci-dessous montre le champ Diseases-Sorted nouvellement ajouté avec plusieurs noms et valeurs de champ triés par ordre décroissant dans la fenêtre contextuelle après avoir utilisé l’expression Arcade.

Fenêtre contextuelle affichant le champ Diseases-Sorted nouvellement ajouté dans Portal for ArcGIS Map Viewer

ID d’article: 000029130

Recevoir des notifications et trouver des solutions liées à de nouvelles questions ou à des problèmes connus

Recevez des réponses synthétisées et des solutions en vidéo de notre nouvel agent conversationnel (IA).

Télécharger l’application Esri Support

Obtenir de l’aide auprès des experts ArcGIS

Contacter le support technique

Télécharger l’application Esri Support

Accéder aux options de téléchargement