Menampilkan beberapa bidang sebagai label jika satu bidang bernilai nol di QGIS?

12

Saya mengalami beberapa masalah saat mencoba menampilkan beberapa bidang untuk satu label di QGIS. Di QGIS2.6, berusaha menampilkan label untuk fitur yang terdiri dari beberapa bidang menghasilkan label kosong jika salah satu bidang tersebut nol. Jadi misalnya, dalam dialog ekspresi label:

concat("Temp Site",'\n',"Notes",'\n',"Function")

akan berfungsi secara normal kecuali salah satu bidangnya nol, maka tidak ada label yang ditampilkan. Menggunakan '||' Operator sebagai gantinya dalam dialog ekspresi juga menghasilkan perilaku yang sama:

"Temp Site" || '\n'  ||  "Notes" || '\n'  ||  "Function"

Apakah ada cara untuk menampilkan label bahkan jika salah satu bidang adalah nol?

kilolima
sumber

Jawaban:

20

Gunakan fungsi "Menyatu". Coalesce mengambil nilai bukan nol pertama dari argumennya. Jadi ungkapan ini harus bekerja:

coalesce("Temp Site",'') || '\n'  ||  coalesce("Notes",'') || '\n'  ||  coalesce("Function",'')
ndawson
sumber
1
Anda juga dapat membungkus baris baru dalam fungsi penggabungan, jika masuk akal untuk menghindari garis-garis kosong di tengah label yang saya gunakan ungkapan seperticoalesce("Temp Site", ' ') || coalesce(('\n' || "Notes"), ' ') || coalesce(('\n' || "Function"), ' ' )
Brian Fisher