Spécifier le texte des étiquettes

Les chaînes de texte d'une étiquette sont dérivées d'un ou plusieurs attributs d'entités. Les étiquettes sont dynamiques : si des valeurs d'attributs d'entités changent, les étiquettes changent aussi. Lorsque vous activez l'étiquetage, les entités sont initialement étiquetées en fonction d'un champ, par exemple, sur une carte météorologique, vous pouvez étiqueter des stations météorologiques avec les informations relatives aux précipitations journalières. Cette étiquette basée sur un champ unique est définie dans l'onglet Etiquetage.

Remarque :

Par défaut, il s'agit du premier champ d'étiquette de type chaîne qui contient le texte Nom dans son intitulé (la casse n'a pas d'importance). S'il n'existe aucun champ dont l'intitulé comprend ce texte, il s'agira par défaut du premier champ de type chaîne, plus du premier champ de type entier, puis du premier champ de type quelconque.

Vous pouvez ajouter des champs attributaires à vos étiquettes. Par exemple, vous pouvez étiqueter vos stations météorologiques avec les informations relatives aux précipitations journalières et à la vitesse maximale du vent. Que vos étiquettes possèdent un ou plusieurs champs attributaires, l'expression qui définit le texte d'une étiquette est appelée propriétés d'étiquette. Chaque classe d'étiquettes possède ses propres propriétés d'étiquette.

Pour en savoir plus sur la création d'expressions d'étiquette

Vous pouvez insérer vos propres propriétés d'étiquette afin de l'afficher avec vos étiquettes sur la carte. Par exemple, sur une carte météorologique, vous pouvez ajouter des unités de mesure abrégées à chaque étiquette (par exemple, po pour les pouces et km/h pour les kilomètres par heure). Vous pouvez aussi utiliser Arcade, Python, VBScript ou JScript dans vos expressions d’étiquette pour modifier l’affichage du texte. Par exemple, vous pouvez insérer une fonction afin d’afficher les valeurs de précipitations sur une ligne de texte et les valeurs de vitesse du vent sur une deuxième ligne. Ces deux exemples sont présentés dans l’image suivante :

Exemple de placement des étiquettes

Vous pouvez également contrôler l’apparence du texte sur la carte en utilisant des balises de mise en forme de texte ArcGIS Pro. Les balises de mise en forme de texte vous permettent de spécifier différentes propriétés d'affichage du texte pour différentes parties de votre texte d'étiquette. Par exemple, vous pouvez afficher les valeurs de précipitations avec un texte bleu en italique, et les valeurs de vitesse maximale du vent avec un texte noir normal, comme dans l’image suivante :

Exemple de placement des étiquettes

Expressions d'étiquette

Une expression d’étiquette avancée vous permet d’ajouter une logique Arcade, Python, VBScript ou JScript quelconque à vos expressions d’étiquettes, y compris une logique conditionnelle et une fonction de boucle. Par exemple, vous pouvez créer des étiquettes dont seule la première lettre de chaque mot s'affiche en majuscule, quelle que soit la méthode de stockage des chaînes de texte dans les champs attributaires. Vous pouvez également utiliser des expressions d’étiquette pour ajuster la mise en forme de vos étiquettes à l’aide des balises de mise en forme ArcGIS Pro. Il s'agit de caractères spéciaux permettant de modifier l'aspect de tout ou partie de vos étiquettes. Par exemple, vous pouvez utiliser la balise de formatage en gras pour faire apparaître en gras la première ligne d'une étiquette empilée à plusieurs lignes.

Conseil :
Les expressions Arcade peuvent être utilisées sur toute la plateforme ArcGIS. Les expressions Arcade fonctionnent dans Runtime, ArcGIS Pro et les ArcGIS Runtime SDKs, ce qui n’est pas le cas d’autres langages.

Une expression d’étiquetage peut être une simple expression de ligne unique ou une expression plus complexe couvrant plusieurs lignes de code et utilisant la logique de programmation de l’analyseur. Arcade active les expressions complexes par défaut. Lors de l’utilisation de Python, VBScript, ou JScript, la case Advanced (Avancé) doit être cochée et le code doit être intégré dans une fonction pour activer des expressions multilignes.

