Как в GRASS GIS 6.44 исключить (вырезать) из растра Null?

kclo
Участник
Сообщения: 63
Зарегистрирован: 07 окт 2014, 12:08
Репутация: 2

Как в GRASS GIS 6.44 исключить (вырезать) из растра Null?

Сообщение kclo » 30 мар 2015, 10:29

Здравствуйте!

Подскажите, пожалуйста, как из снимка Landsat удалить все пикселы, для которых нет данных (Null)? в т.ч. и "бахрому"?

Мне нужен исходный снимок (DN) и TOA reflectance, в котором нет незначащих пикселов

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

Re: Как в GRASS GIS 6.44 исключить (вырезать) из растра Null

Сообщение Александр Мурый » 30 мар 2015, 14:36

Ваc интересует какой-то один канал или надо сделать "маску" по всем каналам сцены?
Редактор материалов, модератор форума

kclo
Участник
Сообщения: 63
Зарегистрирован: 07 окт 2014, 12:08
Репутация: 2

Re: Как в GRASS GIS 6.44 исключить (вырезать) из растра Null

Сообщение kclo » 30 мар 2015, 14:42

Мне нужно получить для каждого канала видимого и ИК диапазона. Чтобы Null можно было исключить из статистической обработки (строим диаграммы рассеяния)

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

Re: Как в GRASS GIS 6.44 исключить (вырезать) из растра Null

Сообщение Александр Мурый » 30 мар 2015, 16:00

Попробуйте такую последовательность команд (здесь "landsat_B1" - условный растр для примера):

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

g.region rast=landsat_B1
r.null landsat_B1 setnull=0
r.mapcalc "landsat_B1.mask = if(isnull(landsat_B1))"
r.mask in=landsat_B1.mask maskcats=0
После этих действий будет активирована растровая маска для растра "landsat_B1", которая отсечёт "бахрому" и null-значения.
Редактор материалов, модератор форума

kclo
Участник
Сообщения: 63
Зарегистрирован: 07 окт 2014, 12:08
Репутация: 2

Re: Как в GRASS GIS 6.44 исключить (вырезать) из растра Null

Сообщение kclo » 30 мар 2015, 16:36

Спасибо Вам большое!
Буду пробовать.

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

Re: Как в GRASS GIS 6.44 исключить (вырезать) из растра Null

Сообщение Александр Мурый » 30 мар 2015, 16:40

О результатах пишите :) Подойдёт вам этот способ или нет, зависит ещё от того, как вы дальше используете эти растры (как и в чём строите диаграммы рассеяния). И ещё совет: экспериментируйте лучше на копиях данных.
Редактор материалов, модератор форума

kclo
Участник
Сообщения: 63
Зарегистрирован: 07 окт 2014, 12:08
Репутация: 2

Re: Как в GRASS GIS 6.44 исключить (вырезать) из растра Null

Сообщение kclo » 31 мар 2015, 13:47

