Bagaimana cara melambangkan fitur dengan nilai NULL dalam simbologi bertingkat?

15

Saya memiliki dataset fitur poligon, dan atribut dari tabel berbeda yang saya gabungkan (satu-ke-satu) dalam QGIS untuk melambangkan atribut sebagai peta choropleth. Namun, tidak semua bidang poligon memiliki bidang yang cocok dalam tabel atribut numerik, sehingga ada beberapa nilai nol saat menghasilkan simbologi bertingkat.

Dari penelitian saya, saran yang paling umum dalam situasi ini adalah memasukkan salinan dataset poligon (atau latar belakang lainnya) yang mendefinisikan simbologi default. Ini berfungsi karena nilai nol tidak diklasifikasikan dalam simbologi bertingkat, sehingga orang dapat melihat "di bawah" mereka. Saya telah memasang gambar persis ini. Fitur abu-abu gelap tidak ada di tabel bergabung ( mb_percentile_isochrones_all), tetapi ada di tabel batas poligon ( mb2013_wgtn). Jadi saya perlu dua contoh mb2013_wgtntabel untuk menunjukkan fitur "tidak ada data".

masukkan deskripsi gambar di sini

Namun, ini sepertinya tidak elegan bagi saya. Jauh lebih intuitif untuk mendefinisikan simbol nilai nol. Mungkin ini bisa sangat transparan untuk konsisten dengan apa yang ada saat ini, atau mungkin itu akan menjadi semacam abu-abu bisu — apa pun yang diinginkan pengguna. Intinya adalah, pada saat ini seseorang membutuhkan dua lapisan berbeda dalam konten untuk menangani simbologi dari nilai nol. Ini berarti bahwa untuk mengubah simbologi semua fitur Anda secara bersamaan (katakanlah, jika Anda ingin menambah lebar semua batas), ini harus ditangani dua kali: sekali di properti untuk fitur dengan simbologi bertingkat, dan sekali untuk lapisan "latar belakang" yang menangani simbol nol.

Apakah mungkin untuk mendefinisikan simbol nilai "null" tanpa menggunakan "copy" dari layer yang sama yang digunakan untuk simbologi bertingkat, dalam QGIS (2.6.1)?

alphabetasoup
sumber
Apa yang salah dengan memiliki layer yang sama dua kali dengan simbologi yang berbeda? Mungkin menggunakan pemfilteran atribut sehingga tidak ada poligon yang muncul di kedua lapisan jika Anda bingung dalam mengidentifikasi atau melakukan geoproses. Apakah fitur yang tidak cocok 'nol' dalam nilai gabungannya atau apakah mereka memiliki nilai yang tidak muncul dalam tabel?
Michael Stimson
1
1. Masalah: jika saya ingin mengontrol properti umum fitur dengan nilai dan dengan nol (misalnya warna tepi), itu harus dilakukan dua kali. Ini membuatnya lebih mudah untuk lupa mengubah salah satunya, atau membuat sedikit kesalahan (mis. Warna abu-abu yang salah untuk garis besar). 2. Tidak ada masalah tentang kebingungan untuk geoprocessing, hanya simbologinya: Saya ingin melambangkan nullfitur di lapisan yang sama. 3. Fitur yang tidak cocok ada nulldalam nilai gabungnya (seperti yang terlihat pada tabel atribut QGIS pasca bergabung).
alphabetasoup
Ini juga membuatnya lebih sulit ketika membangun legenda untuk memasukkan sampel "tidak ada data", karena simbol ini akan berasal dari lapisan yang berbeda.
alphabetasoup
2
Kamu benar. Tidak ada tempat untuk memilih 'tampilkan fitur NULL seperti ini' dalam dialog simbol bertingkat, baris dengan nilai NULL sama sekali tidak ditampilkan.
Michael Stimson

Jawaban:

17

Seperti @ MichaelMiles-Stimson telah sebutkan, sepertinya tidak ada cara untuk melambangkan fitur NULL . Namun, ada alternatif di mana Anda membuat filter untuk memaksa QGIS memperlakukan nilai NULL sebagai bilangan bulat seperti 0. Saya telah menyertakan contoh di mana saya membuat 3 poligon sederhana masing-masing dengan nilai tertentu:

3 poligon

Tabel atribut

Berikut ini adalah Lulus Simbologi yang saya gunakan dengan perintah berikut:

case when "Some_Value" IS NULL then 0 else "Some_Value" end

Simbologi kelulusan

Semoga ini membantu!

