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

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

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

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

Да, команда "r.mask -r" удаляет текущую растровую маску.
Если после <r.null> что-то идёт не так, рекомендую импортировать растры заново и повторить цикл (я не зря говорил выше про работу с копиями).
Редактор материалов, модератор форума

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

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

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

Screen.jpg
Screen.jpg (103.83 КБ) 5342 просмотра
Вот, вроде все прошло гладко, бахромы нет. Как можно еще проверить то ли получилось, что нужно?

И еще вопрос: если мне понадобится заново импортировать растр и я просто удалю то, что мне ненужно из списка отображаемых, значит ли это, что он вообще удалится из набора, или просто не будет отображаться в данном рабочем пространстве?

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

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

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

kclo писал(а):Как можно еще проверить то ли получилось, что нужно?
После всех операций у вас просто создана маска, которая отсекает "бахрому" и null-значения в отображаемом на экране растре. Чтобы получить новый "очищенный" растр, нужно выполнить:

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

r.mapcalc 'LT51700271987166XXX02_B3.clean = LT51700271987166XXX02_B3'
После этого маску можно будет выключить (r.mask -r), а при необходимости включать потом снова.
kclo писал(а): И еще вопрос: если мне понадобится заново импортировать растр и я просто удалю то, что мне ненужно из списка отображаемых, значит ли это, что он вообще удалится из набора, или просто не будет отображаться в данном рабочем пространстве?
Удаление из списка слоёв не влияет на состояние самих данных в наборе. Чтобы удалить из набора, используйте <g.remove> или <g.mremove>. Если при импорте у вас будет активна опция "перезаписать данные", то растр будет перезаписан.

Окончательно убедиться, что получилось "как надо", можно только сделав по растру диаграммы в Матлабе.
Редактор материалов, модератор форума

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

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

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

Спасибо Вам огромное за помощь!

Просто камень с плеч! :)

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

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

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

Если вам надо обрабатывать таким образом много сцен со всеми каналами, то это надо будет автоматизировать скриптом на Питоне. Как именно это делается, давайте разбираться отдельно. Или можно вместо этого сочинить модель в wxGUI.Modeler.
Редактор материалов, модератор форума

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

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

Сообщение kclo » 02 апр 2015, 12:42

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

Думаю, скрипт был бы очень кстати тут. Буду очень благодарна, если поможете с этим.

Прямо сейчас мне требуется всего 2 сцены по 6 каналов, но недели через 2 нужны будут и другие, и немало.

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

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

Сообщение kclo » 08 апр 2015, 16:54

Хочу добавить еще тут один момент, возможно очевидный для знатоков, но ставший для меня сюрпризом. Может, кому тоже такой опыт пригодится:
При попытке экспортировать файл в формат .hdf все удаленные Null откуда-то взялись обратно, а вот если экспортировать в .tif, то все ОК

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

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

Сообщение kclo » 23 апр 2015, 17:18

Здравствуйте!
Попыталась сделать то же самое в Грасс 7, но возникла проблема. Седьмому Грассу не нравится "in" . Как только доходит до этой операции, все заканчивается.
что-то поменялось, но что написать вместо этого, не пойму.

Рылась в мануалах на сайте - что-то не нашла, как решить проблему :(
Кто-нибудь знает?

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

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

Сообщение kclo » 23 апр 2015, 17:21

Александр Мурый писал(а):Попробуйте такую последовательность команд (здесь "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
4я строчка

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

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

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

Если верить мануалу, надо заменить "in" на "raster".
Редактор материалов, модератор форума

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

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

Сообщение kclo » 24 апр 2015, 09:58

Да, все получилось! спасибо!

Ответить

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

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

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