23. Intégration du SIG GRASS
L’intégration de GRASS fournit un accès aux bases de données et aux fonctionnalités du SIG GRASS (voir le projet GRASS Bibliographie). L’intégration est formée de deux parties: le fournisseur de données et l’extension. Le fournisseur de données permet de naviguer, de gérer et de visualiser des rasters et des couches vecteurs GRASS. L’extension peut être utilisée pour créer de nouveaux secteurs GRASS ainsi que des jeux de données, modifier la région GRASS, créer et mettre à jour des couches vecteurs et analyser des données GRASS en 2D ou 3D avec l’aide des plus de 400 modules GRASS disponibles. Dans cette section, nous introduirons les fonctionnalités du fournisseur et de l’extension et nous donnerons quelques exemples de gestion et de tâches réalisées avec des données GRASS.
Le fournisseur gère les version 6 et 7 de GRASS, de même que l’extension (à partir de QGIS 2.12). La distribution de QGIS peut contenir le fournisseur/extension soit pour GRASS 6, soit pour GRASS 7, soit pour les deux en même temps (les binaires ont des noms différents). Neanmoins, seule une version du fournisseur/extension peut être chargée lors du fonctionnement.
23.1. Jeu de données de démonstration
A titre d’exemple, nous utiliserons le jeu de données QGIS Alaska (voir la section Téléchargement de données test). Il inclut un petit SECTEUR
GRASS contenant trois couches vecteurs et un raster d’élévation. Créer un nouveau répertoire nommé grassdata
, téléchargez le jeu de données QGIS “Alaska” qgis_sample_data.zip
depuis https://qgis.org/downloads/data/ et décompressez le fichier dans grassdata
.
More sample GRASS LOCATIONs
are available at the GRASS website at
https://grass.osgeo.org/download/data/.
23.2. Charger des données GRASS raster et vecteur
Si le fournisseur est chargé dans QGIS, l’objet secteur avec l’icône GRASS est ajouté dans le navigateur sous chaque répertoire contenant un secteur GRASS. Déplacez-vous dans le répertoire grassdata
et étendez le secteur alaska
et le jeu de données.
Vous pouvez charger un raster et des couches vecteur GRASS comme n’importe quelle autre couche depuis le navigateur soit en double-cliquant sur en entrée de couche ou par un glisser-déposer dans le canevas de carte ou dans la légende.
Astuce
Charger des données GRASS
Si vous ne pouvez pas voir de secteur GRASS, vérifiez dans
si le fournisseur de données vecteur est chargé.23.3. Importer des données dans un SECTEUR GRASS par glisser-déposer
Cette section donne un exemple de comment importer des données raster et vecteur dans un jeu de données GRASS.
Dans le navigateur QGIS, déplacez-vous dans le jeu de données dans lequel vous souhaitez importer des données.
Dans le navigateur QGIS, trouvez une couche que vous souhaitez importer dans GRASS; vous pouvez ouvrir une autre instance du navigateur (Explorateur (2)) si la source de données est trop éloignée du jeu de données dans l’arbre.
Faîtes un glisser-déposer dans le jeu de données cible. L’import peut prendre un certain temps pour les couches volumineuses et vous verrez l’icône animée en face des nouvelles entrées de couches jusqu’à ce que l’import soit terminé.
Lorsque les données raster sont dans des SCR différents, elles peuvent être reprojetées en utilisant une transformation Approximée (rapide) ou Exacte (précise). Si un lien vers une source raster est créé (via r.external
), que la donnée source est dans le même SCR et que le format est géré par GDAL alors le SCR de la source de données sera utilisé. Vous pouvez paramétrer ces options dans l’onglet Explorateur dans Options GRASS.
Si un raster source a plus d’une seule bande, une nouvelle carte GRASS est créée à partir de chaque couche avec un suffixe .<numéro de bande> et un groupe de toutes les cartes avec l’icône est créé. Les rasters externes ont une icône différente .
23.4. Gérer GRASS depuis l’Explorateur QGIS
Copier des données: les cartes GRASS peuvent être copiées entre les jeux de données au sein du même secteur par glisser-déposer.
Supprimer des cartes: Faire un clic droit sur la carte GRASS et sélectionner Supprimer à partir du menu contextuel.
Renommer des cartes: Faire un clic-droit sur une carte GRASS et sélectionner Renommer depuis le menu contextuel.
23.5. Options GRASS
Les options GRASS peuvent être paramétrées dans la boîte de dialogue Options GRASS qui peut être ouverte en faisant un clic droit sur le secteur ou le jeu de données dans l’explorateur et en choisissant Options GRASS.
23.6. Lancer l’extension GRASS
Pour pouvoir utiliser les fonctionnalités de GRASS, vous devez sélectionner et charger l’extension GRASS à l’aide du gestionnaire d’extensions. Cliquez sur le menu , sélectionnez GRASS et cliquez sur OK.
Les fonctionnalités principales suivantes sont fournies par la barre d’outils (
) lorsque vous lancez l’extension GRASS :23.7. Ouvrir un jeu de données GRASS
Un jeu de données GRASS doit être ouvert pour avoir accès aux outils GRASS dans l’extension (les outils sont désactivés si aucun jeu de cartes n’est ouvert). Vous pouvez ouvrir un jeu de données à partir de l’explorateur: faîtes un clic droit sur un jeu de données et choisissez Ouvrir le jeu de données à partir du menu contextuel.
23.8. Secteur et Jeu de données GRASS
Les données GRASS sont stockées dans un répertoire référencé sous le nom GISDBASE. Ce répertoire, souvent appelé grassdata
, doit être créé avant que vous commenciez à travailler avec l’extension GRASS dans QGIS. Dans ce répertoire, les données GRASS sont organisées par projets et stockées dans des sous-répertoires appelés SECTEUR
( LOCATION
en Anglais). Chaque SECTEUR
est défini par son système de coordonnées, sa projection et son étendue géographique. Chaque SECTEUR
peut contenir plusieurs Jeux de données
(MAPSETs
en Anglais) (sous-répertoires du SECTEUR
) qui sont utilisés pour subdiviser le projet en différents thèmes, sous régions ou espaces de travail pour chaque membre d’une équipe (Neteler & Mitasova 2008 Bibliographie). Pour pouvoir analyser des couches raster ou vecteur à l’aide des modules GRASS, vous devez les importer dans un SECTEUR
. (Ce n’est pas complètement vrai, car avec les modules GRASS r.external
et v.external
, vous pouvez lier (en lecture seule) des données externes gérées par GDAL/OGR sans les importer. Comme il ne s’agit pas d’une fonctionnalité courante pour les débutants sur GRASS, elle ne sera pas décrite ici).
23.9. Importer des données dans un SECTEUR GRASS
Consultez la section Importer des données dans un SECTEUR GRASS par glisser-déposer pour voir comment les données peuvent être facilement importées par glisser-déposer dans l’explorateur.
Cette section donne un exemple d’importation de données raster et vecteur dans le SECTEUR
GRASS “alaska” fournit dans le jeu de données QGIS “Alaska”, de la manière la plus classique, en utilisant les modules GRASS de base. Nous utiliserons la couche raster d’occupation du sol landcover.img
et la couche vectorielle au format GML lakes.gml
, toutes deux présentes dans le jeu de données “Alaska” (voir Téléchargement de données test).
Démarrez QGIS et assurez vous que l’extension GRASS est chargée.
Dans la barre d’outils GRASS, cliquez sur Ouvrir un jeu de données pour ouvrir l’assistant Jeu de données.
Sélectionnez comme base de données GRASS, le répertoire
grassdata
dans le jeu de données QGIS Alaska, puis leSECTEUR
“alaska”, leJeu de donnée
“demo” et cliquez sur OK.Maintenant cliquez sur Ouvrir les outils GRASS. La boîte à outils GRASS s’ouvre (voir section La Boîte à outils GRASS).
Pour importer la couche raster
landcover.img
, cliquez sur le moduler.in.gdal
dans l’onglet Arborescence des modules. Ce module GRASS vous permet d’importer les fichiers raster gérés par la librairie GDAL dans unSECTEUR
GRASS. La fenêtrer.in.gdal
apparaît.Naviguer jusqu’au répertoire
raster
dans le jeu de données QGIS “Alaska” et sélectionnez le fichierlandcover.img
.Définissez
landcover_grass
comme nom de sortie pour le raster et cliquez sur Lancer. Dans l’onglet Rendu, vous voyez la commande GRASS en coursr.in.gdal -o input=/path/to/landcover.img output=landcover_grass
.Lorsque Terminé avec succès s’affiche, cliquez sur Vue. La couche raster
landcover_grass
est maintenant importée dans GRASS et pourra être affichée dans QGIS.Pour importer le fichier GML
lakes.gml
, cliquez sur le modulev.in.ogr
dans l’onglet Arborescence des modules. Ce module vous permet d’importer des données vectorielles gérées par OGR dans unSECTEUR
GRASS. La fenêtrev.in.ogr
apparaît.Naviguer jusqu’au répertoire
gml
dans le jeu de données QGIS “Alaska” et sélectionnez le fichierlakes.gml
.Définissez
lakes_grass
comme nom de sortie et cliquez sur Lancer. Vous n’avez pas besoin des autres options dans cet exemple. Dans l’onglet Rendu, vous voyez la commande GRASS en coursv.in.ogr -o dsn=/path/to/lakes.gml output=lakes\_grass
.Lorsque Terminé avec succès s’affiche, cliquez sur Vue. La couche raster
lakes_grass
est maintenant importée dans GRASS et pourra être affichée dans QGIS.
23.9.1. Créer un nouveau SECTEUR GRASS
À titre d’exemple, voici le SECTEUR alaska
GRASS, projeté en Albers Equal Area et ayant pour unité le pied. Ce SECTEUR alaska
sera utilisé pour tous les exemples et exercices GRASS qui suivent. Il est utile de le télécharger et de l’installer sur votre ordinateur (voir Téléchargement de données test).
Démarrez QGIS et assurez vous que l’extension GRASS est chargée.
Affichez le shapefile
alaska.shp
(voir section Charger une couche à partir d’un fichier) du jeu de données QGIS Alaska (voir Téléchargement de données test).Dans la barre d’outils GRASS, cliquez sur Nouveau jeu de données pour ouvrir l’assistant de création de Jeux de données.
Sélectionnez un répertoire existant de base de données GRASS (GISDBASE)
grassdata
ou créez en un pour le nouveauSECTEUR
avec le gestionnaire de fichiers de votre ordinateur. Cliquez sur le bouton Suivant.Nous pouvons utiliser cet assistant pour créer un nouveau
MAPSET
dans unLOCATION
existant (voir section Ajouter un nouveau Jeu de données) ou pour créer un nouveauLOCATION
tout court. Sélectionnez Créer un nouvel emplacement (voir Fig. 23.2).Entrez un nom pour le
SECTEUR
– nous avons utilisé “alaska” – et cliquez sur le bouton Suivant.Définissez la projection en cliquant sur le bouton radio Projection pour activer la liste des projections.
Nous utilisons la projection Albers Equal Area Alaska (pieds). Étant donné que nous savons qu’elle correspond au code EPSG 2964, nous le saisissons dans le champ de recherche. (Note : Si vous souhaitez reproduire la manipulation pour un autre
SECTEUR
et une autre projection dont vous ne connaissez pas le code EPSG, cliquez sur Statut de la projection dans le coin inférieur droit de la barre d’état de QGIS (voir section Utiliser les projections)).Saisissez 2964 dans le Filtre pour sélectionner la projection.
Cliquez sur Suivant
Pour définir la région par défaut, nous devons saisir les limites Nord, Sud , Est et Ouest du
SECTEUR
. Ici il suffit de cliquer sur le bouton Fixer l’emprise courante de QGIS, pour appliquer l’emprise de la couchealaska.shp
déjà chargé comme emprise par défaut.Cliquez sur Suivant
Nous avons aussi besoin de définir un
Jeu de données
dans notre nouveauSECTEUR
(étape indispensable lors de la création d’un nouveauSECTEUR
). Vous pouvez l’appeler comme vous le souhaitez - nous utiliserons “demo”. GRASS crée automatiquement unJeu de données
spécial appeléPERMANENT
, conçu pour stocker les données essentielles du projet, son emprise spatiale par défaut et la définition du système de coordonnées (voir Neteler & Mitasova 2008 Bibliographie).Vérifiez le résumé pour vous assurez que tout est correct et cliquez sur guilabel:Terminer`.
Le nouveau
SECTEUR
“alaska” et les deuxJeux de données
“démo” et “PERMANENT” sont créés. Le jeu de données ouvert à ce moment est “démo”, tel que vous l’avez défini.Notez que certains outils de la barre d’outils GRASS qui n’étaient pas accessibles le sont maintenant.
Si ce processus semble long, il s’agit en fait d’un moyen simple et rapide de créer un SECTEUR
. Le SECTEUR
“alaska” est maintenant prêt pour l’importation de données (voir section Importer des données dans un SECTEUR GRASS). Vous pouvez également utiliser des données raster ou vecteur existantes dans le SECTEUR
“alaska” inclues dans le jeu de données QGIS “Alaska” Téléchargement de données test et continuez avec la section Le modèle vecteur de GRASS.
23.9.2. Ajouter un nouveau Jeu de données
Un utilisateur a seulement des droits d’écriture sur le Jeu de données
GRASS qu’il a créé. Cela veut dire, qu’au-delà de l’accès à son propre Jeu de données
GRASS, vous pouvez lire les Jeux de données
des autres utilisateurs (et ils peuvent lire le votre), mais vous ne pouvez modifier ou supprimer que les données de votre propre Jeu de données
.
Tous les Jeux de données
incluent un fichier WIND
qui stocke l’emprise et la résolution raster courante (voir Neteler & Mitasova 2008 dans Bibliographie et section L’outil région GRASS).
Démarrez QGIS et assurez vous que l’extension GRASS est chargée.
Dans la barre d’outils GRASS, cliquez sur Nouveau jeu de données pour ouvrir l’assistant de création de Jeux de données.
Sélectionnez le répertoire
grassdata
de la base de données GRASS (GISDBASE) qui contient déjà leSECTEUR
“alaska” et où nous voulons ajouter un autreSECTEUR
nommé “test”.Cliquez sur Suivant
Nous pouvons utiliser cet assistant pour créer un nouveau
MAPSET
dans unLOCATION
existant ou pour créer un nouveauLOCATION
tout court. Cliquez sur le bouton radio Sélectionner emplacement (voir Fig. 23.2) et cliquez sur Suivant .Entrez le nom
test
pour le nouveauMAPSET
. Dans l’assistant, vous trouverez ci-dessous une liste desMAPSETs
existants et des propriétaires correspondants.Cliquez sur Suivant, vérifiez le résumé pour vous assurer qu’il est correct et cliquez sur Terminer.
23.10. Le modèle vecteur de GRASS
Il est important de comprendre le modèle de données vectorielles GRASS avant de se lancer dans la numérisation. En général, GRASS utilise un modèle de données vectorielles topologique. Cela signifie que les surfaces ne sont pas représentées par des polygones fermés et distincts, mais par une ou plusieurs limites. Une limite entre des polygones adjacents n’est numérisée qu’une seule fois et est partagée par les deux surfaces. Les limites doivent être connectées sans trous. Une surface est identifiée (et libellée) via le centroïde de la surface.
Outre les limites et centroïdes, une couche vectorielle peut également contenir des points et des lignes. Tous ces éléments de géométrie peuvent être mélangés dans une couche vectorielle et seront représentés dans différentes “sous-couches” dans une carte vectorielle GRASS. Ainsi, une couche GRASS n’est pas un vecteur ou un raster, mais un niveau à l’intérieur d’une couche vectorielle. Il est important de bien distinguer ceci (même s’il est possible de mélanger des éléments de géométries différentes, c’est inhabituel et même dans GRASS, on l’utilise dans des cas particuliers tel que l’analyse de réseau. Normalement, vous devriez stocker des éléments de géométries différentes dans des couches différentes).
Il est possible de stocker plusieurs “sous-couches” dans une couche vectorielle. Par exemple, des champs, de la forêt et des lacs peuvent être stockés dans une couche vectorielle. Des forêts et des lacs adjacents partagent les mêmes limites, mais ils auront des tables attributaires différentes. Il est aussi possible de faire correspondre une table attributaire aux limites. Par exemple, la limite entre un lac et une forêt peut être une route qui peut avoir une table attributaire différente.
La “sous-couche” est définie dans GRASS par un chiffre. Ce chiffre définit s’il y a plusieurs sous-couches à l’intérieur d’une couche vectorielle (par exemple, il définit s’il s’agit de lac ou de forêt). Pour l’instant, il s’agit d’un nombre, mais dans des versions futures GRASS pourra utiliser des noms pour les sous-couches dans l’interface utilisateur.
Les données attributaires peuvent être stockées dans le SECTEUR
au format dBase, SQLite3 ou dans des tables de bases de données externes comme par exemple : PostgreSQL, MySQL, Oracle, etc.
Les données attributaires sont liées à la géométrie par le biais d’un champ “category”.
“Category” (clé, ID) est un entier attaché à la géométrie, et il est utilisé comme lien vers une colonne de clé dans la table de base de données.
Astuce
Apprendre le modèle vecteur de GRASS
The best way to learn the GRASS vector model and its capabilities is to download one of the many GRASS tutorials where the vector model is described more deeply. See https://grass.osgeo.org/learn/manuals/ for more information, books and tutorials in several languages.
23.11. Création d’une nouvelle couche vectorielle GRASS
Pour créer un nouvelle couche vecteur GRASS, sélectionnez une des entrées suivantes dans le menu contextuel d’un jeu de données:
Nouvelle couche de points
Nouvelle couche de lignes
Nouvelle couche de polygones
et saisissez un nom dans la boîte de dialogue. Une nouvelle carte vecteur sera créée et la couche sera ajoutée au canevas en mode édition. Sélectionner le type de couche ne restreint pas le type géométrique qui peut être numérisé dans la couche vecteur. Dans GRASS, il est possible d’organiser toute sorte de type géométrique (point, ligne et polygone) au sein d’une même couche. Le type est uniquement utilisé pour ajouter une couche au canevas de cartes car QGIS impose qu’une couche ait un seul type géométrique.
Il est également possible d’ajouter les couches aux couches vecteurs existantes en sélectionnant une des entrées décrites ci-dessus depuis le menu contextuel de la carte vecteur existante.
Dans GRASS, il est possible de gérer plusieurs types de géométrie (point, ligne et surface) dans une seule couche d’information, car GRASS utilise un modèle vecteur topologique. Vous n’avez donc pas besoin de sélectionner un type de géométrie quand vous créez une couche vectorielle GRASS. Ce comportement est différent de celui de la création de shapefile avec QGIS, car les shapefiles utilisent un modèle vecteur d’entité simple (voir section Création de nouvelles couches vecteur).
23.12. Numérisation et édition de couche vectorielle GRASS
Les couches vecteur GRASS peuvent être numérisées en utilisant les outils de numérisation standards de QGIS. Il existe néanmoins quelques particularités dont vous devez avoir notion, dues
au modèle topologique de GRASS comparé aux entités simples de QGIS.
à la complexité du modèle GRASS.
au couches multiples dans des cartes simples.
à plusieurs types géométriques dans une seule carte.
au partage de géométries par plusieurs entités de plusieurs couches.
Les particularités sont discutées dans les sections qui suivent.
Enregistrer, annuler les modifications, annuler, refaire
Avertissement
Toutes les modifications faites pendant l’édition sont immédiatement écrites dans la couche vecteur et les tables attributaires associées.
Les modifications sont écrites après chaque opération mais il est possible d’annuler / refaire une modification ou toutes les modifications au moment de fermer l’édition. Si une annulation partielle ou complète est utilisée, l’état d’origine est ré-écrit dans la couche vectorielle et ses tables attributaires associées.
Il y a deux raisons principales à ce comportement :
Il est dans la nature de GRASS que l’utilisateur sait vraiment ce qu’il veut faire pour les couches vecteurs et qu’il vaut mieux avoir sauvegardé les données lorsque le travail est soudainement interrompu (par exemple, lors d’un plantage).
La nécessité pour une édition correcte de données topologiques de disposer d’une information visuelle sur le respect des règles topologiques, une telle information peut uniquement être acquise depuis une couche vecteur GRASS si les changements sont écrits dans la couche.
Barre d’outils
La “barre d’outils de numérisation” dispose d’outils spécifiques lorsqu’une couche GRASS est en édition:
Icône |
Outil |
Fonction |
---|---|---|
Nouveau Point |
Numérise un nouveau point |
|
Nouvelle Ligne |
Numérise une nouvelle ligne |
|
Nouveau Contour |
Numériser une nouvelle enveloppe. |
|
Nouveau Centroïde |
Numérise un nouveau centroïde (permet d’étiqueter un polygone existant) |
|
Nouvelle enveloppe fermée. |
Numériser une nouvelle enveloppe fermée. |
Table des outils d’édition GRASS
Astuce
Numérisation de polygones dans GRASS
Si vous voulez créer un polygone dans GRASS, vous devez numériser premièrement les limites du polygone. Ensuite, vous ajoutez un centroïde (emplacement de l’étiquette) dans le polygone fermé. La raison en est, que le modèle vectoriel topologique assure toujours le lien entre les informations d’attributs des polygones via le centroïde et non via la limite.
Categorie
La catégorie, souvent appelée cat est une sorte d’identifiant. Le nom a pour origine l’époque où les vecteurs GRASS avaient un seul attribut « catégorie ». La catégorie est utilisée comme lien entre les géométries et les attributs. Une géométrie unique peut avoir plusieurs catégories et ainsi représenter plusieurs entités dans différentes couches. Pour le moment, il n’est possible d’assigner qu’une seule catégorie par couche en utilisant les outils d’édition dans QGIS. Les nouvelles entités ont une nouvelle catégorie unique, à l’exception des enveloppes. Les enveloppes forment généralement des surfaces et ne représentent pas des entités linéaires, il est néanmoins possible de définir des attributs pour une enveloppe ultérieurement, par exemple dans une couche différente.
Les nouvelles catégories sont toujours créées uniquement dans la couche en cours d’édition.
Il n’est pas possible d’affecter plusierus catégories aux géométries en utilisant l’édition dans QGIS, ces données sont correctement représentées sous forme d’entités multiples et les entités individuelles, même issues de différentes couches, peuvent être supprimées.
Attributs
Les attributs de la couche en cours d’édition peuvent seulement être modifiés. Si la carte vecteur contient plusieurs couches, les entités des autres couches auront leurs attributs paramétrés sur “<non éditable (couche #)>” pour vous prévenir que tel attribut n’est pas modifiable. La raison est que les autres couches peuvent avoir différents jeux d’attributs alors que QGIS ne gère qu’un seul jeu de champs par couche.
Si une primitive géométrique ne dispose pas de catégorie, une nouvelle catégorie unique est automatiquement affectée et un nouvel enregistrement dans la table d’attribut est créé lorsqu’un attribut de cette géométrie est modifié.
Astuce
Si vous voulez réaliser des mises à jour massives d’attributs dans la table, par exemple, à l’aide de la “Calculatrice de Champs” (Utiliser la Calculatrice de Champs), et qu’il existe des entités sans catégorie que vous ne souhaitez pas mettre à jour (typiquement les enveloppes), vous pouvez les filtrer en paramétrant le “Filtre Avancé” sur cat is not null
.
Style d’édition
La symbologie topologique est indispensable à l’édition des données topologiques. Lorsque l’édition démarre, un rendu spécifique “Édition GRASS” est automatiquement appliqué à la couche et le moteur de rendu originel est restauré lorsque l’édition prend fin. Le style peut être modifié dans l’onglet “Style” des propriétés de la couche. Le style peut également être enregistré dans le fichier de projet ou dans un fichier séparé comme tout autre style. Si vous personnalisez le style, ne modifiez pas son nom car il est utilisé pour restaurer le style lorsque l’édition est à nouveau effective.
Astuce
N’enregistrez pas le fichier de projet lorsque la couche est en cours d’édition; la couche serait alors enregistrée avec le “Style d’édition” qui n’a aucun sens si la couche n’est pas en cours d’édition.
Le style est basé sur l’information topologique qui est temporairement ajoutée à la table des attributs dans le champ “topo_symbol”. Ce champ est automatiquement supprimé lorsque l’édition prend fin.
Astuce
Ne supprimez pas le champ “topo_symbol” de la table d’attributs, cela rendrait les entités non visibles car le moteur de rendu est basé sur le contenu de cette colonne.
Accrochage
Pour construire une surface, les sommets des enveloppes connectées doivent avoir exactement les mêmes coordonnées. Cela peut se faire en utilisant l’outil d’accrochage uniquement si le canevas de carte et la couche vecteur partagent le même SCR. Dans le cas contraire, la conversion des coordonnées de la couche au canevas peut entraîner de légères différences dues aux transformations de SCR.
Astuce
Utilisez le SCR de la couche pour le canevas de cartes lors de l’édition.
Limites
Éditer plusieurs couches en même temps au sein du même jeu de données vecteur n’est pas géré. Cela est du à l’impossibilité de gérer plusieurs piles d’annulation pour une seule source de données.
Sous Linux et macOS, une seule couche GRASS peut être modifiée à la fois. Cela est dû à un bug dans GRASS qui ne permet pas de fermer les pilotes de base de données dans un ordre aléatoire. Cela sera corrigé par les développeurs GRASS.
Astuce
Droits d’édition GRASS
Vous devez être propriétaire du Jeu de données
que vous voulez éditer. Il est impossible de modifier des informations d’un Jeu de données
qui n’est pas à vous, même si vous avez des droits en écriture.
23.13. L’outil région GRASS
La définition d’une région (définir une emprise spatiale de travail) dans GRASS est très importante pour travailler avec des couches rasters. Le travail d’analyse vecteur n’est, par défaut, pas limitée à une région définie. Mais, tous les rasters nouvellement créés auront l’emprise spatiale et la résolution de la région GRASS en cours d’utilisation, indépendamment de leur emprise et résolution d’origine. La région courante GRASS est stockée dans le fichier $LOCATION/$MAPSET/WIND
, et celui-ci définit les limites Nord, Sud, Est et Ouest, le nombre de lignes et de colonnes ainsi que la résolution spatiale horizontale et verticale.
Il est possible d’afficher ou de masquer l’emprise de la région GRASS dans QGIS à l’aide du bouton Afficher la région courante GRASS.
La région peut être modifiée dans l’onglet “Region” du panneau “Outils GRASS”. Saisissez l’emprise de la nouvelle région et la résolution et cliquez sur Appliquer. Si vous cliquez sur Sélectionnez l’emprise sur le canevas, vous pouvez sélectionner de manière interactive une nouvelle région avec votre souris dans le canevas de carte, en dessinant un rectangle.
Le module GRASS g.region
propose un grand nombre de paramètres pour définir de façon appropriée les limites et la résolution d’une région pour faire de l’analyse raster. Vous pouvez vous servir de ces paramètres dans la boîte à outils GRASS décrite dans la section La Boîte à outils GRASS.
23.14. La Boîte à outils GRASS
La fenêtre Ouvrir les outils GRASS donne accès aux fonctionnalités GRASS qui permettent de travailler sur les données d’un SECTEUR
et d’un Jeu de données
. Pour utiliser la Boîte à outils GRASS, vous devez ouvrir un SECTEUR
et un Jeu de données
sur lequel vous avez des droits d’écriture (que vous avez normalement si vous avez créé le Jeu de données
). Cela est nécessaire car les rasters et les vecteurs nouvellement créés lors des analyses doivent être écrits dans le SECTEUR
et Jeu de données
courant.
23.14.1. Travailler avec les modules GRASS
La console de la Boîte à outils GRASS vous donne accès à pratiquement tous les modules GRASS (plus de 300) en ligne de commande. Afin d’offrir un environnement de travail plus agréable, environ 200 d’entre eux sont disponibles via l’interface graphique de la Boîte à outils GRASS.
La liste des modules GRASS disponibles via la Boîte à outils de QGIS 3.22 est détaillée sur le wiki de GRASS : https://grasswiki.osgeo.org/wiki/GRASS-QGIS_relevant_module_list.
Il est aussi possible de personnaliser le contenu de la boîte à outils GRASS. Ceci est décrit dans la section Paramètrer la boîte à outils GRASS.
Comme indiqué dans Fig. 23.3, vous pouvez rechercher le module GRASS approprié en utilisant l’onglet Arbre des modules ou l’onglet Liste des modules .
Lorsque vous cliquez sur un module, un nouvel onglet apparaît proposant trois sous-onglets : Options, Rendu et Manuel.
Options
L’onglet Options propose une interface simplifiée où vous pouvez sélectionner un raster ou un vecteur en cours de visualisation dans QGIS et saisir les paramètres spécifiques au module avant de le lancer.
Tous les paramètres du module ne sont généralement pas fournis afin de simplifier les fenêtres. Pour utiliser des paramètres qui ne se trouvent pas dans la fenêtre, vous devez utiliser la console GRASS et lancer les modules en lignes de commande.
Une nouvelle fonctionnalité depuis QGIS 1.8.0 est l’ajout d’un bouton Afficher les options avancées >> en-dessous de la fenêtre simplifiée de l’onglet Options. Pour l’instant seul le module v.in.ascii
a été adapté afin de servir d’exemple d’utilisation mais d’autres le seront dans les prochaines versions de QGIS. La finalité est de pouvoir recourir à toutes les options de GRASS sans devoir ouvrir la console GRASS.
Rendu
L’onglet Rendu fournit des informations sur l’état de sortie du module. Quand vous cliquez sur le bouton Lancer, le module passe sur l’onglet Rendu et vous voyez les informations sur le processus en cours. Si tout se passe bien, vous verrez finalement le message Terminé avec succès
.
Manuel
L’onglet Manuel montre la page HTML d’aide du module GRASS. Vous pouvez vous en servir pour voir les autres paramètres du module et pour avoir une connaissance plus approfondie de l’objet du module. À la fin de chaque page d’aide d’un module, vous avez des liens vers Main Help index
(index principal), Thematic.index
(index par thème) et Full.index
(index complet). Ces liens vous donnent les mêmes informations que si vous utilisiez directement g.manual
.
Astuce
Afficher les résultats immédiatement
Si vous voulez voir immédiatement dans votre fenêtre carte le résultat des calculs du module, vous pouvez utiliser le bouton “Vue” au bas de l’onglet du module.
23.14.2. Exemples de modules GRASS
Les exemples suivants décrivent les possibilités de certains modules GRASS.
23.14.2.1. Création de courbes de niveau
Le premier exemple permet de créer une couche vectorielle de courbes de niveau à partir d’un modèle numérique de terrain (MNT). Ici, nous considérerons que le SECTEUR
Alaska a été installé comme décrit dans la section Importer des données dans un SECTEUR GRASS.
Premièrement, ouvrez le secteur en cliquant sur le bouton Ouvrir le jeu de données et choisissez le secteur Alaska.
Ouvrez la boite à outils à l’aide du bouton Ouvrir les outils GRASS.
Dans la liste des outils double-cliquez sur
.Maintenant, cliquez sur l’outil r.contour, cela ouvrira une fenêtre comme expliqué ci-dessus (voir Travailler avec les modules GRASS).
Dans le Nom de la couche raster en entrée saisissez
gtopo30
.Dans le champ Increment between Contour levels , saisissez la valeur 100. (Cela va créer des courbes de niveau tous les 100 mètres)
Saisisez dans le champ Nom de la couche vectorielle en sortie, le nom
ctour_100
.Cliquer sur Lancer pour lancer le traitement. Attendez quelques instants que le message
Terminé avec succès
apparaisse à l’écran. Cliquez enfin sur Vue puis Fermer.
Comme il s’agit d’une grande région, cela prendra un certain temps à s’afficher. Une fois l’affichage terminé, vous pouvez ouvrir la fenêtre de propriétés de la couche pour changer la couleur des courbes de niveau afin qu’elles apparaissent clairement au dessus de la couche raster d’élévation comme décrit dans Fenêtre Propriétés d’une couche vecteur.
Zoomez sur une petite région montagneuse du centre de l’Alaska. Avec un zoom important, vous constaterez que les courbes de niveau sont constituées de lignes brisées avec des angles vifs. GRASS offre la possibilité de généraliser les cartes vecteurs à l’aide de l’outil v.generalize, tout en conservant leur forme générale. L’outil utilise différents algorithmes ayant différents objectifs. Certains de ces algorithmes (par exemple : Douglas Peucker et Réduction de Vertex) simplifient les lignes en supprimant des sommets. La couche simplifiée se chargera plus rapidement. Cette commande est utile lorsque vous avez une couche vectorielle très détaillée et que vous créez une carte à petite échelle où les détails ne sont donc pas nécessaires.
Astuce
L’outil de simplification
Vous remarquerez que QGIS dispose de l’outil
qui fonctionne comme l’algorithme Douglas-Peucker de GRASS, v.generalize.Cependant, le but de cet exemple est différent. Les courbes de niveau créées avec r.contour
ont des angles vifs qui doivent être lissés. Parmi les algorithmes de v.generalize, il y a l’algorithme de Chaiken qui fait justement ça (comme Hermite splines). Gardez à l’esprit que ces algorithmes peuvent ajouter des sommets supplémentaires au vecteur, l’amenant à se charger encore plus lentement.
Ouvrez la Boîte à outils GRASS et double cliquez sur
. Cliquez alors sur le module v.generalize pour ouvrir sa fenêtre d’options.rifier que la couche vectorielle “ctour_100” apparait dans le champ Nom de la couche vectorielle en entrée.
Dans la liste des algorithmes choisissez Chaiken. Laisser les autres options par défaut et descendez à la dernière ligne pour donner le nom de la couche d’information à créer : Nom de la couche vectorielle en sortie “ctour_100_smooth”, et cliquez sur Lancer.
Cela peut prendre plusieurs minutes. Lorsque le texte
Terminé avec succès
apparait, cliquez sur le bouton Vue puis sur Fermer.Vous pouvez changer la couleur de cette couche vectorielle pour qu’elle apparaisse clairement sur le raster et qu’elle contraste aussi avec la couche de départ.Vous remarquerez que les nouvelles courbes de niveau ont des angles plus arrondis que l’original tout en restant fidèle à la forme globale d’origine.
Astuce
Autres utilisations de r.contour
La procédure décrite ci-dessus peut être utilisée dans d’autres cas similaires. Si vous disposez d’une couche d’informations raster représentant des précipitations, par exemple, vous pouvez utiliser la même méthode pour créer des isohyètes (lignes reliant des points d’égales quantités de précipitations).
23.14.2.2. Créer un ombrage avec effet 3D
Différentes méthodes sont utilisées pour afficher les modèles numérique de terrain et donner un effet 3D au carte. L’utilisation de courbes de niveau comme décrit ci-dessus est un des moyens souvent utilisés pour produire des cartes topographiques. Un autre moyen de rendre cet effet 3D est d’utiliser l’ombrage. L’ombrage est créé à partir du modèle numérique de terrain (MNT) en calculant d’abord les pentes et les expositions puis en simulant la position du soleil dans le ciel ce qui donne à chaque cellule une valeur de réflectance. Les pentes éclairées par le soleil sont plus claires et les pentes à l’abri du soleil sont plus sombres.
Commencez par ouvrir la couche raster
gtopo30
. Ouvrez la Boîte à outils GRASS et dans la catégorie Raster double cliquez sur .Cliquez ensuite sur r.shaded.relief pour lancer le module.
Changer l” Azimuth du soleil par rapport au nord, en degrés et mettez 315 au lieu de 270.
Saisissez
gtopo30_shade
comme nom pour la nouvelle couche d’ombrage et cliquez sur le bouton Lancer.Quand le calcul est terminé, ajoutez le raster d’ombrage à la fenêtre carte. Normalement, il devrait s’afficher en niveau de gris.
Pour voir les deux couches d’informations ombrage et
gtopo30
en même temps, placez la couche ombrage sous la couchegtopo30
dans le gestionnaire de couches et ouvrez la fenêtre de la couchegtopo30
, allez sur l’onglet Transparence et fixez la transparence à environ 25%.
Vous devriez maintenant avoir la couche gtopo30
en couleur et en transparence, affiché au dessus de la couche d’ombrage en niveau de gris. Pour bien visualiser l’effet d’ombrage, décochez puis recochez la couche gtopo30_shade
dans la légende.
Utiliser la console GRASS
L’extension Grass de QGIS est faite pour les utilisateurs ne connaissant pas GRASS et qui ne sont pas familiers avec les modules et les options. Ainsi, certains modules dans la Boîte à outils n’apparaissent pas avec toutes les options possibles et certains n’apparaissent pas du tout. La console GRASS donne accès à ces modules additionnels qui n’apparaissent pas dans la Boîte à outils et aux options supplémentaires des modules qui n’apparaissent que de façon simplifiée dans la Boîte à outils. Cet exemple montre l’utilisation d’une option supplémentaire du module r.shaded.relief utilisé ci-dessus.
Le module r.shaded.relief possède un paramètre zmult
qui multiplie la valeur de l’altitude (exprimé dans la même unité que les coordonnées X - Y) ce qui a pour effet d’accentuer le relief.
Ouvrez le raster
gtopo30
comme ci-dessus, lancez la Boîte à outils GRASS et ouvrez la console GRASS. Dans la console, entrez la ligne suivanter.shaded.relief map=gtopo30 shade=gtopo30_shade2 azimuth=315 zmult=3
et pressez Enter.Une fois le calcul terminé, allez sur l’onglet Parcourir et double-cliquez sur le nouveau raster
gtopo30_shade2
pour l’afficher dans QGIS.Comme expliqué ci-dessus, placez le raster d’ombrage sous le raster
gtopo30
puis vérifiez la transparence du rastergtopo30
. Vous devriez constater que le relief apparaît plus marqué qu’avec le premier raster d’ombrage.
23.14.2.3. Statistiques raster avec des couches vectorielles
L’exemple suivant comment un module GRASS peut aggréger des données raster et ajouter des colonnes de statistiques pour chaque polygone d’une couche vectorielle.
Encore une fois, nous allons utiliser le jeu de données Alaska. Référez vous à Importer des données dans un SECTEUR GRASS pour importer dans GRASS le fichier contenu dans le répertoire
shapefiles/trees.shp
.Un étape intermédiaire est nécessaire : des centroïdes doivent importés afin d’avoir une couche GRASS vecteur complète (qui inclue les contours et les centroïdes).
Dans la Boîte à outils choisissez
et ouvrez le module v.centroids.Entrez “forest_areas” comme nom de couche en sortie et lancez le module.
Maintenant ouvrez la couche vectorielle
forest_areas
et affichez les types de forêts avec différentes couleurs : caduques, persistentes, mélangées. Dans la fenêtre Propriétés, onglet symbologie , choisissez le Type de légende “Valeur unique” et le champ “VEGDESC” comme champ de classification. (Reportez vous aux explications de l’onglet Symbologie Onglet Symbologie de la section vecteur).Réouvrez la Boîte à outils GRASS et ouvrez
.Cliquez sur le module v.rast.stats. Saisissez
gtopo30
etforest_areas
.Un seul paramètre additionnel est requis : Entrez
elev
pour le column prefix, et cliquez sur le bouton Lancer. C’est un opération lourde qui peut durer longtemps (jusqu’à deux heures).Pour finir, ouvrez la table attributaire de
forest_areas
, et vérifiez que plusieurs nouvelles colonnes ont étés ajoutées dontelev_min
,elev_max
,elev_mean
, etc., pour chaque polygone de forêt.
23.14.3. Paramètrer la boîte à outils GRASS
Pratiquement tous les modules GRASS peuvent être ajoutés à la Boîte à outils. Une interface XML est fournie pour analyser les fichiers XML très simples qui configurent l’apparence et les paramètres des modules dans la boîte à outils.
Un exemple de fichier XML pour le module v.buffer
(v.buffer.qgm) est donné ci-dessous :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE qgisgrassmodule SYSTEM "http://mrcc.com/qgisgrassmodule.dtd">
<qgisgrassmodule label="Vector buffer" module="v.buffer">
<option key="input" typeoption="type" layeroption="layer" />
<option key="buffer"/>
<option key="output" />
</qgisgrassmodule>
L’analyseur lit cette définition et crée un nouvel onglet à l’intérieur de la Boîte à outils lorsque vous sélectionnez le module. Une description plus détaillée pour ajouter des modules, changer les groupes de modules, etc. est disponible sur https://qgis.org/fr/site/getinvolved/development/addinggrasstools.html.