Mostrando solo testo in maiuscolo come etichette in QGIS?


15

Usando QGIS 2.14 e vedi che ora esiste un'etichettatura basata su regole. Desidero mostrare le etichette delle città con lettere maiuscole (ad es. CRAWLEY) e non le etichette delle città con lettere minuscole (ad es. Faygate)

La tabella degli attributi non distingue le diverse città dal loro nome. C'è un modo per farlo?

inserisci qui la descrizione dell'immagine

Risposte:


20

Non hai davvero bisogno di uno stile basato su regole per questo.

  1. Seleziona l' opzione Mostra etichette per questo livello (o se preferisci in base alle regole) e fai clic sull'icona Espressione e vai all'editor delle funzioni come mostrato di seguito.

    Editor di funzioni

  2. Crea un nuovo file (o modificane uno esistente) e inserisci quanto segue:

    from qgis.core import *
    from qgis.gui import *
    
    @qgsfunction(args='auto', group='Custom')
    def func(value, feature, parent):
        if value.isupper():
            return value
    
  3. Fai clic su Carica, quindi vai alla scheda Espressione e digita quanto segue:

    func("fieldName")
    
  4. Quindi applicare tutte le modifiche. Le etichette dovrebbero ora contenere solo quelle che sono tutte lettere maiuscole.


Esempio :

Prima di eseguire la funzione:

Prima della funzione

Dopo aver eseguito la funzione:

Dopo la funzione


8
Invece di usare una funzione personalizzata Python qui puoi anche usare l'espressione integrata"fieldName"=upper("fieldName")
ndawson

3
@ndawson - Beh, questa è una funzione molto utile, grazie! Sebbene la tua espressione restituisca solo un valore booleano, puoi invece utilizzare if("fieldName" = upper("fieldName"), "fieldName", ''). Ad ogni modo, penso che dovresti pubblicarlo come risposta ;)
Joseph
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.