Afficher uniquement le texte en majuscules sous forme d'étiquettes dans QGIS?

15

En utilisant QGIS 2.14 et voyez qu'il y a maintenant un étiquetage basé sur des règles. Je souhaite afficher les étiquettes des villes qui ont des majuscules (par exemple CRAWLEY) et ne pas montrer les étiquettes des villes avec des lettres minuscules (par exemple Faygate)

Le tableau des attributs ne distingue pas les différentes villes en dehors de leur nom. Y-a-t'il une façon de le faire ?

entrez la description de l'image ici

Paul G
la source

Réponses:

20

Vous n'avez pas vraiment besoin d'un style basé sur des règles pour cela.

  1. Sélectionnez l' option Afficher les étiquettes pour cette couche (ou basée sur des règles si vous préférez) et cliquez sur l' icône Expression et accédez à l' éditeur de fonctions comme indiqué ci-dessous.

    Éditeur de fonction

  2. Créez un nouveau fichier (ou modifiez-en un existant) et entrez les informations suivantes:

    from qgis.core import *
    from qgis.gui import *
    
    @qgsfunction(args='auto', group='Custom')
    def func(value, feature, parent):
        if value.isupper():
            return value
    
  3. Cliquez sur Charger, puis accédez à l' onglet Expression et tapez ce qui suit:

    func("fieldName")
    
  4. Ensuite, appliquez toutes les modifications. Vos étiquettes ne doivent désormais contenir que celles qui sont toutes en majuscules.


Exemple :

Avant d'exécuter la fonction:

Avant la fonction

Après avoir exécuté la fonction:

Après la fonction

Joseph
la source
8
Au lieu d'utiliser une fonction python personnalisée ici, vous pouvez également utiliser l'expression intégrée"fieldName"=upper("fieldName")
ndawson
3
@ndawson - Eh bien, c'est une fonction très pratique, merci! Bien que votre expression ne renvoie qu'un booléen, vous pouvez utiliser à la place if("fieldName" = upper("fieldName"), "fieldName", ''). Quoi qu'il en soit, je pense que vous devriez l'afficher comme réponse ;)
Joseph