Mostrando apenas texto em maiúsculas como etiquetas no QGIS?

15

Usando o QGIS 2.14 e veja, agora existe rotulagem baseada em regras. Desejo mostrar etiquetas de cidades com letras maiúsculas (por exemplo, CRAWLEY) e não mostrar etiquetas de cidades com letras minúsculas (por exemplo, Faygate)

A tabela de atributos não distingue as diferentes cidades além do nome. Existe alguma forma de fazer isso ?

insira a descrição da imagem aqui

Paul G
fonte

Respostas:

20

Você realmente não precisa de estilos baseados em regras para isso.

  1. Selecione a opção Mostrar rótulos para esta camada (ou com base em regras, se preferir) e clique no ícone Expressão e vá para o Editor de funções, como mostrado abaixo.

    Editor de funções

  2. Crie um novo arquivo (ou edite um existente) e digite o seguinte:

    from qgis.core import *
    from qgis.gui import *
    
    @qgsfunction(args='auto', group='Custom')
    def func(value, feature, parent):
        if value.isupper():
            return value
    
  3. Clique em Carregar , vá para a guia Expressão e digite o seguinte:

    func("fieldName")
    
  4. Em seguida, aplique todas as alterações. Agora, seus marcadores devem conter apenas letras maiúsculas.


Exemplo :

Antes de executar a função:

Antes da função

Depois de executar a função:

Depois da função

Joseph
fonte
8
Em vez de usar uma função de python costume aqui você também pode usar a expressão embutido"fieldName"=upper("fieldName")
ndawson
3
@ndawson - Bem, isso é uma função muito útil, obrigado! Embora sua expressão retorne apenas um booleano, você pode usar if("fieldName" = upper("fieldName"), "fieldName", ''). De qualquer forma, eu acho que você deve publicá-la como uma resposta ;)
Joseph