Czy w QGIS wyświetla się tylko duży tekst jako etykiety?

15

Używając QGIS 2.14 i zobacz, że istnieje teraz etykietowanie oparte na regułach. Chcę wyświetlać etykiety miast z dużymi literami (np. CRAWLEY), a nie pokazywać etykiet miast z małymi literami (np. Faygate)

Tabela atrybutów nie rozróżnia różnych miast oprócz ich nazwy. Czy jest na to sposób?

wprowadź opis zdjęcia tutaj

Paul G.
źródło

Odpowiedzi:

20

Nie potrzebujesz do tego stylizacji opartej na regułach.

  1. Wybierz opcję Pokaż etykiety dla tej warstwy (lub oparte na regułach, jeśli wolisz) i kliknij ikonę Wyrażenie i przejdź do Edytora funkcji, jak pokazano poniżej.

    Edytor funkcji

  2. Utwórz nowy plik (lub edytuj istniejący) i wprowadź następujące dane:

    from qgis.core import *
    from qgis.gui import *
    
    @qgsfunction(args='auto', group='Custom')
    def func(value, feature, parent):
        if value.isupper():
            return value
    
  3. Kliknij Załaduj, a następnie przejdź do karty Wyrażenie i wpisz następujące polecenie:

    func("fieldName")
    
  4. Następnie zastosuj wszystkie zmiany. Twoje etykiety powinny teraz zawierać tylko te, które są wielkimi literami.


Przykład :

Przed uruchomieniem funkcji:

Przed funkcją

Po uruchomieniu funkcji:

Po funkcji

Joseph
źródło
8
Zamiast używać tutaj niestandardowej funkcji python, możesz również użyć wbudowanego wyrażenia"fieldName"=upper("fieldName")
ndawson
3
@ndawson - Cóż, to bardzo przydatna funkcja, dziękuję! Chociaż twoje wyrażenie zwraca tylko wartość logiczną, możesz zamiast tego użyć if("fieldName" = upper("fieldName"), "fieldName", ''). Tak czy inaczej, myślę, że powinieneś opublikować to jako odpowiedź ;)
Joseph