Si vous avez des descriptions de valeurs codées dans vos données, vous pouvez utiliser l’option Use coded value descriptions (Utiliser les descriptions des valeurs codées) pour afficher ces descriptions dans l’étiquette au lieu du code.

Les valeurs de champ sont automatiquement redéfinies en chaînes de texte. Par conséquent, si vous souhaitez utiliser une valeur numérique dans une opération arithmétique, ou si vous effectuez une comparaison, vous devez la redéfinir en type de données numériques.

Remarque :

Les valeurs nulles ne sont pas redéfinies en chaînes de texte. Elles sont transmises à l’expression en tant que NULL.

Lorsque vous utilisez Arcade, les valeurs de champ conservent leur type de données.

Les exemples suivants ajoutent deux champs de nombre entier :

Arcade
$feature.FIELD1 + $feature.FIELD2
Python
int([FIELD1]) + int([FIELD2])
VBScript
cint([FIELD1]) + cint([FIELD2])
JScript
parseInt([FIELD1]) + parseInt([FIELD2])

Options supplémentaires du Moteur d’étiquetage Maplex

Moteur d’étiquetage Maplex vous permet en outre de contrôler l’espace utilisé dans votre étiquette.

L’option Remove extra spaces (Supprimer les espaces supplémentaires) permet d’éliminer les caractères d’espacement inutiles du texte d’une étiquette. Le terme « espaces inutiles » désigne tous les caractères d’espacement précédents, suivants et intérieurs. Si l’option est désactivée, les espaces sont utilisés pour la mise en forme, afin de vous permettre, par exemple, de mettre en retrait du texte dans une étiquette multiligne.

L’option Remove extra line breaks (Supprimer les sauts de ligne supplémentaires) permet de supprimer des sauts de ligne inutiles du texte d’une étiquette. Si elle est désactivée, l’espacement multiligne est possible dans une étiquette multiligne.

Écriture d’une expression d’étiquette

  1. Vérifiez que List By Labeling (Répertorier par étiquetage) est la méthode d’affichage active dans la fenêtre Contents (Contenu). Cliquez sur l’onglet List By Labeling (Répertorier par étiquetage) Répertorier par étiquetage.
  2. Sélectionnez une classe d’étiquette dans la fenêtre Contents (Contenu) et cliquez sur l’onglet Labeling (Étiquetage).
  3. Dans l’onglet Labeling (Étiquetage), dans le groupe Label Class (Classe d’étiquette), cliquez sur le bouton Expression Propriétés d'étiquette.
  4. Sélectionnez un langage dans le menu Language (Langage).
  5. Saisissez une expression Arcade, Python, VBScript ou JScript. Vous pouvez également créer une expression en double-cliquant sur le champ afin de l'ajouter à l'expression. Vous pouvez également sélectionner le champ, cliquer avec le bouton droit et choisir Ajouter pour ajouter le champ à l'emplacement où vous avez cliqué, en utilisant un ou plusieurs espaces comme séparation. Utilisez les fonctions de texte fournies en double-cliquant pour les ajouter à l'expression.

    Lorsque vous utilisez Python, VBScript et JScript, les champs se trouvent entre crochets [ ], quel que soit le type de données de la source de données de la couche. Arcade utilise une méthode différente pour spécifier des champs.

    Syntaxe de champ
    $feature.fieldname
    Syntaxe de champ joint
    $feature['tablename.fieldname']
    Syntaxe de champ de domaine de valeurs précodées
    DomainName($feature, 'fieldname')

    Conseil :

    Lors de l’utilisation de l’expression Arcade, vous pouvez utiliser la fonction Console pour favoriser le débogage des expressions d’étiquette. Lorsque vous cliquez sur Verifiy (Vérifier) Vérifier, un lien View console messages (Afficher les messages de console) s’affiche si la fonction Console est incluse dans l’expression. Cliquez sur ce lien pour ouvrir la fenêtre Console Messages (Messages de la console). Vous pouvez également donner un titre à votre expression lorsque vous utilisez Arcade.

    Attention :

    Lorsque vous étiquetez un champ dont le nom contient des caractères spéciaux ou commence par un nombre, Arcade utilise le même format que pour la syntaxe de champ joint, par exemple, $feature[’33field’], $feature[’acres²’], $feature[’st_area(SHAPE)’].

    Vous pouvez également entrer des balises de mise en forme de texte ArcGIS Pro dans la zone Expression pour appliquer la mise en forme à une partie de votre texte d’étiquette.

    Remarque :

    Lorsque vous utilisez Arcade, la mise en forme de champs sur la couche n’est pas répercutée sur les étiquettes. Les méthodes de mise en forme Arcade doivent être employées.

    Si l'expression doit couvrir plusieurs lignes de code, activez la case à cocher Avancé et entrez les propriétés d'étiquette. Cela est inutile lorsque vous utilisez Arcade.

  6. Cliquez sur Verify (Vérifier) pour vous assurer qu’il n’y a pas d’erreur de syntaxe, puis sur Apply (Appliquer).

    S’il existe des erreurs de syntaxe, le motif et le numéro de la ligne concernée sont indiqués dans l’erreur. Pour afficher ces numéros, cliquez avec le bouton droit sur la zone de saisie de l’expression d’étiquette et sélectionnez Show Line Numbers (Afficher les numéros de lignes).

    Les expressions d’étiquette classiques et avancées peuvent être exportées en tant que fichiers d’expressions d’étiquette (.lxp), qui peuvent être chargés dans d’autres couches ou cartes.

