Особливості фільтрації в інших шарах QGIS Atlas?


22

Я намагаюся використовувати інструменти QGIS Atlas для побудови студентських "розсіювальних карт", тобто. відобразити школу та учнів, які відвідують цю школу, для 215 шкіл.

SCHNUMШкільний шар - це рівень покриття, який визначається значенням (номер школи). Це працює чудово, тобто правильно вести сторінки.

Яким чином я можу відображати лише функції з інших шарів, в даному випадку шару точок студента, які відповідають відповідним SCHNUM величині поточної функції в шарі покриття?

Я також хотів би переключити шар покриття (школи) на "прихований" і використовувати ту саму техніку, щоб лише відображати поточну школу з дублікату шкільного рівня.

Тут доступна презентація, яка натякає на використання налаштування правил надання шару за допомогою$atlasfeatureid , але я не можу зрозуміти, як це працює.

Я також знайшов цю сторінку відстеження помилок, яка показує, що це працює, але знову ж таки, я не можу змусити її працювати над моїми даними:


Вибачте, що опублікували це як відповідь, навіть якщо це питання. Чи є якийсь рекомендований відеоурок для цього? Я намагався слідувати за собою і якось завжди вдавався загубитися в якийсь момент. З тією ж проблемою.
JRamos

Відповіді:


41

Дійсно, для досягнення того, що ви хочете, потрібно використовувати на основі правил символіку.

Потрібно створити правило для того, що ви хочете показати, і правило ELSE для всіх інших.

введіть тут опис зображення

У праві ELSE зніміть прапорець із символом, щоб зробити його невидимим.

введіть тут опис зображення

Сховати інші особливості від шару покриття

Правилом показу лише поточної функції атласу може бути таке:

$id  =  @atlas_featureid 

введіть тут опис зображення

Примітка . Я вважаю, що змінна @atlas_featureid є синтаксисом 2,12. Я думаю, що в 2.8.x вам потрібно буде використовувати функцію під назвою $ atlas_featureid.

Сховати функції за межами поточної функції атласу

Рецепт такий же, як і раніше, ще одне правило приховувати функції, одне - показати.

Для вашого конкретного питання у вас, схоже, є спільний атрибут під назвою SCHNUM. У такому випадку правилом може бути:

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

у вашому конкретному випадку:

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

Зауважте різницю між обома SCHNUM. Перший, у подвійних лапках, представляє значення кожного поточного рівня шару поля, яке зберігає шкільний код. Другий, в одиничних лапках, - це рядок із назвою шару покриття, який зберігає шкільний код.

Примітка . Знову я думаю, що змінна @atlas_feature - це "нова" річ, і в 2.8.x вам потрібно буде використовувати функцію $ atlas_feature

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.