Scripts sous GRASS

Scripts

La possibilité d'automatiser des étapes isolées est une extension fort utile (même pour des débutants GRASS). Ces scripts doivent être écrits au format ASCII sous forme de scripts shell UNIX. Dans ces scripts, les modules GRASS doivent être appelés avec leurs paramètres respectifs et des calculs géostatistiques peuvent être exécutés de façon automatique. En particulier pour les novices, il est important de générer ces scripts pas-à-pas, en testant au préalable la syntaxe des commandes dans la console GRASS. Ensuite la commande UNIX \texttt{\$~history} permet de retrouver et de sauvegarder les commandes antérieures (en faisant un copier-coller dans un éditeur de texte à l'aide des boutons de gauche et du milieu de la souris).

Voici un exemple qui doit démontrer clairement le potentiel de la programmation sous forme de scripts : avec ce script, vous pouvez calculer l'information géostatistique globale sur des images raster[1]. Sauvegarder ce script sous le nom, statistics.sh par exemple et réglez les permissions UNIX avec chmod u+x statistics.sh.

Ce script peut être utilisé après avoir lancer GRASS, spécifiez le nom de la couche raster à analyser en paramètre. Une version modifiée du script ci-dessus existe dans GRASS 5 sous le nom r.univar. La sortie du module GRASS r.stats est transférée au programme UNIX awk à l'aide d'un pipe UNIX (représenté par le caractère '|'). Les calculs sont faits à partir de awk et les résultats sont affichés sur l'écran.

La meilleure façon de comprendre le script GRASS est certainement d'étudier les nombreux exemples existants. Allez dans le répertoire de scripts de votre installation GRASS et étudiez en quelques uns :

cd $GISBASE/scripts/

Quelques modules GRASS vont vous aider dans vos scripts. Ce sont :

Etudiez leur utilisation dans les scripts GRASS existants afin de comprendre comment fonctionnent ces commandes.

Pour plus d'information sur la programmation shell, consultez la page de manuel de votre shell (sous GNU/Linux il s'agit généralement du shell bash, alors tapez man bash ou suivez l'un des nombreux liens listés sur la page Programming Texts and Tutorials.

Utilisation de GRASS en batch

GRASS peut être entièrement contrôlé de façon externe par l'intermédiaire de scripts (et par conséquent exécuté automatiquement) en règlant les variables d'environnement correctes. Il n'existe en effet pas un programme GRASS unique mais en fait, une connexion de modules qui sont exécutés dans un environnement spécial. Même le lancement de GRASS consiste seulement à fixer un certain nombre de variables. Cela aussi peut se faire directement, voici un exemple dans le style "bash-shell".

Après avoir exécuté ce script, tous les modules GRASS qui peuvent être utilisés de façon non interactive seront disponibles. Généralement, nous pouvons lister les paramètres dont un module a besoin en tapant "-help" (pour accéder au manuel).

Une fois ces variables fixées, GRASS peut aussi être intégré dans des CGI, des programmes Perl et d'autres scripts. Vous pouvez examiner un exemple assez complexe sur internet and other scripts. SlideLinks est un SIG web basé intégralement sur des scripts CGI, sur un système de gestion de base de données et sur GRASS.

Depuis la version GRASS 5.0 vous pouvez sauter l'écran de démarrage de GRASS en spécifiant directement la base de données, la location et le mapset :

grass5 /home/neteler/grassdata/katmandu/innercity

Bien évidemment, cela ne fonctionne que si la location et les autres paramètres sont correctement définis.

Notes

[1]

L'exemple de code contenu dans ce chapitre vient de M. Neteler, H. Mitasova, 2002. Open Source GIS: A GRASS GIS Approach.