Die Texte der Beschriftungen werden von einem oder mehreren Feature-Attributen abgeleitet. Beschriftungen sind dynamisch, d. h. bei einer Änderung der Attributwerte ändern sich die Beschriftungen ebenfalls. Wenn Sie die Beschriftung einblenden, werden die Features zunächst basierend auf einem Feld beschriftet. Auf einer meteorologischen Karte können so z. B. Wetterstationen mit der täglichen Niederschlagsmenge beschriftet werden. Klicken Sie im Bereich Inhalt mit der rechten Maustaste auf eine Feature-Class, und klicken Sie auf Beschriftung , um eine einzelne auf Feldern basierende Beschriftung festzulegen.
Hinweis:
Dieses Beschriftungsfeld entspricht standardmäßig dem ersten Feld vom Typ "String", das den Text "Name" in seinem Namen enthält (Groß-/Kleinschreibung wird nicht unterschieden). Wenn kein Feld diesen Text in seinem Namen enthält, wird standardmäßig zuerst das erste Feld vom Typ "String", dann das erste Feld vom Typ "Integer" und anschließend das erste Feld eines beliebigen Typs ausgewählt.
Sie können den Beschriftungen Attributfelder hinzufügen. Sie können die Wetterstationen beispielsweise mit der täglichen Niederschlagsmenge und mit der maximalen Windgeschwindigkeit beschriften. Unabhängig davon, ob Ihre Beschriftungen nur auf einem Attributfeld oder auf mehreren Feldern basieren, wird die Anweisung, die den Beschriftungstext festlegt, als Beschriftungsausdruck bezeichnet. Jede Beschriftungsklasse verfügt über einen eigenen Beschriftungsausdruck.
Sie können eigenen Text in den Beschriftungsausdruck einfügen, damit er mit Ihren Beschriftungen auf der Karte angezeigt wird. Auf der Wetterkarte können Sie beispielsweise jeder Beschriftung Abkürzungen für die Maßeinheiten hinzufügen (z. B. mm für Millimeter Niederschlag oder km/h für Stundenkilometer). Sie können auch Arcade, Python, VBScript oder JScript im Beschriftungsausdruck verwenden, um die Textanzeige zu ändern. Sie können beispielsweise eine Funktion einfügen, durch die die Niederschlagswerte in einer Textzeile und die Windgeschwindigkeitswerte in einer zweiten Zeile angezeigt werden.
Mit Textformatierung können Sie festlegen, wie Text in Karten angezeigt wird. Mithilfe von Textformatierungs-Tags können Sie für einzelne Teile des Beschriftungstextes unterschiedliche Textanzeigeeigenschaften angeben.
Beschriftungsausdrücke
Mit einem erweiterten Beschriftungsausdruck können Sie Ihren Beschriftungsausdrücken jede beliebige Arcade-, Python-, VBScript- oder JScript-Logik hinzufügen, darunter Bedingungen und Schleifen. Sie können zum Beispiel Beschriftungen erstellen, bei denen der erste Buchstabe jedes Wortes als Großbuchstabe dargestellt wird, und zwar unabhängig davon, wie die Textzeichenfolgen in den Attributfeldern gespeichert sind. Sie können mit Beschriftungsausdrücken die Formatierung Ihrer Beschriftungen anpassen, indem Sie Formatierungs-Tags verwenden. Dabei handelt es sich um spezielle Zeichen, mit denen Sie das Aussehen eines Teiles oder der gesamten Beschriftung ändern können. Sie können zum Beispiel das Tag für die Fettformatierung verwenden, um die erste Zeile einer gestapelten, mehrzeiligen Beschriftung fett zu formatieren.
Tipp:
Arcade-Ausdrücke werden in der gesamten ArcGIS Plattform verwendet. Im Gegensatz zu anderen Sprachen funktionieren Arcade-Ausdrücke in der Runtime, in ArcGIS Pro und ArcGIS Runtime SDKs.Ein Beschriftungsausdruck kann entweder aus einer einfachen einzelnen Zeile bestehen oder ein komplexer Ausdruck sein, der mehrere Codezeilen umfasst und die Programmierlogik des Parsers verwendet. Standardmäßig sind in Arcade komplexe Ausdrücke aktiviert. In Python, VBScript oder JScript müssen Sie hierzu das Kontrollkästchen Erweitert aktivieren; außerdem muss der Code in einer Funktion enthalten sein, damit mehrzeilige Ausdrücke verwendet werden können.
Wenn Ihre Daten Beschreibungen von codierten Werten enthalten, können Sie mit der Option Beschreibungen für codierte Werte verwenden statt des Codes diese Beschreibungen in der Beschriftung anzeigen.
Feldwerte werden automatisch in Textzeichenfolgen umgewandelt. Wenn Sie einen Zahlenwert in einer arithmetischen Operation verwenden möchten oder einen Vergleich durchführen, müssen Sie diesen in einen numerischen Datentyp umwandeln.
Hinweis:
NULL-Werte werden nicht in Textzeichenfolgen umgewandelt. Sie werden als NULL an den Ausdruck übergeben.
Bei Verwendung von Arcade bleibt der Datentyp der Feldwerte unverändert.
In den folgenden Beispielen werden zwei ganzzahlige Felder hinzugefügt:$feature.FIELD1 + $feature.FIELD2
int([FIELD1]) + int([FIELD2])
cint([FIELD1]) + cint([FIELD2])
parseInt([FIELD1]) + parseInt([FIELD2])
Zusätzliche Optionen der Maplex Label Engine
Mit der Maplex Label Engine haben Sie zusätzlich die Möglichkeit, die in der Beschriftung verwendeten Leerzeichen zu steuern.
Mit der Option Zusätzliche Leerzeichen entfernen werden überzählige Leerzeichen aus dem Beschriftungstext entfernt. Diese überzähligen Leerzeichen umfassen alle vorangehenden, nachfolgenden und im Textkörper vorhandenen Leerzeichen. Wenn die Option nicht verfügbar ist, werden die Leerzeichen zur Formatierung verwendet. So können Sie beispielsweise Text in einer gestapelten Beschriftung einrücken.
Mit der Option Zusätzliche Zeilenumbrüche entfernen werden überzählige Zeilenumbrüche aus dem Beschriftungstext entfernt. Wenn die Option nicht verfügbar ist, kann sich die gestapelte Beschriftung über mehrere Zeilen erstrecken.
Erstellen eines Beschriftungsausdrucks
Führen Sie zum Erstellen eines Beschriftungsausdrucks die folgenden Schritte aus:
- Klicken Sie im Bereich Inhalt mit der rechten Maustaste auf einen Layer, und klicken Sie auf Beschriftungseigenschaften .
Der Bereich Beschriftungsklasse wird angezeigt.
- Wählen Sie im Menü Sprache eine Sprache aus.
- Geben Sie einen Arcade-, Python-, VBScript- oder JScript-Ausdruck ein. Sie können auch einen Ausdruck erstellen, indem Sie auf das Feld doppelklicken, um es dem Ausdruck hinzuzufügen, oder indem Sie das Feld auswählen, mit der rechten Maustaste klicken und Anhängen auswählen, um das Feld, durch ein oder mehrere Leerzeichen getrennt, an der Position anzufügen, auf die Sie geklickt haben. Verwenden Sie die bereitgestellten Textfunktionen, indem Sie darauf doppelklicken und sie so dem Ausdruck hinzufügen.
Bei Verwendung von Python, VBScript und JScript werden Felder unabhängig vom Datentyp für die Datenquelle des Layers in eckige Klammern [ ] eingeschlossen. Arcade verwendet zum Angeben der Felder eine andere Methode.
Feldsyntax $feature.fieldname
Syntax verbundener Felder $feature['tablename.fieldname']
Feldsyntax von Domänen mit codierten Werten DomainName($feature, 'fieldname')
Vorsicht:
Verwenden Sie in Arcade keine Variablennamen, die Feldnamen duplizieren. Ansonsten werden keine Beschriftungen erstellt.
Bei der Beschriftung eines Feldes, dessen Name Sonderzeichen enthält oder mit einer Zahl beginnt, verwendet Arcade dasselbe Format wie bei der Syntax verbundener Felder, z. B. $feature['33field'], $feature['acres²'], $feature['st_area(SHAPE)'].
Geben Sie optional im Feld Ausdruck Textformatierungs-Tags von ArcGIS Pro ein, um Teilen des Beschriftungstextes ein bestimmtes Format zuzuweisen.
Hinweis:
Bei der Verwendung von Arcade werden Feldformatierungen des Layers nicht in die Beschriftungen übernommen. Es müssen Formatierungsmethoden von Arcade verwendet werden.
Wenn der Ausdruck mehrere Codezeilen umfasst, aktivieren Sie das Kontrollkästchen Erweitert, und geben Sie den Beschriftungsausdruck ein. Dies ist bei der Verwendung von Arcade nicht erforderlich.
- Klicken Sie auf Überprüfen, um sicherzustellen, dass keine Syntaxfehler vorliegen, und klicken Sie auf Übernehmen.
Bei Syntaxfehlern werden die Zeilennummer und Ursache im Fehler referenziert. Klicken Sie mit der rechten Maustaste auf das Eingabefeld des Beschriftungsausdrucks und wählen Sie Zeilennummern anzeigen aus, um diese Nummern anzuzeigen.
Sie können sowohl normale als auch erweiterte Beschriftungsausdrücke als Beschriftungsausdrucksdateien (.lxp) exportieren, die in andere Layer oder Karten geladen werden können.
Beispielausdrücke
Nachfolgend sind einige Beispiele für Beschriftungsausdrücke aufgeführt:
- Verbinden einer Zeichenkette mit einem Wert in einem Feld. Mit dem folgenden Ausdruck wird beispielsweise eine Beschriftung erstellt, bei der dem Wert des Feldes "PARCELNO" der Text ""Parcel no:"" vorangestellt wird:
Arcade "Parcel no: " + $feature.PARCELNO
Python "Parcel no: " + [PARCELNO]
VBScript "Parcel no: " & [PARCELNO]
JScript "Parcel no: " + [PARCELNO]
- Runden einer Dezimalzahl auf eine festgelegte Anzahl von Dezimalstellen. Mit dem folgenden Ausdruck wird beispielsweise ein Feld "Area" auf eine Dezimalstelle gerundet angezeigt:
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); }
- Konvertieren aller Textbeschriftungen in Groß- oder in Kleinbuchstaben. Mit dem folgenden Ausdruck wird beispielsweise das Feld "Name" in Kleinbuchstaben formatiert:
Arcade lower($feature.NAME)
Python def FindLabel ( [NAME] ): S = [NAME] S = S.lower() return S
VBScript LCase ([NAME])
JScript [NAME].toLowerCase()
- Konvertieren der Textbeschriftungen in Groß- bzw. Kleinschreibung. Mit dem folgenden Ausdruck wird beispielsweise das Feld "Name", das ausschließlich in Großbuchstaben formatiert ist, in die richtige Schreibweise konvertiert:
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; }
- Erstellen eines gestapelten Textes. Mit dem folgenden Ausdruck wird beispielsweise eine Beschriftung mit dem Feld "Name" und den zwei Adressenfeldern jeweils auf separaten Zeilen erstellt:
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]
- Erstellen von gestapeltem Text basierend auf dem Text in einem Feld. In folgendem Ausdruck wird beispielsweise mit einem Komma angegeben, wo das Stapeln ausgeführt wird:
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; }
- Formatieren Ihrer Beschriftungen. Mit dem folgenden Ausdruck wird die Beschriftung beispielsweise als Währung angezeigt:
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); }
- Verwenden nur eines Teils des Feldes als Beschriftung. Dieser Ausdruck zeigt beispielsweise das dritte bis fünfte Zeichen an:
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; }
- Angeben einer bedingten If-Else-Anweisung. Mit diesen Funktionen werden Städte mit ihrem Namen in einer großen, roten Schriftart beschriftet, wenn sie mindestens 250.000 Einwohner haben. Liegt die Anzahl der Einwohner unter 250.000, werden sie mit der Standardschriftart beschriftet:
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]); }