Скрипты Grass применительно к Landsat

kryl
Завсегдатай
Сообщения: 324
Зарегистрирован: 14 фев 2010, 20:42
Репутация: 0

Скрипты Grass применительно к Landsat

Сообщение kryl » 17 фев 2011, 00:09

На странице GRASS wiki про landsat http://grass.osgeo.org/wiki/LANDSAT очень хорошо описано как его обрабатывать. Но как у человека в Grass и Linux нового у меня возникает много вопросов.
1. Я создал import.py, положил в директорию с landsat, он оттуда заработал, только у меня сомнение возникло: может его для порядку надо в какую-нибудь специальную дирикторию положить чтобы можно было из любой папки вызывать?
2. Дальше идет скрипт для переименования каналов

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

BASE=L71074092_09220040924
 
for BAND in 10 20 30 40 50 61 70 80; do
  BAND1st=`echo $BAND | sed -e 's/0$//'`
  r.reclass in="${BASE}_B$BAND" out=$BASE.$BAND1st << EOF
    * = *
EOF
done
Как его запускать? Какой файл создавать, где? может это можно дописать в import.py?
3. Зачем нужно делать Reset color tables?

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

Re: Скрипты Grass применительно к Landsat

Сообщение Александр Мурый » 17 фев 2011, 00:34

1. можно положить в "системную" папку python (типа /usr/lib/python2.6/), только стоит ли её засорять..? Это надо скорее для вызова питон-модулей внутри кода (если я правильно понимаю..) А чтобы просто сделать файл со скриптом доступным "глобально", надо добавить его в системные пути (PATH). Для этого надо вписать в файлы /home/ваш_юзер/.bash_profile или /home/ваш_юзер/.bashrc следующее: export PATH=$PATH:/ваша_папка_со_скриптом/

Подробнее ищите в сети или спрашивайте тут исчо 8)

2. Это уже не питон, как вы могли заметить. Это т.н. шелл-скрипт (скрипт командной оболочки); поместите его в текстовый файл, назовите, например, rename_landsat_bands.sh (sh на конце обозначает "шелл").
Далее откройте терминал ("командную строку"); перейдите в папку со скриптом (cd папка); сделайте скрипт исполняемым, набрав chmod +x rename_landsat_bands.sh; далее запускайте скрипт из GRASS командой sh rename_landsat_bands.sh либо ./rename_landsat_bands.sh. Можно так же добавить его в PATH.

3. По-моему, это просто для примера дано.

P.S. ещё про обработку LANDSAT написано здесь
Редактор материалов, модератор форума

alexkarta
Участник
Сообщения: 91
Зарегистрирован: 27 янв 2009, 00:22
Репутация: 0

Re: Скрипты Grass применительно к Landsat

Сообщение alexkarta » 17 фев 2011, 15:13

да, все абсолютно верно.

с grass скриптами есть ряд особенностей:

1) Небольшие скрипты проще писать на bash, а не на python

2) Скрипты должны запускаться уже после того, как вы зашли в grass и все переменные окружения определены. Скрипт может хранится где-угодно, вы заходите в grass -text, и выполняете его, например, так bash path/to/script.

3) Если нужно, запускать скрипт не изнутри grass, то есть 2 варианта. Воспользоваться переменной GRASS_BATCH_JOB примерно так:

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