Здравствуйте!
Как только будет что писать, обязательно напишу.
Вчера пришлось резко отвлечься на срочную работу :(

Диаграммы делаем с коллегой в матлабе.
А почему экспериментировать лучше на копиях? Ведь исходный растр же Грасс не испортит?

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

Re: Как в GRASS GIS 6.44 исключить (вырезать) из растра Null

Сообщение Александр Мурый » 31 мар 2015, 15:55

kclo писал(а): А почему экспериментировать лучше на копиях? Ведь исходный растр же Грасс не испортит?
Потому что модуль <r.null> действует весьма своеобразно, и восстановить исходный растр с неизменёнными null-значениями бывает проблематично (или я просто чего-то не понимаю). Так что экспериментировать всё-таки лучше на копиях.
Редактор материалов, модератор форума

kclo
Участник
Сообщения: 63
Зарегистрирован: 07 окт 2014, 12:08
Репутация: 2

Re: Как в GRASS GIS 6.44 исключить (вырезать) из растра Null

Сообщение kclo » 01 апр 2015, 13:52

Понятно.
Попробовала на MSS снимке, но заткнулась сразу же на первом этапе

g.region rast=landsat_B1

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

снимок у меня с ID LM21850261979121XXX01
Соответственно, вбиваю LM21850261979121XXX01_B4 например.
Нужно как-то иначе?

Попробовала также обойтись способом "дрессированного кнопконажимателя" в GUI интерфейсе в меню "управление значениями Null" (тот же r.null) Открыла в меню вкладку Remove и поставила галку в окне "Удалить растрового файла битмэп с Null-значениями" (Впрочем, сильно тревожась, правильно ли я понимаю эту убойную смесь русского и английского).

После запуска модуля произошло следующее:
Мне написали, что растр был изменен и операция завершена за 0 секунд. Впрочем, изменений я не увидела. По-крайней мере, "бахрома" осталась на месте.
Растр одного из каналов вообще перестал отрисовываться.

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

Re: Как в GRASS GIS 6.44 исключить (вырезать) из растра Null

Сообщение Александр Мурый » 01 апр 2015, 14:23

Давайте разбираться с самого начала.
Как у вас установлена GRASS - отдельный установщик, через OSGeo4W, или вместе с QGIS?
Какой интерфейс вы запускаете - wxPython? Для начала вам надо перейти на англ. интерфейс (посмотрите в меню в настройках).
Редактор материалов, модератор форума

kclo
Участник
Сообщения: 63
Зарегистрирован: 07 окт 2014, 12:08
Репутация: 2

Re: Как в GRASS GIS 6.44 исключить (вырезать) из растра Null

Сообщение kclo » 01 апр 2015, 14:35

Спасибо, посмотрю. С русским интерфейсом тяжко.
Для установки Грасс использовала стандартный установщик Win7

Интерфейс wxPython.

kclo
Участник
Сообщения: 63
Зарегистрирован: 07 окт 2014, 12:08
Репутация: 2

Re: Как в GRASS GIS 6.44 исключить (вырезать) из растра Null

Сообщение kclo » 01 апр 2015, 14:39

Ура, с другим снимком Грасс что-то сделал, но я теперь не знаю, как посмотреть, что вышло...
Вложения
Doc14.doc
(278.5 КБ) 452 скачивания

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

Re: Как в GRASS GIS 6.44 исключить (вырезать) из растра Null

Сообщение Александр Мурый » 01 апр 2015, 14:46

Прикрепляйте картинки прямо к сообщению, пож-та (кнопка "Добавить вложения" внизу).

Предлагаю обойтись без командной строки, а запускать по очереди нужные модули. Я не увидел, чтобы использовались модули <g.region>, а потом <r.null>, а в данном случае это принципиально важно.
Редактор материалов, модератор форума

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

Re: Как в GRASS GIS 6.44 исключить (вырезать) из растра Null

Сообщение Александр Мурый » 01 апр 2015, 14:50

Нужна именно такая последовательность:
g.region -> r.null -> r.mapcalc -> r.mask

В <r.null> надо указывать ваш растр, а не "landsat_B1".

Напишите, как и что получается.
Редактор материалов, модератор форума

kclo
Участник
Сообщения: 63
Зарегистрирован: 07 окт 2014, 12:08
Репутация: 2

Re: Как в GRASS GIS 6.44 исключить (вырезать) из растра Null

Сообщение kclo » 01 апр 2015, 14:56

ОК, сейчас попробую пошагово.

В <r.null> я указываю свой растр, естественно . Например, LT51700271987166XXX02_B4. Так ведь нужно?
Александр Мурый писал(а): Потому что модуль <r.null> действует весьма своеобразно, и восстановить исходный растр с неизменёнными null-значениями бывает проблематично (или я просто чего-то не понимаю). Так что экспериментировать всё-таки лучше на копиях.
А интересно, не поможет ли восстановить исходный растр команда
r.mask -r ?
Как я понимаю, созданные при работе модулей маски в одном "цикле", могут мешать дальнейшей работе и, соответственно, до исходного растра будет трудно добраться

Ответить

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

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

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