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

ecotherine
Новоприбывший
Сообщения: 13
Зарегистрирован: 05 июн 2012, 11:25
Репутация: 0

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

Сообщение ecotherine » 16 июн 2012, 21:03

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

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

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

Сообщение rhot » 16 июн 2012, 21:56

в одном случае (NDVI) нужно всё, кроме отрицательных

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

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

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

r.mapcalc expression='output=if(fillvalue_raster=32700,null(),fillvalue_raster)'
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

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

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
Редактор материалов, модератор форума

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

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

Сообщение rhot » 16 июн 2012, 21:59

amuriy, мы по-разному думаем))
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

ecotherine
Новоприбывший
Сообщения: 13
Зарегистрирован: 05 июн 2012, 11:25
Репутация: 0

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

Сообщение ecotherine » 16 июн 2012, 23:12

это можно автоматизировать? у меня 50 файлов

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

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. Спрашивайте, если что не ясно. Или (если это реально) выложите где-то ваши растры, обработаем как надо :)
Редактор материалов, модератор форума

ecotherine
Новоприбывший
Сообщения: 13
Зарегистрирован: 05 июн 2012, 11:25
Репутация: 0

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

Сообщение ecotherine » 17 июн 2012, 01:09

я не умею программировать...
а что делать в mapcalc? можно подробно?
у меня win7.

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

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

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

Сообщение rhot » 17 июн 2012, 08:23

В GRASS 7.0 (фактически доступна с 6.4.2, но советую всё-таки пользоваться самой новой) есть Graphical Modeler, который не требует навыков программирования. Программа работает и с условиями, и с циклами. НО, довольно сырая, хотя я сумел пару моделей в ней построить.
а что делать в mapcalc? можно подробно?
r.mapcalc и есть растровый калькулятор в GRASS. Вот справка
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

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

Сообщение KolesovDmitry » 17 июн 2012, 09:03

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

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

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

Сообщение Александр Мурый » 17 июн 2012, 09:31

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

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

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

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

Сообщение rhot » 17 июн 2012, 09:38

amuriy писал(а):Ок, давайте разберёмся, как создать в "моделлере" цикл?
amuriy, хотите прямо в этой теме разобраться? :)
http://www.youtube.com/watch?v=LFdn1VozMfo
amuriy писал(а):потом с определённого времени стал запускаться пустой шелл.
не понял, как это?
команды там нормально выполняются, только что проверил.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

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

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

Сообщение Александр Мурый » 17 июн 2012, 10:07

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

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

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

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

Сообщение rhot » 17 июн 2012, 10:14

amuriy писал(а):Вся лажа в том, что для всего этого нужно понимать азы программирования
а в чём собственно лажа? Разве щас не учат в общеобразовательной школе азам программирования на BASIC или Pascal на уроках информатики?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

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

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

Сообщение Александр Мурый » 17 июн 2012, 10:19

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

ecotherine
Новоприбывший
Сообщения: 13
Зарегистрирован: 05 июн 2012, 11:25
Репутация: 0

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

Сообщение ecotherine » 17 июн 2012, 18:03

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

Ответить

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

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

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