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. Diese einzelne, auf Feldern basierende Beschriftung wird auf der Registerkarte Beschriftung festgelegt.
Hinweis:
Dieses Beschriftungsfeld entspricht standardmäßig dem ersten Feld vom Typ "String", das den Text "Name" in seinem Namen enthält (Groß- und Kleinschreibung muss nicht beachtet werden). 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.
Weitere Informationen zum Erstellen von Beschriftungsausdrücken
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. Im folgenden Bild sind beide Beispiele dargestellt:
Mit ArcGIS Pro-Textformatierungs-Tags 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. Sie können beispielsweise die Niederschlagswerte als kursiven blauen Text und die Windgeschwindigkeiten als normalen schwarzen Text anzeigen (siehe folgende Abbildung):
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 von ArcGIS Pro 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 ArcGIS durchgängig verwendet. Das Beschriftungsprofil wird für Beschriftungsausdrücke verwendet. Arcade-Ausdrücke können in ArcGIS Pro und ArcGIS Maps SDKs for Native Apps verwendet werden, wo andere Ausdruckssprachen möglicherweise nicht unterstützt werden.
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 also 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 deaktiviert 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 deaktiviert ist, kann sich die gestapelte Beschriftung über mehrere Zeilen erstrecken.
Erstellen eines Beschriftungsausdrucks
Führen Sie zum Erstellen eines Beschriftungsausdrucks die folgenden Schritte aus:
- Stellen Sie sicher, dass Nach Beschriftung auflisten die aktive Methode zum Anzeigen des Bereichs Inhalt ist. Klicken Sie auf die Registerkarte Nach Beschriftung auflisten .
- Wählen Sie im Bereich Inhalt eine Beschriftungsklasse aus, und klicken Sie auf die Registerkarte Beschriftung.
- Klicken Sie auf der Registerkarte Beschriftung in der Gruppe Beschriftungsklasse auf die Schaltfläche Ausdruck .
- 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 einen anderen Weg.
Feldsyntax $feature.fieldname
Syntax verbundener Felder $feature['tablename.fieldname']
Feldsyntax von Domänen mit codierten Werten DomainName($feature, 'fieldname')
Tipp:
In Arcade können Sie die Funktion "Console" für das Debugging von Beschriftungsausdrücken verwenden. Wenn Sie auf Überprüfen klicken, wird der Link Konsolenmeldungen anzeigen angezeigt, wenn die Funktion "Console" im Ausdruck enthalten ist. Klicken Sie auf diesen Link, um das Fenster Konsolenmeldungen zu öffnen. Sie können in Arcade auch einen Titel für Ihren Ausdruck angeben.
Vorsicht:
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:
Eine Zeichenfolge mit einem Feldwert verbinden
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:
"Parcel no: " + $feature.PARCELNO
"Parcel no: " + [PARCELNO]
"Parcel no: " & [PARCELNO]
"Parcel no: " + [PARCELNO]
Eine Dezimalzahl runden
Runden einer Dezimalzahl auf eine festgelegte Anzahl von Dezimalstellen. Mit dem folgenden Ausdruck wird beispielsweise ein Feld "AREA" auf eine Dezimalstelle gerundet angezeigt:
round(number($feature.AREA), 1)
round(float([AREA]), 1)
Round ([AREA], 1)
function FindLabel ( [AREA] )
{
var ss;
var num= parseFloat([AREA]);
ss = num.toFixed(1);
return (ss);
}
In Groß- und Kleinbuchstaben konvertieren
Konvertieren aller Textbeschriftungen in Groß- oder in Kleinbuchstaben. Mit dem folgenden Ausdruck wird beispielsweise das Feld "NAME" in Kleinbuchstaben formatiert:
lower($feature.NAME)
def FindLabel ( [NAME] ):
S = [NAME]
S = S.lower()
return S
LCase ([NAME])
[NAME].toLowerCase()
Konvertieren in Groß- bzw. Kleinschreibung
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:
Proper($feature.NAME, 'firstword')
def FindLabel ( [NAME] ):
S = [NAME]
S = S.title()
return S
Function FindLabel ( [NAME] )
FindLabel = UCase(Left([NAME],1)) & LCase(Right([NAME], Len([NAME]) -1))
End Function
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;
}
Text aus mehreren Feldern stapeln
Erstellen eines gestapelten Textes. Mit dem folgenden Ausdruck wird beispielsweise eine Beschriftung mit dem Feld NAME und dem Feld ADDRESS jeweils auf separaten Zeilen erstellt:
$feature.NAME + TextFormatting.NewLine + $feature.ADDRESS
[NAME] + '\n' + [ADDRESS]
[NAME] & vbCrLf& [ADDRESS]
[NAME] + "\r" + [ADDRESS]
Text aus einem Feld stapeln
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:
replace($feature.LABELFIELD, ', ', '\n')
def FindLabel ( [LABELFIELD] ):
S = [LABELFIELD]
S = S.replace(', ', '\n')
return S
Function FindLabel ( [LABELFIELD] )
FindLabel = replace([LABELFIELD], ", ", vbnewline)
End Function
function FindLabel ( [LABELFIELD] )
{
var r, re;
var str = [LABELFIELD];
re = /,/g;
r = str.replace(re, "\r");
return r;
}
Beschriftungen formatieren
Formatieren der Beschriftungen. Mit dem folgenden Ausdruck wird die Beschriftung beispielsweise als Währung angezeigt:
"Occupancy Revenue: $" + round($feature.MAXIMUM_OC * $feature.RATE, 2)
def FindLabel ( [MAXIMUM_OC], [RATE] ):
import locale
locale.setlocale(locale.LC_ALL, '')
S = locale.currency(float([MAXIMUM_OC]) * float([RATE]))
return S
"Occupancy Revenue: " & FormatCurrency ([MAXIMUM_OC] * [RATE])
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);
}
Mit Teil einer Zeichenfolge beschriften
Verwenden nur eines Teils des Feldes als Beschriftung. Dieser Ausdruck zeigt beispielsweise das dritte bis fünfte Zeichen an:
mid($feature.LABELFIELD, 2, 3)
def FindLabel ( [LABELFIELD] ):
S = [LABELFIELD]
return S[2:5]
Mid([LABELFIELD], 3, 3)
function FindLabel ( [LABELFIELD] )
{
var S;
var str = [LABELFIELD];
S = str.substring(2, 5);
return S;
}
Erstellen einer bedingten If-Else-Anweisung
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:
if ($feature.POPULATION >=250000) {
return "<CLR red='255'><FNT size = '14'>" + $feature.NAME + "</FNT></CLR>"
}
else {
return $feature.NAME
}
def FindLabel ( [NAME], [POPULATION] ):
if int([POPULATION]) >= 250000:
return "<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>"
else:
return [NAME]
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
function FindLabel ( [NAME], [POPULATION] )
{
if (parseFloat([POPULATION]) >= 250000){
return ("<CLR red='255'><FNT size = '14'>" + [NAME] + "</FNT></CLR>");
}
else
return ([NAME]);
}
Hinweis:
Um eine Teilmenge von Features basierend auf einem Feldwert zu beschriften, erstellen Sie die SQL-Abfrage in der Beschriftungsklasse und nicht mit einem Beschriftungsausdruck.
Zusätzliche Quellen
- Arcade-Sprachreferenz (auf Englisch)
- Python-Sprachreferenz (auf Englisch)
- Microsoft-Referenz zur VBScript-Sprache (auf Englisch)
- Microsoft-Referenz zur JScript-Sprache (auf Englisch)
(Einige Informationen befinden sich auf Webseiten anderer Eigentümer, die nicht von Esri erstellt und gepflegt werden. Esri kann keinerlei Garantie für die Verfügbarkeit dieser Webseiten geben und übernimmt für deren Inhalt keine Verantwortung.)