Memfilter fitur di lapisan lain QGIS Atlas?

22

Saya mencoba menggunakan alat QGIS Atlas untuk membangun 'scattermaps' siswa, yaitu. perlihatkan sekolah dan siswa yang menghadiri sekolah itu, untuk 215 sekolah.

Lapisan sekolah adalah lapisan cakupan, dan didorong oleh nilai SCHNUM(jumlah sekolah). Ini berfungsi dengan baik, itu mendorong halaman dengan benar.

Namun, bagaimana saya bisa menampilkan hanya fitur dari lapisan lain, dalam hal ini lapisan titik siswa, yang cocok dengan SCHNUMnilai yang sesuai untuk fitur saat ini di lapisan cakupan?

Saya juga ingin mengganti lapisan cakupan (sekolah) menjadi 'tersembunyi' dan menggunakan teknik yang sama untuk hanya menampilkan sekolah saat ini dari lapisan sekolah duplikat.

Ada presentasi yang tersedia di sini yang menyinggung penggunaan pengaturan aturan lapisan rendering menggunakan $atlasfeatureid, tapi saya tidak tahu cara kerjanya.

Saya juga menemukan halaman pelacak bug ini yang menunjukkan ini berfungsi, tetapi sekali lagi, saya tidak bisa membuatnya berfungsi pada data saya:

DPSSpatial
sumber
Maaf memposting ini sebagai jawaban meskipun itu pertanyaan. Apakah ada tutorial video yang disarankan untuk ini? Saya mencoba mengikuti dan entah bagaimana selalu berhasil tersesat di beberapa titik. Memiliki masalah yang sama.
JRamos

Jawaban:

41

Memang, Anda perlu menggunakan simbologi berbasis aturan untuk mencapai apa yang Anda inginkan.

Anda perlu membuat aturan untuk apa yang ingin Anda tampilkan, dan aturan ELSE untuk semua yang lain.

masukkan deskripsi gambar di sini

Dalam aturan ELSE, hapus centang pada kotak centang simbol untuk membuatnya tidak terlihat.

masukkan deskripsi gambar di sini

Sembunyikan fitur lain dari lapisan cakupan

Aturan untuk hanya menampilkan fitur atlas saat ini adalah sebagai berikut:

$id  =  @atlas_featureid 

masukkan deskripsi gambar di sini

catatan : Saya percaya bahwa variabel @atlas_featureid adalah sintaks 2,12. Saya pikir di 2.8.x Anda perlu menggunakan fungsi yang disebut $ atlas_featureid.

Sembunyikan fitur di luar fitur atlas saat ini

Resepnya sama seperti sebelumnya, yang lain aturan untuk menyembunyikan fitur, satu untuk ditampilkan.

Untuk pertanyaan khusus Anda, Anda tampaknya memiliki atribut bersama yang disebut SCHNUM. Dalam hal ini aturannya bisa:

"Layers_field" = attribute (@atlas_feature, 'coverage_layer_field_name')

dalam kasus khusus Anda:

"SCHNUM"  =  attribute( @atlas_feature , 'SCHNUM')

Perhatikan perbedaan antara kedua SCHNUM. Yang pertama, dalam tanda kutip ganda, mewakili nilai setiap fitur lapisan saat ini dari bidang yang menyimpan kode sekolah. Yang kedua, dalam tanda kutip tunggal, adalah string dengan nama lapisan cakupan yang menyimpan kode sekolah.

Catatan : Sekali lagi saya pikir variabel @atlas_feature adalah hal "baru", dan dalam 2.8.x Anda harus menggunakan fungsi $ atlas_feature

masukkan deskripsi gambar di sini

Alexandre Neto
sumber