¿Muestra solo texto en mayúsculas como etiquetas en QGIS?

15

Usando QGIS 2.14 y vea que ahora hay un etiquetado basado en reglas. Deseo mostrar etiquetas de ciudades que tienen letras mayúsculas (por ejemplo, CRAWLEY) y no mostrar las etiquetas de ciudades con letras minúsculas (por ejemplo, Faygate)

La tabla de atributos no distingue las diferentes ciudades aparte de su nombre. Hay alguna forma de hacer esto ?

ingrese la descripción de la imagen aquí

Paul G
fuente

Respuestas:

20

Realmente no necesitas un estilo basado en reglas para esto.

  1. Seleccione la opción Mostrar etiquetas para esta capa (o basada en reglas si lo prefiere) y haga clic en el icono Expresión y vaya al Editor de funciones como se muestra a continuación.

    Editor de funciones

  2. Cree un nuevo archivo (o edite uno existente) e ingrese lo siguiente:

    from qgis.core import *
    from qgis.gui import *
    
    @qgsfunction(args='auto', group='Custom')
    def func(value, feature, parent):
        if value.isupper():
            return value
    
  3. Haga clic en Cargar , vaya a la pestaña Expresión y escriba lo siguiente:

    func("fieldName")
    
  4. Luego aplique todos los cambios. Sus etiquetas ahora solo deben contener aquellas que son todas mayúsculas.


Ejemplo :

Antes de ejecutar la función:

Antes de la función

Después de ejecutar la función:

Después de la función

José
fuente
8
En lugar de usar una función personalizada de Python aquí, también podría usar la expresión incorporada"fieldName"=upper("fieldName")
ndawson
33
@ndawson - Bueno, esa es una función muy útil, ¡gracias! Aunque su expresión solo devuelve un valor booleano, en su lugar podría usarlo if("fieldName" = upper("fieldName"), "fieldName", ''). De cualquier manera, creo que deberías publicarlo como respuesta ;)
Joseph