Возможно растр использовать как маску?

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
_taras_
Активный участник
Сообщения: 186
Зарегистрирован: 28 июл 2018, 08:40
Репутация: 12
Откуда: Киев

Возможно растр использовать как маску?

Сообщение _taras_ » 26 июл 2019, 12:50

Необходимо выявить изменения, которые произошли в течение года
В качестве точки отчета используется выделенное отдельно территория (зеркало воды водохранилища весной). Оно сделано.
Теперь из других снимков нужно вырезать для анализа эту территорию. Векторизовать вручную не вариант, т.к. много островов и мелких водотоков. А автоматическая векторизация дает много ошибок.Пример на рисунке.
Какие есть варианты?
Вложения
Снимок экрана.png
Снимок экрана.png (109.55 КБ) 9456 просмотров

nikost
Активный участник
Сообщения: 107
Зарегистрирован: 16 июл 2015, 15:21
Репутация: 35
Откуда: Санкт-Петербург

Re: Возможно растр использовать как маску?

Сообщение nikost » 26 июл 2019, 13:04

grass r.mask.rast

_taras_
Активный участник
Сообщения: 186
Зарегистрирован: 28 июл 2018, 08:40
Репутация: 12
Откуда: Киев

Re: Возможно растр использовать как маску?

Сообщение _taras_ » 26 июл 2019, 13:51

Спасибо за ответ!
Но у меня обрезка выполняется не корректно с ошибкой

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

r.external завершен. Link to raster map <rast_5d3adae31e1dc19> created.
ОШИБКА: The raster map <rast_5d3adae31e13218> must be integer (CELL type) in order to use the 'maskcats' parameter
Checking GDAL data type and nodata value...
2..5..8..11..14..17..20..23..26..29..32..35..38..41..44..47..50..53..56..59..62..65..68..71..74..77..80..83..86..89..92..95..98..100
Using GDAL data type <Float32>
Input raster map contains cells with NULL-value (no-data). The value -nan will be used to represent no-data values in the input map. You can specify a nodata value with the nodata option.
Exporting raster data to GTiff format...
ERROR 6: SetColorTable() only supported for Byte or UInt16 bands in TIFF format.

Аватара пользователя
oldbay
Участник
Сообщения: 53
Зарегистрирован: 14 июл 2015, 11:46
Репутация: 19
Откуда: Санкт-Петербург
Контактная информация:

Re: Возможно растр использовать как маску?

Сообщение oldbay » 26 июл 2019, 15:21

_taras_ писал(а):
26 июл 2019, 12:50
А автоматическая векторизация дает много ошибок.Пример на рисунке.
Отслеживать изменения береговой линии при помощи растра малоэффективно, я бы попытался векторизовать.
Скажем, использовал водный индекс NDWI для более чёткого выделения воды на снимке. Потом перевёл бы его по определённому пороговому значению в битмап. Полученный растр уже векторизовал, при необходимости произведя определённую предварительную обработку - если много будет на нём "мусора".
Причём подобную схему уже использовал для Волго-Ахтубинской поймы.

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

Re: Возможно растр использовать как маску?

Сообщение gamm » 26 июл 2019, 17:23

_taras_ писал(а):
26 июл 2019, 12:50
А автоматическая векторизация дает много ошибок.
а зачем вообще векторизовать? Анализируйте в растре, и будем вас щастье. И вообще, для отслеживания изменений были придуманы алгоритмы change detection, например MAD.

Nielsen, A. A. (1996). Change detection in multispectral, bi-temporal spatial data using othogonal transformations. Proceedings of the 8th Australien Remote Sensing Conference, Canberra, Australia, March.

Nielsen, A. A. and Conradsen, K. (1997). Multivariate alteration detection (mad) in multispectral, bi-temporal data: A new approach to change detection studies. Technical Report IMM-REP-1997.Technical University of Denmark Lyngby, 11.

_taras_
Активный участник
Сообщения: 186
Зарегистрирован: 28 июл 2018, 08:40
Репутация: 12
Откуда: Киев

Re: Возможно растр использовать как маску?

Сообщение _taras_ » 26 июл 2019, 18:48

Спасибо ответившим!
Анализируйте в растре, и будем вас щастье. И вообще, для отслеживания изменений были придуманы алгоритмы change detection, например MAD.
Так я и спрашиваю порядок действий или штатными возможностями программы или плагином. И еще. Т.к. новичок, возможно пропускаю какие-то тривиальные шаги.
Вдогонку. Мне затем нужно будет вытащить значения NDVI, разбить по интервалам и дать основную статистику.