Exemples d'expressions :

Voici quelques exemples d'expressions d'étiquettes :

  • Concaténez une chaîne à la valeur d’un champ. L’expression suivante permet, par exemple, de créer une étiquette en faisant précéder la valeur du champ PARCELNO par le texte « Parcel no: » :
    Arcade
    "Parcel no: " + $feature.PARCELNO
    Python
    "Parcel no: " + [PARCELNO]
    VBScript
    "Parcel no: " & [PARCELNO]
    JScript
    "Parcel no: " + [PARCELNO]
  • Arrondissez un nombre décimal à un nombre défini de décimales. Par exemple, cette expression affiche un champ AREA arrondi à un chiffre après la virgule :
    Arcade
    round(number($feature.AREA), 1)
    Python
    round(float([AREA]), 1)
    VBScript
    Round ([AREA], 1)
    JScript
    function FindLabel ( [AREA] )
    {
    var ss;
    var num= parseFloat([AREA]);
    ss =  num.toFixed(1);
      return (ss);
    }
  • Convertissez toutes vos étiquettes textuelles en majuscules ou en minuscules. Par exemple, l’expression suivante convertit un champ NAME en minuscules :
    Arcade
    lower($feature.NAME)
    Python
    def FindLabel ( [NAME] ):
      S = [NAME]
      S = S.lower()
      return S
    VBScript
    LCase ([NAME])
    JScript
    [NAME].toLowerCase()
  • Convertissez vos étiquettes textuelles à la casse appropriée. Par exemple, l’expression suivante remplace la casse d’un champ NAME en majuscules par une autre casse appropriée :
    Arcade
    Proper($feature.NAME, 'firstword')
    Python
    def FindLabel ( [NAME] ):
      S = [NAME]
      S = S.title()
      return S
    VBScript
    Function FindLabel ( [NAME] )
    FindLabel = UCase(Left([NAME],1)) & LCase(Right([NAME], Len([NAME]) -1))
    End Function
    JScript
    function FindLabel ( [NAME] )
    {
    var str = [NAME];
    var iLen = String(str).length;
    var upper = (str.substring(0,1)).toUpperCase();
    var lower = (str.substring(1, iLen)).toLowerCase()
    return upper + lower;
    }
  • Créez du texte empilé. Par exemple, cette expression crée une étiquette avec le champ NAME et les deux champs d’adresse sur des lignes distinctes :
    Arcade
    "Name: " + $feature.NAME + TextFormatting.NewLine + $feature.ADDRESS_1 + TextFormatting.NewLine + $feature.ADDRESS_2
    Python
    "Name: " + [NAME] + '\n' + [ADDRESS_1] + '\n' + [ADDRESS_2]
    VBScript
    "Name: " & [NAME] & vbCrLf& [ADDRESS_1] & vbCrLf& [ADDRESS_2]
    JScript
    "Name: " + [NAME] + "\r" + [ADDRESS_1] + "\r" + [ADDRESS_2]
  • Créez du texte empilé en fonction du texte d'un champ. Par exemple, l'expression suivante utilise la virgule pour définir l'emplacement de la pile :
    Arcade
    replace($feature.LABELFIELD, ', ', '\n')
    Python
    def FindLabel ( [LABELFIELD] ):
      S = [LABELFIELD]
      S = S.replace(', ', '\n')
      return S
    VBScript
    Function FindLabel ( [LABELFIELD] )
    FindLabel = replace([LABELFIELD], ", ", vbnewline)
    End Function
    JScript
    function FindLabel ( [LABELFIELD] )
    {
    var r, re;
    var str = [LABELFIELD];
    re = /,/g;
    r = str.replace(re, "\r");
    return r;
    }
  • Mettez en forme vos étiquettes. Par exemple, cette expression affiche l'étiquette sous forme de devise :
    Arcade
    "Occupancy Revenue: $" + round($feature.MAXIMUM_OC * $feature.RATE, 2)
    Python
    def FindLabel ( [MAXIMUM_OC], [RATE] ):
      import locale
      locale.setlocale(locale.LC_ALL, '')
      S = locale.currency(float([MAXIMUM_OC]) * float([RATE]))
      return S
    VBScript
    "Occupancy Revenue: " & FormatCurrency ([MAXIMUM_OC] * [RATE])
    JScript
    function FindLabel ( [MAXIMUM_OC], [RATE] )
    {
    var ss;
    var num1 = parseFloat([MAXIMUM_OC]);
    var num2 = parseFloat([RATE]);
    var num3 = num1 * num2
    ss =  num3.toFixed(2);
      return ("$" + ss);
    }
  • Utilisez une seule partie du champ comme étiquette. Par exemple, cette expression affiche les caractères de 3 à 5 :
    Arcade
    mid($feature.LABELFIELD, 2, 3)
    Python
    def FindLabel ( [LABELFIELD] ):
      S = [LABELFIELD]
      return S[2:5]
    VBScript
    Mid([LABELFIELD], 3, 3)
    JScript
    function FindLabel ( [LABELFIELD] )
    {
    var S;
    var str = [LABELFIELD];
    S = str.substring(2, 5);
    return S;
    }
  • Définissez une instruction conditionnelle if-else. Ces fonctions permettent d'étiqueter les villes avec des noms dans une police rouge de grande taille si leur population est supérieure ou égale à 250 000 habitants et dans la police par défaut des étiquettes si la population est inférieure à 250 000 habitants :
    Arcade
    if ($feature.POPULATION >=250000) {
        return "<CLR red='255'><FNT size = '14'>" + $feature.NAME + "</FNT></CLR>"
    }
    else {
        return $feature.NAME
    }
    Python
    def FindLabel ( [NAME], [POPULATION] ):
      if int([POPULATION]) >= 250000:
        return "<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>"
      else:
        return [NAME]
    VBScript
    Function FindLabel ([NAME], [POPULATION])
      if (cLng([POPULATION]) >= 250000) then
       FindLabel = "<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>"
      else
    	 FindLabel = [NAME]
      end if
    End Function
    JScript
    function FindLabel ( [NAME], [POPULATION]  )
    {
    if (parseFloat([POPULATION]) >= 250000){
    return ("<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>");
    }
    else
    return ([NAME]);
    }
Remarque :
Pour étiqueter un sous-ensemble d'entités selon une valeur de champ, créez la requête SQL dans la classe d'étiquettes plutôt que via les propriétés d'étiquette.

Voici quelques ressources supplémentaires :

(Certaines informations sont hébergées sur des pages Web non créées, non détenues, ni conservées par Esri. Esri ne peut en aucun cas garantir la disponibilité de ces pages et ne saurait être tenu responsable quant à la nature et au contenu de ces pages.)