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

Программы и алгоритмы для обработки данных дистанционного зондирования: ERDAS, ENVI и другие.
Ответить
Аватара пользователя
antonv
Активный участник
Сообщения: 229
Зарегистрирован: 29 ноя 2016, 10:44
Репутация: 114
Откуда: Санкт-Петербург

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

Сообщение antonv » 23 янв 2017, 13:00

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

bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Репутация: 236
Откуда: Ханты-Мансийск
Контактная информация:

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

Сообщение bolotoved » 23 янв 2017, 17:59

Быстрее всего сделать это в GRASS используя модуль r.stats

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

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

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

gamm
Гуру
Сообщения: 4046
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm » 23 янв 2017, 20:08

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

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

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

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

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

Сообщение Александр Мурый » 25 янв 2017, 15:32

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

Аватара пользователя
antonv
Активный участник
Сообщения: 229
Зарегистрирован: 29 ноя 2016, 10:44
Репутация: 114
Откуда: Санкт-Петербург

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

Сообщение antonv » 10 фев 2017, 01:13

Спасибо за ответы! Через QGIS удобнее всего получается.

Ответить

Вернуться в «Обработка ДДЗ»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей