Hanya menampilkan teks huruf besar sebagai label di QGIS?

15

Menggunakan QGIS 2.14 dan lihat sekarang ada pelabelan berdasarkan aturan. Saya ingin menunjukkan label kota yang memiliki huruf kapital (mis. CRAWLEY) dan tidak menunjukkan label kota dengan huruf kecil (mis. Faygate)

Tabel atribut tidak membedakan kota yang berbeda selain dari namanya. Apakah ada cara untuk melakukan ini?

masukkan deskripsi gambar di sini

Paul G
sumber

Jawaban:

20

Anda tidak benar-benar membutuhkan gaya berdasarkan aturan untuk ini.

  1. Pilih opsi Tampilkan label untuk lapisan ini (atau berdasarkan aturan jika Anda mau) dan klik ikon Ekspresi dan pergi ke Editor Fungsi seperti yang ditunjukkan di bawah ini.

    Editor fungsi

  2. Buat file baru (atau edit yang sudah ada) dan masukkan yang berikut ini:

    from qgis.core import *
    from qgis.gui import *
    
    @qgsfunction(args='auto', group='Custom')
    def func(value, feature, parent):
        if value.isupper():
            return value
    
  3. Klik Muat lalu buka tab Ekspresi dan ketik yang berikut:

    func("fieldName")
    
  4. Kemudian Terapkan semua perubahan. Label Anda sekarang hanya boleh berisi yang semuanya huruf kapital.


Contoh :

Sebelum menjalankan fungsi:

Sebelum berfungsi

Setelah menjalankan fungsi:

Setelah berfungsi

Yusuf
sumber
8
Alih-alih menggunakan fungsi python khusus di sini, Anda juga dapat menggunakan ekspresi "fieldName"=upper("fieldName")
bawaan
3
@ndawson - Ya itu fungsi yang sangat berguna, terima kasih! Meskipun ekspresi Anda hanya mengembalikan boolean, Anda bisa menggunakannya if("fieldName" = upper("fieldName"), "fieldName", ''). Either way, saya pikir Anda harus mempostingnya sebagai jawaban ;)
Joseph