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

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

Добавлено: 17 фев 2011, 00:09
kryl
На странице 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?

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 написано здесь

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

Добавлено: 17 фев 2011, 15:13
alexkarta
да, все абсолютно верно.

с 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/ , но над ним еще работать и работать

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

Добавлено: 17 фев 2011, 21:26
kryl
Продолжаю разбираться. 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.

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

Добавлено: 17 фев 2011, 22:04
kryl
Не хочет ставится 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):~ > 

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

Добавлено: 17 фев 2011, 22:12
Александр Мурый
Не хочет ставится i.landsat.toar
Как ставилась GRASS? Если НЕ из исходников (а с пом. пакетного менеджера, например), то дополнения в версии 6.4.0 поставить затруднительно (см. эту тему).

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

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

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

Очевидная мысль: в скрипте-"переименовывалке" переменной BASE (той, что задаётся в начале), должно быть присвоено имя одного из реально импортированных растров, а не имя растра из примера..

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

Добавлено: 17 фев 2011, 22:27
kryl
Перед тем как ставить grass из исходников надо ли удалять поставленный из бинарников и если да то как?

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

Добавлено: 17 фев 2011, 22:30
kryl
переименовывательный скрипт хочет найти L7116601901919990815.B10, а import.py делает B10@L7116601901919990815

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

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

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

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

Добавлено: 17 фев 2011, 22:58
kryl
Запутался какие пути в конфиге надо менять при установке 6.4.1

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

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

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

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. Так понятней и наглядней.

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

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