Direction Départementale des Territoires et de la Mer de Seine-Maritime Mission Connaissance des Territoires Mise en place d'une action pour ouvrir les dalles dans QGIS Rédacteur Hamidou DIOP Remerciements : DREAL Centrale : Philippe Miche pour sa présentation du script "Ajouter des dalles lors de la Journée CMSIG de TOURS" Didier LECLERC CMSIG Normandie Centre. La communauté Laboqgis 1
Sommaire I. Création d une grille par le plugin Image Boundary... 3 1.2 Charger le plugin Image Boundary... 3 1.3 Création de la grille proprement dite grâce à Image Boundary.... 4 1.4 Ajouter l'action... 7 II. Création d une tuile par le menu Raster--> Divers -> Index des tuiles... 9 1.5 Préparation de la table attributaire... 10 1.6 Paramétrage de l action... 12 III. Création de groupes... 14 2
Cette fiche est une compilation des questions réponses formulées par la communauté des utilisateurs QGIS de la liste de diffusion laboqgis et il a pour objectif d expliquer deux méthodologies permettant d afficher les couches Rasters grâce à une action définie dans les propriétés de la couche. Le principe consiste à créer une grille vecteur dont le tableau attributaire contient à la fois un champ qui définit le chemin du répertoire des dalles et un champ décrivant le nom des dalles. Pour créer cette grille on peut : soit utiliser le plugin Image Boundary soit des fonctions GDAL contenues dans le menu raster de QGIS. I. Création d une grille par le plugin Image Boundary 1.2 Charger le plugin Image Boundary Commencer par charger le plugin s il n est pas déjà chargé dans QGIS pour se faire : Aller dans le menu Extension l indique la figure suivante : Installer / gérer des extensions comme La fenêtre suivante s affiche : 3
Faire une recherche en tapant 'im' sur la case de recherche et cocher la case Image Boundary comme indiqué ci-dessus puis Close. L icône correspondant s ajoute sur la fenêtre et cliquer sur ce bouton :. 1.3 Création de la grille proprement dite grâce à Image Boundary. Cliquer sur ce bouton et la fenêtre suivante s affiche : Sélectionnez le type de format ici.ecw pour nos Orthophotos (ou tout autre format d'image : TIF,JP2...) puis cliquer sur le bouton à gauche de filtrer suivante s affiche :. La fenêtre 4
Aller dans le répertoire où sont stockées vos dalles et sélectionner le répertoire et le contenu du répertoire s affiche,en déroulant le + devant le nom d une dalle vous voyez affiché le répertoire le format, la taille, le système de projection, le nombre de bandes, la résolution de l'image Par défaut laisser la case Extend cochée et cliquer ensuite sur le bouton Process image( ). Le processus se met en route et la fenêtre suivante s affiche : 5
Le bouton Process n est plus actif et le bouton Create Vector Grid Layer prend le relais cliquer sur ce bouton. QGIS vous propose de stocker le résultat (un fichier shp) sous un répertoire de votre choix. Cliquer sur Save, et le processus de création de la grille se met en route et à la fin la fenêtre suivante s affiche : Cliquer sur Yes et la couche vient s ajouter sur votre fenêtre carte. Penser refermer la fenêtre en cliquant sur la croix de fermeture de fenêtre de Windows. à 6
Vous avez ainsi une carte qui ressemble à celle-la couvrant votre territoire. Observons le contenu de la table attributaire en faisant un clic droit sur le nom de la couche Ouvrir la table des attributs. La fenêtre suivante s affiche : Les deux champs qui nous intéressent particulièrement sont les champs Image (qui contient le nom de la dalle) et Path(qui contient le chemin). 1.4 Ajouter l'action Pour cela aller dans la propriété de la couche par un clic-droit sur le nom de la couche puis Propriété, on va rajouter le script en encadré ci-dessous dans la case action comme indiqué sur cette fenêtre : 7
import os chemin=os.path.dirname(unicode( qgis.utils.iface.activelayer().dataprovider().datasourceuri() ) ) fic= "[% "PATH" %]" +"\\"+ "[% "IMAGE" %]" layer = qgis.utils.iface.activelayer() qgis.utils.iface.addrasterlayer(fic,"[% "IMAGE" %]") qgis.utils.iface.setactivelayer(layer) Dans Action ajouter ce texte dans le formulaire 'Action' Dans la case Nom donner un nom à cette action ici image_boundary_ortho Dans Type d action sélectionner Python Cliquer sur le bouton Ajouter l action à la liste Sauvegarder le style en cliquant sur le bouton Enregistrer le style --> fichier de style de couche qgis. Aller dans le répertoire de votre choix et donner un nom à ce style (généralement le même que la couche à laquelle elle se rapporte (.qml). Cliquer ensuite sur le Sauvegarder comme défaut. Puis cliquer Ok. Le bouton action devient actif vous pouvez le sélection et cliquer sur une case de la grille pour le voir afficher. 8
II. Création d une tuile par le menu Raster--> Divers -> Index des tuiles C est une autre méthode qui permet de créer une grille vecteur et d afficher des dalles. Pour se faire aller dans le menu Raster -> Divers ->Index des tuiles comme l indique la figure suivante : La fenêtre suivante s affiche : Dans répertoire choisissez le répertoire où sont stockées vos dalles 9
Dans fichier de sortie sélectionner le répertoire de stockage du fichier shp de sortie avec le nom de la couche de grille sous format shp. Laisser la case Chargé dans la carte une fois terminé cochée. Puis cliquer sur Ok. Le processus de création de la couche se poursuit et celle-ci et rajoutée à la fin du processus. Cliquer sur close une fois la couche ajouter 1.5 Préparation de la table attributaire L'objectif et d'isoler le chemin des couches et le nom des dalles. Cette table attributaire créée correspond à ça : Un seul champ qui contient à la fois le chemin et le nom des dalles, on va séparer le chemin composé ici de 36 caractères depuis le 1 er caractère à gauche et de 26 caractères à partir du 1 er caractère à droite. On va utiliser les fonctions de chaîne de QGIS. Pour se faire : Rendons la couche en mode édition depuis la table attributaire en cliquant sur le crayon Cliquer sur la calculatrice 10
fenêtre suivante s affiche : On utilise la fonction left pour récupérer : Du premier caractère à gauche au dernier caractère avant le premier caractère du nom de la dalle nous avons ici 36 caractères. Ceci est visible en bas avec l aperçu. Cliquer sur Ok et on va recommencer avec la même opération cette fois soit avec : la fonction substr pour isoler le nom de la dalle voir la figure suivante : 11
soit avec la fonction right comme l indique la figure suivante : Dans les deux cas choisissez Ok Sortez en mode édition en recliquant sur le crayon et surtout cliquer sur Save pour sauvegarder votre couche. La table attributaire ressemble à ça : On voit bien apparaître les deux champs que nous venons de rajouter. 1.6 Paramétrage de l action. Pour ajouter l action cliquer sur le nom de la couche puis propriété. La fenêtre suivante s affiche : 12
Dans Action ajouter ce texte : import os repertoire = os.path.dirname( unicode( qgis.utils.iface.activelayer().dataprovider().datasourceuri() ) ) fic = "[% "repertoire" %]" + "[% "dalle" %]" layer = qgis.utils.iface.activelayer() qgis.utils.iface.addrasterlayer(fic,"[% "dalle" %]") qgis.utils.iface.setactivelayer(layer) Veuillez à ce que les noms des champs du répertoire et de la dalle soit les mêmes que ceux contenus dans le code. Au dessus du code de l action : Donner un nom à votre action. Un nom suffisamment évocateur pour se rappeler à quoi il sert parmi les différentes actions que vous aurez à créer : ici on va l appeler Ouvrir orthophoto_2012. Au dessus du nom de l action choisissez le type d action : ici Python En bas de la case action cliquer sur le bouton : Ajouter l action à la liste Le nom de l action apparaît dans la liste des actions tout à fait en haut. Sauvegarder le style en cliquant sur le bouton Enregistrer le Style. Aller dans le répertoire de votre choix et donnez lui un nom qui porte le même que celui de la couche (il aura comme extenxion.qml et n écrasera en aucun cas la couche à laquelle elle se rapporte ( qui, elle est sous format shp). Une fois le fichier créé cliquer sur le bouton Sauvegarder comme défaut. Cliquer sur ok et le bouton de l action devient actif. Cliquer dessus puis aller dans une case de la grille pour afficher une dalle. 13
Normalement la dalle s affiche. Remarque : Vous pouvez afficher 4 dalles en même temps il suffit de sélectionner le bouton action et de cliquer à l intersection de quatre dalles. III. Création de groupes Les groupes permettent de ranger les couches selon leur thématique : 1. Orthophoto 2. Scan25 3. Cadastre 4.. Ainsi vous pouvez activer désactiver ses couches en même temps. Pour créer un groupe aller dans le contrôle des couches et faites un clic droit, la fenêtre suivante s affiche : Cliquer sur ajouter un groupe la fenêtre suivante s affiche : exemple par défaut il s appelle groupe1 renommer le en Orthophoto par Sélectionner toutes les dalles et faites les glisser sous le nom du groupe. Vous devez avoir quelque chose qui ressemble à ça : 14
En cliquant sur le signe devant le nom du groupe vous réduisez l affichage des noms des dalles. Si ce n est pas le cas vous avez manquer de ranger normalement les dalles sous le groupe. En décochant ainsi le nom du groupe vous désactiver l'affichage de toutes les dalles en même temps. Vous pouvez aussi désactiver que quelques couches en déployant tout le groupe et décocher la ou les dalle(s) qui vous intéressent. 15