amuriy писал(а):
- есть 100.. растров (пусть здесь это *jpg), их надо привязать в GRASS.
1. Пакетный импорт растров в отдельные области (X,Y) для последующей
привязки:
2. Заходим по очереди в созданные области с растрами (*.red,*.green,*.blue),
подгоняем текущий регион под размеры растров
ВОПРОС: как соединить шаги 1 и 2 в один шелл-скрипт с автоматическим заходом по очереди во все XY области?
Чтобы зайти в нужный MAPSET, LOCATION и DATABASE, достаточно при вызове GRASS указать полный путь, например:
Встречный вопрос: если вы собираетесь привязывать растры, то зачем их импортировать в разные области XY? Импортируйте все в одну и в ней работайте.
Пара замечаний по поводу скриптов.
1.1 Строка
Код: Выделить всё
r.in.gdal input=$file output=$(basename $file) location=$file -e
уже создает область, подогнанную под растр. Какова же тогда цель второго скрипта? Может, создание композитного слоя?
1.2 Лучше писать не
Код: Выделить всё
for file in ./*jpg
do
r.in.gdal input=$file output=$(basename $file)
....
а
Код: Выделить всё
for file in ./*jpg
do
r.in.gdal input=$file output=$(basename $file .jpg)
....
поскольку
Код: Выделить всё
file="/home/rastr.jpg"
(basename $file) == rastr.jpg
(basename $file .jpg) == rastr
2.1 Строка
Код: Выделить всё
for raster in $(g.mlist type=rast pattern=*); do g.region rast=$raster; done
последовательно пробегает по всем растрам и последовательно подгоняет разрешение и охват под каждый растр. В результате выполнения строки разрешение и охват области будут соответствовать разрешению и охвату последнего растра.
2.2 Строка
Код: Выделить всё
r.composite -d levels=32 red=$(g.mlist type=rast pattern=*red) ...
не сработает, если в текущей области есть несколько растров, оканчивающихся на *red