Yusuf
sumber
Ini cukup membantu dan saya mungkin akan mempraktikkannya. Masalah yang saya antisipasi adalah 0 adalah nilai yang berarti dalam dataset saya. Saya mungkin bisa menggunakan -1 atau sesuatu. Tetapi dalam kedua kasus ini akan membuat identifikasi kelas istirahat otomatis sedikit sulit. Mungkin saya harus mengajukan permintaan fitur untuk ini mengingat sekarang sudah jelas solusinya kurang ideal.
alphabetasoup
Ya, termasuk NULLnilai bisa sangat berguna. Ini bukan solusi yang cukup tetapi Anda selalu dapat mengirimkan permintaan fitur dan berharap itu tersedia di versi berikutnya :)
Joseph
6

Saya tahu itu telah dijawab, tetapi hanya untuk memberikan pilihan lain:

Anda bisa meninggalkan bidang tanpa filter atau nilai (saya tahu ini berfungsi untuk KATEGORIS atau BERDASARKAN ATURAN):

http://docs.qgis.org/2.0/uk/docs/training_manual/vector_classification/classification.html

masukkan deskripsi gambar di sini

Saya menggunakan QGIS 2.10 dan berfungsi.

Marcos Saito
sumber
Selalu senang mengetahui lebih banyak metode dalam menyelesaikan atau mengatasi masalah! +1
Joseph
1
Mendorong untuk melihat peningkatan ini sejak 2.6, kan? Bisakah Anda mengonfirmasi bahwa itu berfungsi ketika nilai nol berasal dari tabel bergabung?
alphabetasoup
1
Beberapa catatan tentang ini. Simbologi kosong atau NULL dalam simbologi berbasis aturan akan diterapkan ke SEMUA fitur. Aturan diterapkan dari atas ke bawah, jadi mungkin dilapis oleh aturan lain, tetapi NULL juga akan ada di sana. Penting jika ini adalah simbologi yang kuat. Anda juga dapat "menghasilkan" aturan Anda dengan terlebih dahulu membuatnya dalam simbologi Categorized atau Graduated dan kemudian beralih ke Rule Based /
HeikkiVesanto
@ Venanto, saya tidak tahu apakah saya mendapatkannya, atau apakah itu masalah. Dalam kasus saya, saya menambahkan nilai Z ke SHP yang dibuat dari garis kontur, yang awalnya tidak memiliki nilai Z (Z = NULL). Saya telah mengatur fitur dengan nilai NULL ke merah dan yang dengan nilai apa pun menjadi hitam. Saat mengedit, segera setelah saya menetapkan nilai Z, fitur (garis kontur) berubah dari merah ke hitam, dengan cara ini saya tahu yang saya belum menetapkan nilai Z.
Marcos Saito
@Marcos itu tidak akan menjadi masalah dalam kasus Anda. Tetapi katakanlah garis itu berwarna merah untuk memulai, dan Anda ingin mengubahnya menjadi tidak kelihatan begitu tidak lagi nol. Itu tidak akan berhasil.
HeikkiVesanto
4

Mirip dengan apa yang dikatakan pengguna lain, opsi terbaik adalah menggunakan simbol berbasis aturan. Untuk menghindari pembuatan aturan secara manual:

  1. Ubah jenis simbol menjadi Lulus .
  2. Tentukan kolom simbol, warna, interval dll seperti biasa Simbol Lulus, dengan nilai nol tidak ditampilkan
  3. Ubah jenis simbol dari Lulus menjadi Berbasis aturan . Simbol yang didefinisikan pada langkah sebelumnya akan dibawa. Klik tombol tambah simbol, dan pilih ELSE . Ubah gaya yang sesuai. Kelas simbol ELSE ini akan menangkap nilai apa pun yang belum disimbolkan, termasuk nilai nol. Menambahkan simbol catch all all ELSE
  4. Klik OK. Nilai kosong sekarang akan disimbolkan. Simbol lulus, termasuk nilai nol

(Diuji dalam QGIS 3.6.0)

Jesse Reilly
sumber
sederhana dan bermanfaat. Terima kasih. Saya menyarankan QGIS harus memiliki opsi nilai kecualikan untuk klasifikasi Lulus. Saya telah mengalami beberapa kebingungan ketika mencoba untuk mengklasifikasikan dengan nilai nodata ditandai sebagai -1, -999 ... dll (menggunakan QGIS 3,14 LTR). Untungnya, QGIS secara otomatis mengabaikan nilai nol setidaknya ketika melakukan simbologi Lulus.
Iván Santiago