Action_ouvre_dalle

Transcription

Action_ouvre_dalle
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 1er caractère à gauche et de 26
caractères à partir du 1er 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 :
par défaut il s’appelle groupe1 renommer le en Orthophoto par
exemple
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