MBG
Активный участник
Сообщения: 123
Зарегистрирован: 02 июн 2012, 12:02
Репутация: 35

Re: Возможно растр использовать как маску?

Сообщение MBG » 27 июл 2019, 07:00

Вы пытаетесь сравнивать теплое с мягким. Нужно подобрать алгоритм выделения водной поверхности такой, чтобы получить результат, достаточно близкий к уже имеющемуся (видимо, весной это было сделано вручную?) по старым снимкам (по которым вручную выделяли). Далее этим алгоритмом проанализировать и старый и новый снимки и сравнить результаты. Притом анализировать надо одни и те же каналы снимков одного типа в равном разрешении.

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

Re: Возможно растр использовать как маску?

Сообщение gamm » 27 июл 2019, 08:54

_taras_ писал(а):
26 июл 2019, 18:48
порядок действий или штатными возможностями программы или плагином
у вас принципиально неверная постановка. Нужно идти от задачи, а не от кнопок, вряд ли найдете готовые. Нужно собирать цепочку, и таких цепочек для каждой задачи может быть много. А "выявить изменения" - это ни о чем. Сначала разберитесь, какие изменения и в чем вы собираетесь искать, и как это отражается в спектре. К примеру, MAD ловит "атипичные" изменения спектра, однако, если у вас в водоеме несколько разных экосистем, и они меняются по разному, то изменения маленькой по площади системы будут приняты за "атипичные", хотя для нее они типичны - значит, нужно предварительно разбить территорию по глубинам, по типу растительности, по характеру водообмена, выносу твердых веществ, еще как-то в соответствии с задачами.

Кстати, MAD умеет сравнивать снимки разных приборов ,с разным разрешением, без атмосферной коррекции, и т.д.

Аватара пользователя
gimran
Гуру
Сообщения: 1902
Зарегистрирован: 07 июл 2010, 15:43
Репутация: 242
Откуда: Уфа

Re: Возможно растр использовать как маску?

Сообщение gimran » 27 июл 2019, 23:51

Попробуйте в калькуляторе растров (выбрав один канал) "если значение пикселя больше или равно ..., то 1, а иначе 0", получив слой, состоящий из двух значений, а потом уже векторизуйте результат.
Ну или посчитайте ndvi, а потом его векторизуйте (в крайнем случае - сам ndvi потом переведите в "1 или 0" по совету выше).

Аватара пользователя
gimran
Гуру
Сообщения: 1902
Зарегистрирован: 07 июл 2010, 15:43
Репутация: 242
Откуда: Уфа

Re: Возможно растр использовать как маску?

Сообщение gimran » 27 июл 2019, 23:53

В Вашем случае - для каждого снимка рассчитайте NDVI, а затем рассчитайте dNDVI.
dNDVI=NDVI1-NDVI2
И анализируйте dNDVI - как раз получите различия между разновременными снимками.

_taras_
Активный участник
Сообщения: 186
Зарегистрирован: 28 июл 2018, 08:40
Репутация: 12
Откуда: Киев

Re: Возможно растр использовать как маску?

Сообщение _taras_ » 28 июл 2019, 18:05

Спасибо всем откликнувшимся!
Опишу задачу более детально.
Нужно определить изменения индекса NDVI по сезону и по годам для водохранилища (в последнее время разросся орех водяной и вытесняет другие ценозы).
Использовал снимки спутника Sentinel-2 и сделал для них атмосферную коррекцию.
Я знаю об индексе dNDVI и планировал его использовать. Но мне нужна растительность, находящаяся исключительно внутри зеркала водоема. Точкой отчета (маской) планировал использовать весенние данные как эталон. И в этом у меня затык.

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

Re: Возможно растр использовать как маску?

Сообщение gamm » 28 июл 2019, 20:03

1) NDVI на воде не работает
2) весной поверхностным стоком столько всякого в реку несет, что вы будете сравнивать теплое с кислым.
3) для начала попробуйте классифицировать снимки в пределах водной поверхности, хоть изодатой, и посмотреть, выделяются вообще сообщества или нет. Задайте побольше классов.
4) по поводу маски - проще обнулить все вне пределов воды попиксельно (умножить на пиксельную маску воды), все вне воды улетит в один класс.

Ответить

Вернуться в «QGIS»

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

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