Festlegen von Text für Beschriftungen

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 aktivieren, werden die Features zunächst basierend auf einem Feld beschriftet. Auf einer 2D-Karte können so z. B. Bodenpasspunkte zur besseren Positionsbeschreibung beschriftet werden. Klicken Sie im Bereich Inhalt mit der rechten Maustaste auf eine Feature-Class, und klicken Sie auf Beschriftung Beschriftung aktivieren, 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:

Arcade
$feature.FIELD1 + $feature.FIELD2
Python
int([FIELD1]) + int([FIELD2])
VBScript
cint([FIELD1]) + cint([FIELD2])
JScript
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:

  1. Klicken Sie im Bereich Inhalt mit der rechten Maustaste auf einen Layer, und klicken Sie auf Beschriftungseigenschaften Beschriftungseigenschaften.

    Der Bereich Beschriftungsklasse wird angezeigt.

  2. Wählen Sie im Menü Sprache eine Sprache aus.
  3. 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.

  4. 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:

Arcade
"Parcel no: " + $feature.PARCELNO
Python
"Parcel no: " + [PARCELNO]
VBScript
"Parcel no: " & [PARCELNO]
JScript
"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:

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);
}

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:

Arcade
lower($feature.NAME)
Python
def FindLabel ( [NAME] ):
  S = [NAME]
  S = S.lower()
  return S
VBScript
LCase ([NAME])
JScript
[NAME].toLowerCase()

Konvertieren in Groß- bzw. Kleinschreibung

Konvertieren der Textbeschriftungen in Groß- bzw. Kleinschreibung. Mit dem folgenden Ausdruck werden beispielsweise alle Wörter im Feld NAME, das ausschließlich in Großbuchstaben formatiert ist, in Großschreibung 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;
}

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:

Arcade
$feature.NAME + TextFormatting.NewLine + $feature.ADDRESS
Python
[NAME] + '\n' + [ADDRESS]
VBScript
[NAME] & vbCrLf& [ADDRESS]
JScript
[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:

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;
}

Beschriftungen formatieren

Formatieren der 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);
}

Mit Teil einer Zeichenfolge beschriften

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;
}

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:

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]);
}
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.