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, puede etiquetar las estaciones meteorológicas con la precipitación diaria. Para definir una única etiqueta basada en campos, haga clic con el botón derecho en una clase de entidad en el panel Contenido y haga clic en Etiqueta .
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, y 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, puede 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.
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, puede agregar 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. Por ejemplo, puede 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.
Puede controlar todavía más cómo aparece el texto en el mapa utilizando formato de texto. Con las etiquetas de formato de texto puede especificar diferentes propiedades de visualización de texto para distintas partes del texto de las etiquetas.
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, puede 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. 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 SDK, 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. 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
Motor de etiquetado Maplex 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 no está disponible, 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 no está disponible, 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:
- Haga clic con el botón derecho en una capa en el panel Contenido y haga clic en Propiedades de etiquetado .
Aparece el panel Clase de etiqueta.
- 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 [ ], independientemente del 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:
No utilice nombres de variable que dupliquen nombres de campo cuando use Arcade. En esta situación, no se crearán 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. 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 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:":
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 de área 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 Nombre 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 Nombre 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 Nombre 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]); }