Як символізувати ознаки зі значеннями NULL в градуйованій симвології?


15

У мене є набір даних багатокутника та атрибут з іншої таблиці, до якої я приєднуюся (один на один) в рамках QGIS, щоб символізувати атрибути як карту хороплетів. Однак не всі полігонові поля мають відповідне поле в таблиці числових атрибутів, тому при створенні градуйованої символіки є деякі нульові значення.

З мого дослідження, найпоширеніша порада в цій ситуації полягає в тому, щоб включити копію набору даних полігону (або якусь іншу інформацію), яка визначає символіку за замовчуванням. Це працює, тому що нульові значення не класифікуються в градуйованій символіці, тож їх можна побачити "під ними". Я додав зображення саме цього. Темно-сірі функції не існують у таблиці з'єднання ( mb_percentile_isochrones_all), але існують у таблиці граничних полігонів ( mb2013_wgtn). Тому мені потрібні два екземпляри mb2013_wgtnтаблиці, щоб показати функції "без даних".

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

Однак це мені не здається елегантним. Набагато інтуїтивніше було б визначити символ нульового значення. Можливо, це може бути абсолютно прозорим, щоб відповідати тому, що існує зараз, або, можливо, це буде якийсь приглушений сірий колір - все, що хоче користувач. Справа в тому, що в даний час потрібен два різні шари у вмісті, щоб обробити символіку нульових значень. Це означає, що одночасно змінити символіку всіх ваших рис (скажімо, якщо ви хочете збільшити ширину всіх меж), з цим потрібно обробитись двічі: один раз у властивостях функції з градуйованою символікою, і один раз для шару "фон", який обробляє нульовий символ.

Чи можна визначити символ "null" без використання "копії" того ж шару, що використовується для градуйованої символіки, у QGIS (2.6.1)?


Що поганого в тому, щоб мати один і той же шар двічі з різною символікою? Можливо, використовуйте фільтрування атрибутів, щоб полігон не з’являвся в обох шарах, якщо у вас виникають плутанини в ідентифікації чи геообробці. Чи є незрівнянні функції 'null' у їхньому об'єднаному значенні чи вони мають значення, яке не відображається в таблиці?
Майкл Стімсон

1
1. Проблема: якщо я хочу керувати загальними властивостями ознак зі значенням і з нулем (наприклад, кольором межі), це буде виконано двічі. Це набагато простіше забути змінити одну з них або зробити невелику помилку (наприклад, неправильний відтінок сірого для контуру). 2. Немає проблем щодо плутанини з приводу геопроцедури, лише з символікою: я хочу символізувати nullфункцію в одному шарі. 3. Незрівнянні функції знаходяться nullу своїй вартості приєднання (як видно з таблиці атрибутів QGIS після приєднання).
alphabetasoup

Це також ускладнює створення легенди зразка "без даних", оскільки цей символ походитиме з іншого шару.
alphabetasoup

2
Ти маєш рацію. У діалоговому вікні градуйованого символу ніде не можна вибрати "показати такі функції NULL", рядки зі значеннями NULL просто не відображаються.
Майкл Стимсон

Відповіді:


17

Як вже згадував @ MichaelMiles-Stimson, схоже, не існує способу символізувати функції NULL . Однак існує альтернатива, за допомогою якої ви створюєте фільтр, щоб змусити QGIS трактувати значення NULL як ціле число, таке як 0. Я включив приклад, коли я створив 3 простих багатокутника з кожним із певним значенням:

3 багатокутники

Таблиця атрибутів

Ось градуйована символіка, яку я використав із такою командою:

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

Закінчила символіку

Сподіваюся, це допомагає!


Це дуже корисно, і я, мабуть, застосую це на практиці. Проблема, яку я передбачаю, полягає в тому, що 0 є значущим значенням у моєму наборі даних. Я, мабуть, міг би використовувати -1 або щось таке. Але в будь-якому випадку це зробить автоматичну ідентифікацію перерв у класі трохи непростими. Можливо, я повинен подати запит на функцію для цього, враховуючи, що тепер зрозуміло, що обхідні шляхи є менш ідеальними.
alphabetasoup

Так, включення NULLзначень може бути дуже корисним. Це не дуже вирішення, але ви завжди можете надіслати запит на функцію та сподіваємось, що він стане доступним у наступній версії :)
Йосип

6

Я знаю, що на нього відповіли, але просто щоб дати інший варіант:

Ви можете просто залишити поле без фільтра або значення (я знаю, що це працює для КАТЕГОРІЗОВАНОГО або ПРАВИЛЬНОГО)

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

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

Я використовую QGIS 2.10, і він працює.


Завжди приємно знати більше методів вирішення або вирішення проблеми! +1
Йосип

1
Заохочуючи побачити це покращення з 2.6, так? Чи можете ви підтвердити, що він працює, коли нульові значення надходять із об'єднаної таблиці?
alphabetasoup

1
Кілька приміток до цього, хоча. Порожня або NULL символогія в символіці, заснованій на правилах, буде застосована до ВСІХ функцій. Правила застосовуються зверху вниз, тому воно може бути накладене іншим правилом, але NULL також буде там. Важливо, якщо це сильна символіка. Ви також можете "генерувати" свої правила, спершу створивши їх у
категоризованій

@Vesanto, я не знаю, чи отримав я це, чи це проблема. У моєму випадку я додаю значення Z до ТЕЦ, виготовлених з контурних ліній, які спочатку не мали значення Z (Z = NULL). Я встановив функції з значеннями NULL червоним, а функції з будь-яким значенням - чорним. Під час редагування, як тільки я встановлюю значення Z, функція (лінія контуру) перетворюється з червоного на чорний, таким чином я знаю ті, які мені ще потрібно встановити значення Z.
Маркос Сайто

@Marcos це не буде проблемою у вашому випадку. Але давайте скажемо, що для початку лінія була червоною, і ви хотіли перетворити її невидимою, якби вона більше не була нульовою. Це б не спрацювало.
HeikkiVesanto

4

Як і в інших користувачів, найкращим варіантом є використання символів на основі правил. Щоб не створювати правила вручну:

  1. Змініть тип символу на Градуйований .
  2. Визначте стовпчик символів, кольори, інтервали тощо, як зазвичай Градуйовані символи з нульовими значеннями не показані
  3. Змініть тип символу з " Градуйований" на " Правило" . Символи, визначені на попередньому кроці, будуть перенесені. Клацніть кнопку Додати символ і виберіть ELSE . Змініть стиль відповідно. Цей клас символів ELSE буде фіксувати будь-які значення, які вже не були символізовані, включаючи нульові значення. Додавання символу ELSE all-catch
  4. Натисніть кнопку ОК. Нульові значення тепер будуть символізуватися. Градуйовані символи, включаючи нульові значення

(Випробувано в QGIS 3.6.0)


простий і корисний. Спасибі. Я б припустив, що QGIS повинен мати опцію виключення значень для градуйованої класифікації. Я зіткнувся з деякою плутаниною, намагаючись класифікувати значення вузлів, позначені як -1, -999 ... тощо (використовуючи QGIS 3.14 LTR). На щастя, QGIS автоматично ігнорує нульові значення принаймні при виконанні градуйованої символіки.
Іван Сантьяго
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.