Автоматично стильовий растр, використовуючи унікальні значення в QGIS?


17

У ArcMap можна автоматично обчислити унікальні значення для растра, а потім застосувати інший стиль до кожного унікального значення (див. Перше зображення).

Однак у QGIS мені доводиться вручну додавати значення для стилізації при використанні стилю "Односмуговий псевдобарв" (див. 2-е зображення). Чи існує спосіб автоматичного заповнення унікальних значень, таких як ArcMap?

ArcMap:

Унікальні значення растрової символіки ArcMap

QGIS (як автоматично заповнити список значень унікальними значеннями?):

QGIS растровий стиль


Ви маєте класифікацію праворуч. Не впевнені, чому ви вирізали це на екрані екрана, оскільки це потрібні вам варіанти ... Просто встановіть кількість класів на вашу максимальну - мінімальну різницю +1. Використовуйте режим однаковий інтервал. Проблема може виникнути, коли ваші дані не є суміжними, тоді вам потрібно видалити не використовувані значення.
Мат

@Matte Дійсно, однак у нас зазвичай є непомітні дані з великими прогалинами. Таким чином, видалити значення фактично не в межах растру (наприклад, єдині значення - 1 і 1000000, вам доведеться вручну видалити багато чисел). Плюс, це передбачає деяке апріорне знання унікальних значень растру ...
Peet Whittaker

Відповіді:


3

Для тих, хто все ще шукає цього. У QGIS 3. були додані унікальні растрові значення ". Додав Nyall Dawson близько 1 року тому

[FEATURE] Дозволити класифікацію палітру-рендерінга за допомогою унікальних значень з растрового шару

Додає простий спосіб стилістичного дискретного растру, наприклад класів землекористування, за допомогою вітрини Paletted. Просто виберіть Палірований рендер, виберіть смугу і натисніть кнопку "Додати унікальні значення". Унікальні значення пікселів будуть витягнуті з шару та кольору, призначеного кожному за допомогою вибраної в даний час кольорової рампи. "


7

Ось підхід, який може бути корисним. Інструмент GRASS r.reportздатний обчислювати базову статистику для кожного унікального значення в растровому шарі:

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

Вихід може бути записаний як звичайний файл txt, виглядаючи так (зліва: унікальні значення, право: область, охоплену кожним значенням):

+-----------------------------------------------------------------------------+
|                      Category Information                        |    square|
|   #|description                                                  |     miles|
|-----------------------------------------------------------------------------|
|1111| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  1.249845|
|1113| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.062666|
[...]
|3412| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.013926|
|4111| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  4.713902|
|4211| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.083555|
|4212| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.135777|
|-----------------------------------------------------------------------------|
|TOTAL                                                             | 17.048727|
+-----------------------------------------------------------------------------+

Наведений нижче сценарій геообробки сприймає цей текстовий файл як вхідний і налаштовує відповідний візуалізатор (з випадковими кольорами для зручності) для шару растру (Натхненний LAWHEAD, J .: QGIS Python Programm Cookbook, стор. 135):

##giswg=group
##thexml=file
##theraster=raster
from random import randint
from PyQt4.QtGui import QColor
from qgis.core import *
myraster = processing.getObject(theraster)
infile = open(thexml, 'r')
univalues = [l.split('|')[1] for l in [f for f in infile.readlines()][4:-4]]
s = QgsRasterShader()
c = QgsColorRampShader()
c.setColorRampType(QgsColorRampShader.EXACT)
i = []
for u in univalues:
    i.append(QgsColorRampShader.ColorRampItem(float(u), QColor('#%06x' % randint(0, 2**24)), u))
c.setColorRampItemList(i)
s.setRasterShaderFunction(c)
ps = QgsSingleBandPseudoColorRenderer(myraster.dataProvider(), 1, s)
myraster.setRenderer(ps)

Завдяки легендарним можливостям обробки QGIS ви можете скласти ці два разом у графічний моделер і додати растровий параметр, щоб просто вибрати завантажений растровий шар:

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

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

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

Отриманий результат виглядає наступним чином (оголення растерізованого набору даних natura2000):

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

Або у властивостях шару:

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

Я думаю, що це потребує певного вдосконалення у користувацькому досвіді, але це перший крок.


1
не найкращий досвід користувача, але дякую за спільний доступ
RutgerH

Зважаючи на те, що ви бачите лише інструмент, створений як інтерфейс користувача, я думаю, що нічого поганого в користувальницькій роботі немає. І хто знає, що відбувається за сценою в інструментах для обробки геометрії ESRI ...
Йохен Шварце,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.