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 :
Vous pouvez également contrôler l'apparence du texte sur la carte en utilisant des ArcGIS Pro balises de mise en forme de texte. 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 :
Expressions d'étiquette
Une expression d’étiquette avancée vous permet d’ajouter une logique Arcade, Python, VBScript ou JScript à vos expressions d’étiquette, 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 propriétés 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.
Astuce :
Les expressions Arcade sont utilisées sur la plateforme ArcGIS. Les expressions Arcade fonctionnent dans Runtime, ArcGIS Pro et les kits de développement logiciels ArcGIS, 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’usage de Python, VBScript, ou JScript, la case Advanced (Avancé) doit être activée et le code doit être rassemblé dans une fonction pour activer plusieurs expressions multi-lignes.
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 :$feature.FIELD1 + $feature.FIELD2
int([FIELD1]) + int([FIELD2])
cint([FIELD1]) + cint([FIELD2])
parseInt([FIELD1]) + parseInt([FIELD2])
Options supplémentaires du Maplex Label Engine
Maplex Label Engine 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
- Vérifiez que List By Labeling (Répertorier par étiquetage) est la méthode active d’affichage de la fenêtre Contents (Contenu). Cliquez sur Répertorier par étiquetage .
- Sélectionnez une classe d'étiquette dans la fenêtre Contents (Contenu) et cliquez sur l'onglet Labeling (Étiquetage).
- Dans l'onglet Labeling (Étiquetage), dans le groupe Label Class (Classe d’étiquette), cliquez sur Expression .
- Sélectionnez un langage dans le menu Language (Langage).
- 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 autre façon de préciser les 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')
Astuce :
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) , 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 :
N’utilisez pas de nom de variable qui duplique des noms de champs lorsque vous utilisez Arcade. Si vous ne respectez pas cette consigne, aucune étiquette n’est créée.
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 Expressionpour 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.
- 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 propriétés d'étiquette classiques et avancées peuvent être exportées en tant que fichiers de propriétés 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 :
- Référence de langage Arcade
- Référence de langage Python
- Référence de langage Microsoft VBScript
- Microsoft JScript Language Reference
(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.)
Vous avez un commentaire à formuler concernant cette rubrique ?