chmod u+x $HOME/my_grassjob.sh
export GRASS_BATCH_JOB=$HOME/my_grassjob.sh
grass64 ~/grassdata/spearfish60/neteler/
или задать переменные среды окружения самому (здесь читайте подробности http://grass.osgeo.org/wiki/GRASS_and_Python).

Я для себя сделал миниатюрный Python API для GRASS, который сильно облегчает создания внешних Python скриптов для GRASS http://sourceforge.net/projects/alexkarta/files/ , но над ним еще работать и работать

kryl
Завсегдатай
Сообщения: 324
Зарегистрирован: 14 фев 2010, 20:42
Репутация: 0

Re: Скрипты Grass применительно к Landsat

Сообщение kryl » 17 фев 2011, 21:26

Продолжаю разбираться. Cкрипт переименовывалка не ест файлы после import.py. Наверное проще модифицировать import.py, чтобы он давал файлы пригодные для i.landsat.toar, вот только не соображу как.

The i.landsat.toar and i.landsat.acca modules want the maps to be named such as "scenename.1, .2, .3", etc. for the different bands. GloVis names LANDSAT-7 like _B10, _B20, _B30, etc.

kryl
Завсегдатай
Сообщения: 324
Зарегистрирован: 14 фев 2010, 20:42
Репутация: 0

Re: Скрипты Grass применительно к Landsat

Сообщение kryl » 17 фев 2011, 22:04

Не хочет ставится i.landsat.toar

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

GRASS 6.4.0 (newLocation):~ > g.extension extension=i.landsat.toar
Fetching <i.landsat.toar> from GRASS-Addons SVN (be patient)...
A    i.landsat.toar/landsat_set.c
A    i.landsat.toar/local_proto.h
A    i.landsat.toar/main.c
A    i.landsat.toar/description.html
A    i.landsat.toar/landsat.c
A    i.landsat.toar/earth_sun.c
A    i.landsat.toar/landsat.h
A    i.landsat.toar/landsat_met.c
A    i.landsat.toar/Makefile
A    i.landsat.toar/earth_sun.h
 U   i.landsat.toar
Получена редакция 45417.
Compiling <i.landsat.toar>...
Makefile:8: /usr/lib/grass64/include/Make/Module.make: Нет такого файла или каталога
make: *** Нет правила для сборки цели `/usr/lib/grass64/include/Make/Module.make'.  Останов.
ОШИБКА: Compilation failed, sorry. Please check above error messages.
GRASS 6.4.0 (newLocation):~ > 

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

Re: Скрипты Grass применительно к Landsat

Сообщение Александр Мурый » 17 фев 2011, 22:12

Не хочет ставится i.landsat.toar
Как ставилась GRASS? Если НЕ из исходников (а с пом. пакетного менеджера, например), то дополнения в версии 6.4.0 поставить затруднительно (см. эту тему).

P.S. Как раз сейчас разбираюсь с нормальной установкой дополнений..
Редактор материалов, модератор форума

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

Re: Скрипты Grass применительно к Landsat

Сообщение Александр Мурый » 17 фев 2011, 22:17

Cкрипт переименовывалка не ест файлы после import.py
Если скрипт выдаёт ошибку, то приведите её; если переименовывает "не так", то нужны примеры имён переименованных растров

Очевидная мысль: в скрипте-"переименовывалке" переменной BASE (той, что задаётся в начале), должно быть присвоено имя одного из реально импортированных растров, а не имя растра из примера..
Последний раз редактировалось Александр Мурый 17 фев 2011, 22:27, всего редактировалось 1 раз.
Редактор материалов, модератор форума

kryl
Завсегдатай
Сообщения: 324
Зарегистрирован: 14 фев 2010, 20:42
Репутация: 0

Re: Скрипты Grass применительно к Landsat

Сообщение kryl » 17 фев 2011, 22:27

Перед тем как ставить grass из исходников надо ли удалять поставленный из бинарников и если да то как?

kryl
Завсегдатай
Сообщения: 324
Зарегистрирован: 14 фев 2010, 20:42
Репутация: 0

Re: Скрипты Grass применительно к Landsat

Сообщение kryl » 17 фев 2011, 22:30

переименовывательный скрипт хочет найти L7116601901919990815.B10, а import.py делает B10@L7116601901919990815

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

Re: Скрипты Grass применительно к Landsat

Сообщение Александр Мурый » 17 фев 2011, 22:31

Перед тем как ставить grass из исходников надо ли удалять поставленный из бинарников и если да то как?
Абсолютно необязательно, и я бы даже сказал, что вредно. Т.к. базовая установка может ещё пригодится. А так в системе можно держать сколько угодно "грассов" разных версий, в том числе, в домашней директории (/home/kryl/bin/grass641/ и т.п.)

P.S. Рекомендую ставить сразу обновлённую версию 6.4.1, будут вопросы по установке -- пишите :)
Редактор материалов, модератор форума

kryl
Завсегдатай
Сообщения: 324
Зарегистрирован: 14 фев 2010, 20:42
Репутация: 0

Re: Скрипты Grass применительно к Landsat

Сообщение kryl » 17 фев 2011, 22:58

Запутался какие пути в конфиге надо менять при установке 6.4.1

kryl
Завсегдатай
Сообщения: 324
Зарегистрирован: 14 фев 2010, 20:42
Репутация: 0

Re: Скрипты Grass применительно к Landsat

Сообщение kryl » 17 фев 2011, 23:00

/usr/lib/grass64/ остается или grass641?
/home/user/bin/grass-6.4.0RC6/grass-6.4.0 у меня по моему вообще в системе нет. Заменить на home/kryl/grass-6.4.1RC1?

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

Re: Скрипты Grass применительно к Landsat

Сообщение Александр Мурый » 17 фев 2011, 23:43

Запутался какие пути в конфиге надо менять при установке 6.4.1
kryl, озвучьте уже наконец вашу прекрасную систему-незнакомку :) Просто в разных дистрибутивах немного (а то и сильно) разные пути к установленным библиотекам и другим нужным нам файлам.

Реальные примеры конфигурации GRASS 6.4 при установке из исходников (с учётом того, что имеется поставленная из бинарников версия). Флаги могут быть НЕ ВСЕ (я оставлял только то, что мне надо было).
  • Ubuntu 10.04

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

    CFLAGS="-g -Wall" ./configure \
    --prefix=/home/alex/GIS_and_GEOtools/GRASS_source_install/grass-6.4.0RC6/grass-6.4.0 \
    --enable-largefile --enable-shared --with-readline --with-cairo \
    --with-sqlite --with-postgres \
    --with-postgres-includes=/usr/include/postgresql/ --with-freetype \
    --with-freetype-includes=/usr/include/freetype2 --with-cxx \
    --with-tcltk --with-tcltk-includes=/usr/include/ \
    --with-python=/usr/bin/python2.6-config \
    --with-wxwidgets=/usr/bin/wx-config --with-proj-share=/usr/share/proj \
    --with-mysql --with-mysql-includes=/usr/include/mysql --with-odbc \
    --with-blas --with-blas-includes=/opt/grass-6.4.0RC5/include/grass/ \
    --with-blas-libs=/usr/lib/ --with-lapack \
    --with-lapack-includes=/opt/grass-6.4.0RC5/include/grass/ \
    --with-lapack-libs=/usr/lib/


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


    CFLAGS="-g -Wall" ./configure \
    --prefix=/home/user/bin/grass-6.4.0RC6/grass-6.4.0 --enable-largefile \
    --enable-shared \
    --with-readline --with-cairo --with-sqlite --with-postgres \
    --with-postgres-includes=/usr/include/postgresql \
    --with-freetype --with-freetype-includes=/usr/include/freetype2 \
    --with-cxx --with-tcltk \
    --with-tcltk-includes=/usr/include/tcl/ \
    --with-python=/usr/bin/python2.6-config \
    --with-wxwidgets=/usr/lib/wx/config/base-unicode-release-2.8 \
    --with-proj-share=/usr/share/proj --with-mysql \
    --with-mysql-includes=/usr/include/mysql --with-odbc --with-blas \
    --with-blas-includes=/usr/lib/grass64/include/grass/ \
    --with-blas-libs=/usr/lib/ --with-lapack \
    --with-lapack-includes=/usr/lib/grass64/include/grass/ \
    --with-lapack-libs=/usr/lib/ --with-fftw --with-fftw-includes=/usr/include/
=========================================================================
/usr/lib/grass64/ остается или grass641?
/usr/lib/grass64/ остаётся, т.к. вы указываете --prefix=/home/kryl/bin/grass-6.4.1_bin (например), т.е. грасс будет полностью установлена в эту директорию и будет работать именно из неё. Другой вопрос, что вы можете дать "псевдоним" (alias) типа alias grass64='/home/kryl/bin/grass-6.4.1_bin/bin/grass64', тогда вместо ранее установленной версии будет вызываться версия, поставленная из исходников. А лучше сделать alias grass641='/home/kryl/bin/grass-6.4.1_bin/bin/grass64' -- тогда будут одновременно работать и grass64, и grass641
Редактор материалов, модератор форума

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

Re: Скрипты Grass применительно к Landsat

Сообщение Александр Мурый » 18 фев 2011, 00:00

/home/user/bin/grass-6.4.0RC6/grass-6.4.0 у меня по моему вообще в системе нет. Заменить на home/kryl/grass-6.4.1RC1?
Да, надо заменить на то, что таки у вас есть.

Вообще, на практике было выяснено, что ставить грасс в один каталог с исходниками -- плохо, потом может быть путаница. Я щас делаю так: оставляю исходники в каталоге типа /home/user/bin/grass-6.4.1_src, а ставлю в каталог типа /home/user/bin/grass-6.4.1_bin. Так понятней и наглядней.
Редактор материалов, модератор форума

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

Re: Скрипты Grass применительно к Landsat

Сообщение Александр Мурый » 18 фев 2011, 00:32

переименовывательный скрипт хочет найти L7116601901919990815.B10, а import.py делает B10@L7116601901919990815
Посмотрел ещё. По-моему, эти два скрипта мало связаны друг с другом, во втором имя изображения вообще дано "от балды". Надо будет подумать, как совместить это безобразие..
Редактор материалов, модератор форума

Ответить

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

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

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