Bagaimana cara mengatur transparansi per poligon dalam shapefile di QGIS?

13

Bagaimana cara mengatur transparansi per poligon dalam shapefile di QGIS?

Sebagai contoh:

poligon dengan bidang "nilai" = 1 harus sepenuhnya transparan sedangkan bidang dengan bidang "nilai" = 0,4 harus memiliki nilai transparansi 40%. Warna poligon harus bergantung pada bidang lain. Lebih disukai saya akan melakukan ini menggunakan satu layer tetapi menggunakan dua layer dengan beberapa mode blending juga OK.

RutgerH
sumber

Jawaban:

17

Anda dapat menggunakan properti yang ditentukan data untuk ini. Gunakan tab gaya pada properti layer dan klik tombol ekspresi di sebelah kanan warna.

Di sana Anda dapat menggunakan fungsi color_rgba( red, green, blue, alpha )untuk membuat warna. Semua nilai harus antara 0 dan 255.

Contoh:

color_rgba( 255, 0, 0, ( 1 - "transparency" ) * 255 )

Ini akan memberi Anda gaya yang benar-benar merah dengan alpha yang didefinisikan dari bidang "transparansi" sesuai spesifikasi Anda dalam pertanyaan.

Di editor ekspresi Anda akan menemukan sejumlah fungsi terkait warna lain yang mungkin lebih sesuai dengan kebutuhan Anda, cukup jelajahi dan baca dokumentasi mereka langsung di editor ekspresi.

Contoh lain untuk nilai nominal (kualitatif) yang biasanya Anda klasifikasikan adalah bekerja di ruang hsv:

Ada fungsi color_hsva( hue, saturation, value, alpha )untuk membuat warna. Nilai harus berada di antara

  • rona: 0-360 (artinya lihat di bawah)
  • nilai dan saturasi: 0-100
  • alpha: 0-255.

Contoh:

color_hsva( 
  CASE 
    WHEN "classification" = 'red' THEN 0
    WHEN "classification" = 'blue' THEN 240
  END CASE, -- hue
  80,  -- saturation
  80,  -- value
  ( 1 - "transparency" ) * 255  -- alpha
)

masukkan deskripsi gambar di sini

Untuk QGIS> = 2.12 juga pertimbangkan jawaban @ndawsons.

Matthias Kuhn
sumber
Lihat jawaban terkait di bawah ini untuk QGIS> = 2.12
ndawson
11

Sebagai tindak lanjut dari jawaban Matthias, di QGIS> = 2.12 Anda dapat menggunakan warna isian yang ditentukan data dengan ekspresi:

 set_color_part(@value, 'alpha', ( 1 - "transparency" ) * 255 )

Apa yang dilakukan ekspresi ini adalah mengambil warna poligon asli (@ nilai), dan mengganti saluran alfa (opacity) dengan nilai yang dihitung dari bidang). Ini berarti Anda dapat mengatur ekspresi warna isian dan kemudian dengan senang hati melanjutkan dan menggunakan renderer yang dikategorikan atau lulus untuk secara otomatis mengatur warna isian dasar dan aturan opacity akan tetap dihormati. Tidak perlu mengkodekan nilai rgb dengan cara ini!

ndawson
sumber
1
Pendekatan yang bagus dan fleksibel!
Matthias Kuhn
Ini sepertinya tidak berfungsi di QGIS 3+. Setelah saya menambahkan ekspresi itu, semua poligon mengambil satu warna dengan opacity yang sama.
robroc
3

Anda juga dapat mengatur nilai-nilai ini di Properti Lapisan lapisan (klik kanan -> Properti).
Gunakan Gaya -> Dikategorikan lalu pilih kolom yang ingin Anda gunakan, misalnya 'nilai', pilih warna di jalur warna dan klik 'Klasifikasi'.
Kemudian Anda dapat menentukan warna setiap nilai dan transparansi.

masukkan deskripsi gambar di sini

Jika Anda menambahkan nilai baru ke layer yang digunakan klik pada Clasify untuk menambahkannya ke gaya Anda yang ada.

Martin
sumber
1
Ini tidak akan mengizinkan penggunaan bidang yang berbeda untuk transparansi dan klasifikasi seperti yang ditentukan dalam pertanyaan.
Matthias Kuhn