Запуск GRASS GIS из внешнего скрипта

Решенные задачи, первая запись - описание решения.
Ответить
KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Статьи: 18
Проекты: 4
Репутация: 122
Откуда: Казань

Запуск GRASS GIS из внешнего скрипта

Сообщение KolesovDmitry » 24 дек 2011, 18:57

Обычный стиль работы с GRASS GIS состоит в том, что пользователь запускает GRASS и в интерактивном режиме вводит команды и просматривает результаты (конечно, при необходимости можно написать скрипт и также выполнить его, но все равно это делается из командной строки GRASS GIS).

Однако, иногда может потребоваться полностью автономный скрипт, который может работать, даже если GRASS GIS не запущена, например, при вызове скрипта из какой-либо программы, для того, чтобы выполнить некоторый анализ. Это может быть также полезным при автоматической обработке, когда нужно по расписанию обновлять или генерировать данные и т.д.

Здесь рассматривается пример создания скрипта (на shell), в котором производится инициализация GRASS с последующим вызовом команд GRASS GIS. Подробности описаны тут, ниже идут "выжимки"

Итак, что потребуется сделать:
1) Задать значения переменным окружения, которые используются в GRASS GIS (PATH, GISRC и т.д.).
2) Собственно сама обработка данных, состоящая из последовательности команд GRASS GIS
3) Очистка системы от временных файлов

Здесь пример такого скрипта:
Скрипт, использующий команды GRASS GISShow

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


#!/bin/bash
# Это пример запуска команд GRASS из внешнего скприта

###########################################
# Настройка параметров перед запуском GRASS
###########################################

# $GISBASE определяет каталог, в который установлена GRASS
# Если не знаете, где этот каталог, то можно запустить GRASS
# и выполнить команду: echo $GISBASE
GISBASE=/usr/lib/grass64
export GISBASE

# Добавим в $PATH пути, где искать скрипты и команды GRASS:
PATH=$PATH:$GISBASE/bin:$GISBASE/scripts
export PATH

# Добавим библиотеки GRASS к LD_LIBRARY_PATH.
# (Для этого проверим, существует ли такая переменная
# и добавим в конец пути к библиотекам GRASS)
if [ -z "$LD_LIBRARY_PATH" ]
then
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GISBASE/lib
else
LD_LIBRARY_PATH=$GISBASE/lib
fi
export LD_LIBRARY_PATH

# Используем идентификатор процесса (PID) в файле блокировки:
GIS_LOCK=$$

# Прописываем пути к набору, области и ГИС-БД
THE_GISDBASE="/пути/к/каталогу/GRASSDATA"
THE_LOCATION="spearfish60"
THE_MAPSET="PERMANENT"

# Создаем файл настроек GRASS
# и прописываем к нему путь:
THE_GRASSRC="/tmp/grassrc.$$"

echo "GISDBASE: $THE_GISDBASE
LOCATION_NAME: $THE_LOCATION
MAPSET: $THE_MAPSET
" > "$THE_GRASSRC"
export GISRC="$THE_GRASSRC"

##########################################################
# Настройка параметров завершена, можно использовать GRASS
##########################################################


############################
# Пример вызова команд GRASS
############################

# Выведем список растров в данном наборе:
g.mlist rast

# Выведем информацию о первом растре из списка:
first=`g.mlist rast | head -1`
r.info $first


##########################################################
# Удаляем файл с настройками, чтобы не мусорить в системе:
##########################################################
rm "$THE_GRASSRC"


Ответить

Вернуться в «Рецепты»

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

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