Las cadenas de texto de las etiqueta derivan de uno o varios atributos de entidad. Las etiquetas son dinámicas, de modo que si los valores de atributo de entidad cambian, las etiquetas también cambian. Si activa el etiquetado, las entidades se etiquetan inicialmente en función de un campo; por ejemplo, en un mapa meteorológico, podría etiquetar las estaciones meteorológicas con la precipitación diaria. Este tipo de etiqueta basada en un único campo se establece en la pestaña Etiquetado.
Nota:
Este campo de etiqueta se establece de forma predeterminada como el primer campo de tipo cadena de caracteres que contiene el texto "name" en el nombre (no distingue mayúsculas de minúsculas). Si no existe ningún campo con ese texto en su nombre, se establece como predeterminado el primer campo de tipo cadena de caracteres, luego el primer campo de tipo entero, luego el primer campo de cualquier tipo.
Puede añadir campos del atributo a las etiquetas. Por ejemplo, podría etiquetar las estaciones meteorológicas con la precipitación diaria y la velocidad máxima del viento. Independientemente de que las etiquetas se basen en un campo de atributo o en varios, la instrucción que determina el texto de la etiqueta se denomina expresión de etiqueta. Cada clase de etiqueta tiene su propia expresión de etiqueta.
Más información sobre cómo crear expresiones de etiqueta
Puede insertar su propio texto en la expresión de etiqueta para que se muestre con las etiquetas en el mapa. Por ejemplo, en el mapa del tiempo, podría añadir unidades de medida abreviadas a cada etiqueta (por ejemplo, mm para milímetros y KH para los kilómetros por hora). También puede utilizar Arcade, Python, VBScript o JScript en una expresión de etiqueta para cambiar la visualización del texto. Podría insertar una función para que los valores de precipitación aparezcan en una línea de texto y los valores de velocidad del viento en otra. Ambos ejemplos se muestran en la siguiente imagen:
Puede controlar todavía más cómo aparece el texto en el mapa utilizando etiquetas de formato de texto de ArcGIS Pro. Con las etiquetas de formato de texto puede especificar diferentes propiedades de visualización de texto para distintas partes del texto de las etiquetas. Por ejemplo, puede mostrar los valores de precipitación con texto azul en cursiva y los de velocidad del viento con texto negro normal, tal y como aparece en la siguiente imagen:
Expresiones de etiqueta
Mediante una expresión de etiqueta avanzada, puede agregar lógica de Arcade, Python, VBScript o JScript a las expresiones de etiqueta, incluso lógica condicional y bucles. Por ejemplo, podría generar etiquetas en las que solo esté en mayúscula la primera letra de cada palabra, independientemente de cómo se almacenen las cadenas de texto en los campos de atributo. También puede utilizar expresiones de etiqueta para ajustar el formato de las etiquetas utilizando etiquetas de formato de ArcGIS Pro. Son caracteres especiales para cambiar el aspecto de todas las etiquetas o solo un grupo. Por ejemplo, puede utilizar la etiqueta de formato en negrita para que la primera línea de una etiqueta apilada, de varias líneas, esté en negrita.
Sugerencia:
Las expresiones de Arcade se utilizan en todo ArcGIS. El Perfil de etiquetado se utiliza para las expresiones de etiquetado. Las expresiones de Arcade funcionan en ArcGIS Pro y ArcGIS Maps SDKs for Native Apps, mientras que el lenguaje de otras expresiones podría ser incompatible.
Una expresión de etiqueta puede ser una expresión sencilla de una sola línea o una expresión más compleja de varias líneas de código que utilice la lógica de programación del analizador. Arcade permite expresiones complejas de forma predeterminada. Al utilizar Python, VBScript o JScript, la casilla Avanzado deberá estar activada y el código debe estar escrito en una función para habilitar expresiones de varias líneas.
Si ha codificado descripciones de valor en sus datos, puede utilizar la opción Usar descripciones de valor codificado para visualizar las descripciones en la etiqueta en lugar del código.
Los valores de campo se asignan automáticamente a cadenas de texto. Por tanto, si desea utilizar un valor numérico en una operación aritmética o al realizar una comparación, debe asignarlo nuevamente a un tipo de datos numérico.
Nota:
Los valores NULOS no se asignan a cadenas de texto. Se transmiten a la expresión como NULOS.
Cuando se utiliza Arcade, los valores de campo mantienen su tipo de datos.
Los siguientes ejemplos agregan dos campos de tipo entero:$feature.FIELD1 + $feature.FIELD2
int([FIELD1]) + int([FIELD2])
cint([FIELD1]) + cint([FIELD2])
parseInt([FIELD1]) + parseInt([FIELD2])
Opciones adicionales de Motor de etiquetado Maplex
Maplex Label Engine proporciona la capacidad adicional de controlar el espacio en blanco utilizado en la etiqueta.
La opción Quitar espacios extra quita los caracteres de espacio adicionales del texto de etiqueta. Estos espacios adicionales incluyen todos los caracteres de espacio precedentes, posteriores e interiores. Si la opción está deshabilitada, los espacios se utilizan para aplicar formato, por ejemplo, lo que le permite sangrar texto en una etiqueta apilada.
La opción Quitar saltos de línea extra quita los saltos de línea adicionales del texto de etiqueta. Si la opción está deshabilitada, es posible utilizar el espaciado de multilínea en una etiqueta apilada.
Escribir una expresión de etiqueta
Para escribir una expresión de etiqueta, siga estos pasos:
- Asegúrese de que Lista por etiqueta es el método activo de visualización del panel Contenido. Haga clic en la pestaña Lista por etiqueta .
- Elija una clase de etiqueta en el panel Contenido y haga clic en la pestaña Etiquetado.
- En la pestaña Etiquetado, en el grupo Clase de etiqueta, haga clic en el botón Expresión .
- Elija un lenguaje en el menú Lenguaje.
- Escriba una expresión de Arcade, Python, VBScript o JScript. También puede crear una expresión haciendo doble clic en el campo para agregarlo a la expresión o seleccionando el campo, haciendo clic con el botón derecho y seleccionando Incorporar para agregar el campo a la ubicación en la que se ha hecho clic, separado por uno o más espacios. Utilice las funciones de texto que se proporcionan haciendo doble clic para agregarlas a la expresión.
Cuando se utiliza Python, VBScript y JScript, los campos están encerrados entre corchetes [ ], sin importar el tipo de datos de la fuente de datos de la capa. Arcade utiliza otra forma de especificar campos.
Sintaxis de campo $feature.fieldname
Sintaxis de campo unido $feature['tablename.fieldname']
Sintaxis de campo de valor de dominio codificado DomainName($feature, 'fieldname')
Sugerencia:
Al usar Arcade, puede usar la función Consola para ayudar a depurar expresiones de etiqueta. Al hacer clic en Verificar , aparece un vínculo Ver mensajes de consola si la función Consola está incluida en la expresión. Haga clic en este vínculo para abrir la ventana Mensajes de consola. También puede proporcionar un título para su expresión al usar Arcade.
Precaución:
Cuando se etiqueta un campo cuyo nombre contiene caracteres especiales o comienza por un número, Arcade utiliza el mismo formato que la sintaxis de campo unido, por ejemplo, $feature['33field'], $feature['acres²'] o $feature['st_area(SHAPE)'].
También puede introducir etiquetas de formato de texto de ArcGIS Pro en el cuadro Expresión para aplicar formato a una parte del texto de la etiqueta.
Nota:
Cuando se utiliza Arcade, el formato de campo en la capa no se traslada a las etiquetas. Deben utilizarse los métodos de formato de Arcade.
Si la expresión va a abarcar varias líneas de código, active la casilla Opciones avanzadas e introduzca la expresión de etiqueta. Esto no es necesario cuando se utiliza Arcade.
- Haga clic en Verificar para asegurarse de que no hay errores de sintaxis y, a continuación, haga clic en Aplicar.
Si hay errores de sintaxis, el número de línea y el motivo aparecen en el error. Para ver estos números, haga clic con el botón derecho en el cuadro de entrada de la expresión de etiqueta y seleccione Mostrar números de línea.
Las expresiones de etiqueta normales y avanzadas se pueden exportar como archivos de expresión de etiqueta (.lxp), que se pueden cargar en otros mapas o capas.
Ejemplos de expresión
A continuación, se ofrecen ejemplos de expresiones de etiqueta:
Concatenar una cadena de caracteres a un valor de campo
Concatenar una cadena de caracteres al valor de un campo; por ejemplo, esta expresión crea una etiqueta donde el valor del campo PARCELNO va precedido del texto "Parcel no:":
"Parcel no: " + $feature.PARCELNO
"Parcel no: " + [PARCELNO]
"Parcel no: " & [PARCELNO]
"Parcel no: " + [PARCELNO]
Redondear un número decimal
Redondear un número decimal a un número fijo de decimales; por ejemplo, esta expresión muestra un campo AREA redondeado a una sola posición decimal:
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);
}
Convertir a mayúsculas y minúsculas
Convertir sus etiquetas de texto a todo en mayúsculas o minúsculas; por ejemplo, esta expresión hace que un campo NAME esté todo en minúsculas:
lower($feature.NAME)
def FindLabel ( [NAME] ):
S = [NAME]
S = S.lower()
return S
LCase ([NAME])
[NAME].toLowerCase()
Convertir a la primera letra de cada palabra en mayúscula y las demás en minúscula
Convertir las etiquetas de texto a las mayúsculas o minúsculas correctas; por ejemplo, esta expresión toma un campo NAME que está en mayúsculas y lo escribe en mayúsculas o minúsculas correctamente:
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;
}
Apilar texto de varios campos
Crear texto apilado; por ejemplo, esta expresión crea una etiqueta con el campo NAME y el campo ADDRESS en líneas separadas:
$feature.NAME + TextFormatting.NewLine + $feature.ADDRESS
[NAME] + '\n' + [ADDRESS]
[NAME] & vbCrLf& [ADDRESS]
[NAME] + "\r" + [ADDRESS]
Apilar texto de un campo
Crear texto apilado en función del texto de un campo; por ejemplo, esta expresión utiliza la coma para especificar donde tiene lugar la pila:
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;
}
Formatear etiquetas
Aplicar formato a las etiquetas; por ejemplo, esta expresión muestra la etiqueta como moneda:
"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);
}
Etiqueta con parte de la cadena de caracteres
Utilizar solo parte del campo como etiqueta; por ejemplo, en esta expresión se muestran los caracteres del 3 al 5:
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;
}
Crear una instrucción IF-ELSE condicional
Especificar una instrucción IF-ELSE condicional. Estas funciones etiquetan ciudades con su nombre con una fuente grande y roja si su población es igual o superior a 250.000 y con la etiqueta predeterminada si la población es menor de 250.000:
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]);
}
Nota:
Para etiquetar un subconjunto de entidades en función del valor de un campo, cree la consulta SQL en la clase de etiqueta en lugar de hacerlo a través de la expresión de etiqueta.
Recursos adicionales
- Referencia del lenguaje Arcade
- Referencia del lenguaje Python
- Referencia del lenguaje VBScript de Microsoft
- Referencia del lenguaje JScript de Microsoft
(Alguna información se almacena en páginas web cuya creación, propiedad y mantenimiento no corresponden a Esri. Esri no puede garantizar la disponibilidad de estas páginas y no es responsable del contenido que se encuentra en ellas).