Страница 1 из 1

Анализ соответствия двух растров (диаграмма рассеяния)

Добавлено: 23 янв 2017, 13:00
antonv
Случился у меня следующий геоинформационный "затык":
имеются два растра. Оба представляют собой классификации (т.е. ячейки содержат не количественные значения, а номера классов): первый растр - классификация растительности, второй - классификация форм рельефа. Задача стоит получить статистику следующего вида: сколько и каких пикселей растительности содержится в разных формах рельефа.
Первое, что пришло в голову - применить инструмент scatterplot в SAGA и конвертировать результат из "картинки" (графика) в табличку, где сопоставлены попиксельно два растра. Далее табличку можно было бы вставить в эксель, и там уже делать с ней что угодно. Но вот проблема - табличка содержит гораздо меньше значений, чем пикселей в растрах. При построении Scatterplot можно указывать параметр sample number - я выставляю число, заведомо большее количества пикселей, но число строк в таблице остается неизменным (18025 - я даже решил, что это какое-то магическое число для SAGA).
Ладно, второй вариант, вроде подходящий - конвертируем, например, второй растр в полигоны и далее применяем инструмент Зональной статистики в QGIS. Но этот инструмент может посчитать либо количество всех пикселей, входящих в полигоны (а нужно ведь "разложить" по классам), либо посчитать сумму всех значений, что тоже вроде не подходит.
Есть, конечно, вариант решения "в лоб" - сохранить оба растра в *.asc, открыть в блокноте, сделать так, что все значения пикселей были перечислены в один столбец, скопировать столбцы обоих растров в эксель и далее уже анализировать.
Но мне кажется, я что-то упускаю. Есть ведь какой-то подходящий для решения этой задачи инструмент, но какой?

Re: Анализ соответствия двух растров (диаграмма рассеяния)

Добавлено: 23 янв 2017, 17:59
bolotoved
Быстрее всего сделать это в GRASS используя модуль r.stats

Создать проект GRASS, загрузить туда оба растра, потом выполнить команду:

Код: Выделить всё

r.stats -cn input=relief_raster,vegetation_raster separator=space null_value=* > путь к файлу/statistics.txt
Флаги (можете другие выбрать, например в процентах выразить):
c - выразить результат в количестве пикселей
n - не включать в отчет статистику по классу "нет данных"

Re: Анализ соответствия двух растров (диаграмма рассеяния)

Добавлено: 23 янв 2017, 20:08
gamm
antonv писал(а):Есть, конечно, вариант решения "в лоб" - сохранить оба растра в *.asc
загрузите оба растра в R, и если они одинаковые, просто сделате table()

Код: Выделить всё

library(raster)
r1<-raster(filename1)
r2<-raster(filename2)
table(r1[],r2[])

Re: Анализ соответствия двух растров (диаграмма рассеяния)

Добавлено: 25 янв 2017, 15:32
Александр Мурый
bolotoved писал(а):Быстрее всего сделать это в GRASS используя модуль r.stats
Можно только добавить, что модуль <r.stats> доступен и в QGIS через "Анализ данных" (Processing).

Re: Анализ соответствия двух растров (диаграмма рассеяния)

Добавлено: 10 фев 2017, 01:13
antonv
Спасибо за ответы! Через QGIS удобнее всего получается.