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 añadir 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 toda la plataforma ArcGIS. Las expresiones de Arcade funcionan en Runtime, ArcGIS Pro y ArcGIS Runtime SDKs, mientras que otros lenguajes no funcionan.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 del Maplex Label Engine
El Maplex Label Engine proporciona la capacidad adicional de controlar el espacio en blanco utilizado en su 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
- Asegurar lista por etiquetado es la forma activa de mostrar el panel Contenido.
- 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 Expresión .
- Elija un lenguaje en el menú Lenguaje.
- Escriba una expresión 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 una manera diferente para especificar los campos.
Sintaxis de campo $feature.fieldname
Sintaxis de campo unido $feature['tablename.fieldname']
Sintaxis de campo de valor de dominio codificado DomainName($feature, 'fieldname')
Precaución:
Cuando use Arcade, no utilice nombres de variable que dupliquen nombres de campo. En esta situación, no se crean etiquetas.
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²'], $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. Debe utilizar los métodos de formato de Arcade.
Si la expresión va a abarcar varias líneas de código, active la casilla de verificación Avanzada y escriba la expresión de la 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 al valor de un campo; por ejemplo, esta expresión crea una etiqueta donde el texto "Parcel no:" precede al valor del campo PARCELNO:
Arcade "Parcel no: " + $feature.PARCELNO
Python "Parcel no: " + [PARCELNO]
VBScript "Parcel no: " & [PARCELNO]
JScript "Parcel no: " + [PARCELNO]
- 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:
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); }
- 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:
Arcade lower($feature.NAME)
Python def FindLabel ( [NAME] ): S = [NAME] S = S.lower() return S
VBScript LCase ([NAME])
JScript [NAME].toLowerCase()
- 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:
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; }
- Crear texto apilado; por ejemplo, esta expresión crea una etiqueta con el campo NAME y los dos campos de dirección, todos en líneas separadas:
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]
- 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:
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; }
- Aplicar formato a las etiquetas; por ejemplo, esta expresión muestra la etiqueta como moneda:
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); }
- Utilizar solo parte del campo como etiqueta; por ejemplo, en esta expresión se muestran los caracteres del 3 al 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; }
- 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:
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]); }
Nota:
Para etiquetar un subconjunto de entidades en función un valor de campo, cree la consulta SQL en la clase de etiqueta en lugar de hacerlo a través de la expresión de etiqueta.Los siguientes son 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 aloja en páginas web no creadas, propiedad o mantenidas por Esri. Esri no puede garantizar la disponibilidad de estas páginas y no es responsable del contenido que se encuentra en ellas).