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

исключение отрицательных и fillvalue значений в расчетах

Добавлено: 16 июн 2012, 21:03
ecotherine
в GRASS считаю статистику, но не знаю, как убрать эти всё портящие значения! в одном случае (NDVI) нужно всё, кроме отрицательных, в другом - исключить fillvalue, равные 32700.
пожалуйста, подскажите! времени совсем нет...

Re: исключение отрицательных и fillvalue значений в расчетах

Добавлено: 16 июн 2012, 21:56
rhot
в одном случае (NDVI) нужно всё, кроме отрицательных

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

r.mapcalc expression='output=if(ndvi>=0,ndvi,null())'
в другом - исключить fillvalue, равные 32700

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

r.mapcalc expression='output=if(fillvalue_raster=32700,null(),fillvalue_raster)'

Re: исключение отрицательных и fillvalue значений в расчетах

Добавлено: 16 июн 2012, 21:57
Александр Мурый
Вы используете GRASS Tools в QGIS, так?
-- Для первой задачи вам нужен растровый калькулятор (в GRASS это модуль r.mapcalc). Пример команды для получения только положительных значений растра (так это выглядит в "чистой" GRASS, без QGIS):

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

r.mapcalc 'ndvi_pos = if(ndvi>0,ndvi,null())'
-- Чтобы "исключить fillvalue, равные 32700", используйте модуль r.null:

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

r.null ndvi setnull=32700

Re: исключение отрицательных и fillvalue значений в расчетах

Добавлено: 16 июн 2012, 21:59
rhot
amuriy, мы по-разному думаем))

Re: исключение отрицательных и fillvalue значений в расчетах

Добавлено: 16 июн 2012, 23:12
ecotherine
это можно автоматизировать? у меня 50 файлов

Re: исключение отрицательных и fillvalue значений в расчетах

Добавлено: 16 июн 2012, 23:37
Александр Мурый
ecotherine писал(а):это можно автоматизировать?
Можно, через цикл на каком-либо скриптовом языке (shell, Python, Perl, PHP).
Я, например, использую юниксовый shell (скрипты командной оболочки). Если у вас Windows, напишите bat-файл с циклом наподобие этого (этот на shell):

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

for RAST in $(g.mlist rast pat=ndvi_*); do
r.mapcalc "${RAST}_pos = if($RAST>0,$RAST,null())"
r.null $RAST setnull=32700
done

Но: всё это надо делать в "чистой" GRASS, а не через "GRASS Tools" в QGIS.

P.S. Спрашивайте, если что не ясно. Или (если это реально) выложите где-то ваши растры, обработаем как надо :)

Re: исключение отрицательных и fillvalue значений в расчетах

Добавлено: 17 июн 2012, 01:09
ecotherine
я не умею программировать...
а что делать в mapcalc? можно подробно?
у меня win7.

[ Сообщение с мобильного устройства ]

Re: исключение отрицательных и fillvalue значений в расчетах

Добавлено: 17 июн 2012, 08:23
rhot
В GRASS 7.0 (фактически доступна с 6.4.2, но советую всё-таки пользоваться самой новой) есть Graphical Modeler, который не требует навыков программирования. Программа работает и с условиями, и с циклами. НО, довольно сырая, хотя я сумел пару моделей в ней построить.
а что делать в mapcalc? можно подробно?
r.mapcalc и есть растровый калькулятор в GRASS. Вот справка

Re: исключение отрицательных и fillvalue значений в расчетах

Добавлено: 17 июн 2012, 09:03
KolesovDmitry
amuriy писал(а): Но: всё это надо делать в "чистой" GRASS, а не через "GRASS Tools" в QGIS.
Почему? Вроде же в GRASS Tools была консоль, в которой можно было работать под bash... по крайней мере пару лет назад я ее видел.

Re: исключение отрицательных и fillvalue значений в расчетах

Добавлено: 17 июн 2012, 09:31
Александр Мурый
KolesovDmitry писал(а):Вроде же в GRASS Tools была консоль, в которой можно было работать под bash... по крайней мере пару лет назад я ее видел.
Я тоже когда-то видел, что там в шелле запускается GRASS, потом с определённого времени стал запускаться пустой шелл.
rhot писал(а): Graphical Modeler, который не требует навыков программирования. Программа работает и с условиями, и с циклами.

Ок, давайте разберёмся, как создать в "моделлере" цикл?

Re: исключение отрицательных и fillvalue значений в расчетах

Добавлено: 17 июн 2012, 09:38
rhot
amuriy писал(а):Ок, давайте разберёмся, как создать в "моделлере" цикл?
amuriy, хотите прямо в этой теме разобраться? :)
http://www.youtube.com/watch?v=LFdn1VozMfo
amuriy писал(а):потом с определённого времени стал запускаться пустой шелл.
не понял, как это?
команды там нормально выполняются, только что проверил.

Re: исключение отрицательных и fillvalue значений в расчетах

Добавлено: 17 июн 2012, 10:07
Александр Мурый
rhot писал(а):хотите прямо в этой теме разобраться? :)
http://www.youtube.com/watch?v=LFdn1VozMfo
Ну велкам ту зе отдельная тема, коли тут негоже :)
Посмотрел захватывающий ролик. Вся лажа в том, что для всего этого нужно понимать азы программирования (цикл -- он и в граф. моделлере цикл), ну и неплохо знать грассовские модули..

В итоге я бы рекомендовал топикстартеру установить GRASS как описано здесь и в OSGeo4W Shell пройтись циклом (который ещё надо сочинить в досовском CMD) по нужным растрам (для выборок с условиями есть спец. модуль g.mlist).
Напишите, что ли, примеры названий ваших растров..

Re: исключение отрицательных и fillvalue значений в расчетах

Добавлено: 17 июн 2012, 10:14
rhot
amuriy писал(а):Вся лажа в том, что для всего этого нужно понимать азы программирования
а в чём собственно лажа? Разве щас не учат в общеобразовательной школе азам программирования на BASIC или Pascal на уроках информатики?

Re: исключение отрицательных и fillvalue значений в расчетах

Добавлено: 17 июн 2012, 10:19
Александр Мурый
rhot писал(а):не понял, как это?
команды там нормально выполняются, только что проверил.
Значит, это я один такой везучий :)
Может быть, проблема в версиях GRASS. В "тулзах" используется древняя уже 6.4.0RC, которая как его зависимость ставится в систему. Я мог просто потереть старую грасс, т.к. пользуюсь самосборной, вот шелл из GRASS Tools и не запускается как надо... Влезать глубоко не хочется, т.к. я не пользуюсь сиим чудом природы.
rhot писал(а):а в чём собственно лажа? Разве щас не учат в общеобразовательной школе азам программирования на BASIC или Pascal на уроках информатики?
Не здесь же дискутировать, кого и как учили.. 8) Может, кого и учат..

Re: исключение отрицательных и fillvalue значений в расчетах

Добавлено: 17 июн 2012, 18:03
ecotherine
rhot писал(а):В итоге я бы рекомендовал топикстартеру установить GRASS как описано здесь и в OSGeo4W Shell пройтись циклом (который ещё надо сочинить в досовском CMD) по нужным растрам (для выборок с условиями есть спец. модуль g.mlist).
Напишите, что ли, примеры названий ваших растров..
спасибо! попробую установить.
имена файлов: MOD13A3.A2001274.h21v04.005.2007109185753_MOD_Grid_monthly_1km_VI
сконвертированы в multy-band geotiff.
если я запущу GRASS на компе,где нет кугиса, все это возможно? повторюсь,я вообще не умею программировать. сколько времени может занять процесс создания условий для такого пересчета растров?