Skip to Content

Nous adressons toutes nos pensées à la famille de notre ami Jérôme !

http://www.forumsig.org/showthread.php/43488-Disparition-de-Phoenix

GRASS GIS pas à pas pour les débutants: 3 - importer des couches matricielles (raster) et importance de la région

Niveau Débutant
Logiciels utilisés GRASS GIS
Quantum GIS
Plateforme Windows | Mac | Linux | FreeBSD

Après l'importation d'un fichier de type vectoriel, expliqué dans GRASS GIS pour les (presque) nuls: 2) importer des couches vectorielles, nous allons aborder ici l'importation des fichiers rasters (toutes les couches rasters sont traitées par GRASS comme des couches matricielles).

Importation de couches matricielles (raster)

Tout comme les vecteurs, cela se fait aussi à partir du menu File:

Et il y a aussi de nombreuses possibilités d'importation (encore plus !)  et nous choisissons d'importer une couche avec l'option Common import formats (r.in.gdal) qui est la plus générale. Elle permet d'importer tous les formats disponibles dans la bibliothèque GDAL (les autres possibilités les plus intéressantes sont tous les ASCII, r.in.xyz, r.in.ascii, r.in.polygons er r.in.arc pour les fichiers textes de type xy(z) ou grilles (grid).

La fenêtre résultante offre d'ailleurs le choix de tous les formats d'importation possibles:

Le choix est ici d'importer un fichier raster de type JPEG (.jpg)

 Comme pour les vecteurs, il y a toujours moyen d'utiliser l'ancienne interface, beaucoup plus complète avec le bouton Command dialog :

Comme avec les vecteurs, il vaut mieux cocher Override dataset projection (use location's projection) sous peine de surprises. Il y a tout aussi moyen d'importer une couche directement à partir de Quantum GIS avec la commande des Outils GRASS, r.in.gdal.qgis:

ou avec la commande r.in.gdal.loc qui permet de créer un nouveau secteur (location) à partir du raster et de son système de projection.

L'importation est ensuite réalisée:

mais, surprise, ce n'est pas une couche qui est importée, mais trois ! En pratique, GRASS GIS décompose toujours un raster dans ces éléments essentiels (fichiers .red, .green et .blue pour les rasters multibandes, par exemple, ce qui est le cas ici, voir GRASS GIS : géométries, topologies et conséquences pratiques (vecteurs, rasters, volumes)).

Après l'importation

Une des couches importées se retrouve aussi dans la fenêtre Layer Manager et avec un zoom to selected map (avec un clic droit sur la couche, comme pour les vecteurs) dans le Layer Manager:

 mais ce n'est pas ce que l'on veut, on voudrait la couche couleur, comme l'originale. La « recomposition » de l'image à partir de ses 3 composants se fait avec la commande r.composite disponible dans le menu Raster

Cette commande ouvre le dialogue suivant:

 mais le résultat est surprenant, même en zoomant sur la couche, rien.

Pourquoi ? C'est le concept de région qui intervient ici et qu'il est fondamental de comprendre.

Ajustement de la région de traitement

Cette notion de région a déjà été traitée sur le Portail dans GRASS GIS : géométries, topologies et conséquences pratiques (vecteurs, rasters, volumes) et dans Grass Gis: région, résolution, résolution 3D, drapage, ou l'apparente quadrature du cercle...

En pratique, une région n'est qu'une fenêtre de traitement (N,S,E,W) avec une certaine résolution. Une fois définie, tous les traitements postérieurs ne s'appliqueront exclusivement qu'à ce qui est dans la région et rien d'autre

r.composite est un traitement et à ce titre il n'agit que sur la région définie.

Pour illustrer le problème une nouvelle fois, je vais utiliser la représentation des données dans QGIS avec l'extension grass.

  • La région a été définie précédemment sur base du vecteur importé dans l'article GRASS GIS pas à pas pour les débutants: 2 - importer des couches vectorielles. Il est possible de voir que cette région ne couvre qu'une infime partie de l'emprise du raster à importer. r.composite n'agira donc que sur la zone du rectangle bleu.

  • la région doit donc être redéfinie pour couvrir l'emprise du raster:

Cela se fait avec Set region (g.region) dans le menu Settings déjà vu dans le traitement des vecteurs :

et après un nouveau r.composite, le résultat, est conforme à ce qu'on attendait:

Cette notion de région est fondamentale pour comprendre la logique de GRASS GIS. Les possibilités de définition d'une région sont très nombreuses, à partir d'une couche, de plusieurs couches, de la résolution, etc. ou une combinaison de tous ces critères. L'erreur la plus commune dans GRASS GIS est de lancer des traitements avec une région mal adaptée ou mal définie,  ce qui au final ne donnera rien comme résultat. Les intérêts de cette notion ont déjà été illustrés dans Grass Gis: région, résolution, résolution 3D, drapage, ou l'apparente quadrature du cercle... seront montrés dans la partie suivante.

Tout peut être fait aussi dans dans la ligne de commandes du Layer Manager ou dans le Shell GRASS:

Ces possibilités permettent la création de scripts pour automatiser ce processus comme l'importation directe d'un fichier en couleurs (RGB): 

 

#!/bin/sh
#Script d'importation des cartes r.gdal + r.composite -M.laloux
if test "$GISBASE" = ""; then
	echo "il faut être dans GRASS pour lancer ce script"
	exit 1
fi
# cartes origine, destination
# commande (dans le Shell GRASS)
# (./)import.sh fichier.(.tif,jpg,etc.) destination
imp=$1 
dest=$2
g.message message="importation de $map dans $dest"
# importation
r.in.gdal -o input=$imp output=$dest
# région
g.region rast=$dest.red
# combinaison
r.composite red=$dest.red green=$dest.green blue=$dest.blue output=$dest.ok
# suppression des rasters indésirables
g.remove rast=$dest.red,$dest.green,$dest.blue

C'est un simple script qui permet, dans le Shell GRASS, d'importer un fichier, de fixer la région, de créer le fichier résultant puis de supprimer les fichiers intermédiaires (.red, .green, .blue) automatiquement. Il me suffit, mais je pourrai créer une interface (facile) ou le faire en Python.

Ou avec le nouveau Graphic Modeler qui permet de créer des commandes:

En route pour les traitements

Le fichier ou les fichiers étant importé avec la bonne région il est maintenant possible de lui appliquer tous les traitements disponibles dans GRASS GIS à partir du menu Raster:

Pour illustrer l'importance de la région, nous allons importer un MNT présent dans une un autre mapset et le traiter dans la région définie:

 Nous allons calculer la carte des pentes de ce MNT:

Résultat:

Et contrôler le résultat dans QGIS à partir des couches importées avec le plugin grass:

Le traitement n'a bien été effectué que dans la région définie. C'est ici que la notion de région acquiert toute son importance puisqu'elle va permettre de ne travailler exclusivement que dans la fenêtre choisie.

Exportation

Une fois les traitements effectués il est souvent nécessaire de les exporter pour les utiliser dans d'autres logiciels.  Cela se fait:

- à partir du menu File/Export vector map avec plusieurs options, r.out.gdal étant la plus générale.

- à partir de la ligne de commandes du Layer Manager ou à partir du Shell GRASS

- ou directement dans QGIS avec l'extension grass:

Conclusions pour les couches matricielles:

L' importation d'une couche raster dans GRASS GIS nécessite donc:

  • un secteur (location) avec un système de projection fixé pour le recevoir.
  • si aucun jeu de données (mapset) n'est disponible, la couche sera placée, par défaut, dans le mapset PERMANENT.
  • lors de l'importation un fichier raster multibande, il sera toujours décomposé en ses éléments essentiels (fichiers .red, .green et .blue) pour les traitements futurs. Il y a toujours moyen de recomposer l'image avec r.composite.
  • le rôle fondamental de la région

Conclusions générales pour les 3 parties

Vous savez maintenant créer un secteur (location) des jeux de données (mapset), importer des couches vectorielles et des couches matricielles depuis des fichiers ou depuis QGIS et effectuer des traitements basiques, le tout en toute connaissance de cause.

Il faut aussi noter que dans GRASS GIS, toutes les commandes peuvent être effectuées de diverses manières:

  1. à partir des menus ou des boutons de l'interface graphique (comme un logiciel SIG traditionnel);
  2. à partir du Shell GRASS qui est un Shell Bash, ce qui est beaucoup plus rapide lorsqu'on connait les commandes et autorise les scripts de traitement;
  3. depuis la version 6.4.2, dans la ligne de commandes du Layer Manager et même dans la console Python.

Lorsqu'on connait bien GRASS GIS, on a de plus en plus tendance à utiliser en priorité le Shell GRASS, beaucoup plus souple et rapide.

Tous les traitements ont été effectués sur Mac OS X avec GRASS GIS 6.4.2  et Inkscape pour les figures.

Site officiel : GRASS GIS
Site officiel : Quantum GIS
Autres Liens : GRASS GIS pas à pas pour les débutants: 1 - démarrage de l'applications, secteurs (locations), jeux de données (mapset)
Autres Liens : GRASS GIS pas à pas pour les débutants: 2 - importer des couches vectorielles
Autres Liens : Grass Gis: région, résolution, résolution 3D, drapage, ou l'apparente quadrature du cercle...
Autres Liens : GRASS GIS : géométries, topologies et conséquences pratiques (vecteurs, rasters, volumes)


Creative Commons License
licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique Commerciale 2.0 France

Commentaires

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.