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

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

Добавлено: 30 мар 2015, 10:29
kclo
Здравствуйте!

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

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

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

Добавлено: 30 мар 2015, 14:36
Александр Мурый
Ваc интересует какой-то один канал или надо сделать "маску" по всем каналам сцены?

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

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

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-значения.

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

Добавлено: 30 мар 2015, 16:36
kclo
Спасибо Вам большое!
Буду пробовать.

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

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

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

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

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

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

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

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

Добавлено: 01 апр 2015, 13:52
kclo
Понятно.
Попробовала на MSS снимке, но заткнулась сразу же на первом этапе

g.region rast=landsat_B1

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

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

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

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

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

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

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

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

Интерфейс wxPython.

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

Добавлено: 01 апр 2015, 14:39
kclo
Ура, с другим снимком Грасс что-то сделал, но я теперь не знаю, как посмотреть, что вышло...

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

Добавлено: 01 апр 2015, 14:46
Александр Мурый
Прикрепляйте картинки прямо к сообщению, пож-та (кнопка "Добавить вложения" внизу).

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

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

Добавлено: 01 апр 2015, 14:50
Александр Мурый
Нужна именно такая последовательность:
g.region -> r.null -> r.mapcalc -> r.mask

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

Напишите, как и что получается.

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

Добавлено: 01 апр 2015, 14:56
kclo
ОК, сейчас попробую пошагово.

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