Travailler sur un catalogue d’images aériennes ou satellitaires avec QGis 3

Quand on dispose d’une couverture d’images aériennes ou satellitaires, géoréférencées il faut trouver un moyen efficace d’accéder au images individuelles pour, par exemple, procéder à la numérisation d’entités géographiques.

Avec QGis 3 on dispose d’un outil puissant, l’index des tuiles. Il permet de créer une couche avec les emprises des images individuelles avec un lien vers les fichiers image.

Sur cette couche , on peut définir une action déclenchée sur le clic de la souris sur une emprise, pour charger directement l’image concernée dans la fenêtre cartographique.

Voici le mode opératoire.

Préparation du répertoire d’images

Nous allons prendre le cas le plus simple, c’est à dire une série d’images geoTiff. Le cas des autres images n’est pas très différent, mais plus ennuyeux. En effet, l’outil « Index des tuiles » permet de charger l’ensemble d’un répertoire. Dans le cas des images geoTiff, il suffit de copier les fichiers .tif dans un nouveau répertoire. Par contre pour les images qui nécessitent d’un fichier « world » (.tfw, .jgw, .pgw,…) il faudra cocher une par une les images pour que l’outil ne tente pas de charger dans l’index les fichiers « world », ou tout autre fichier non raster présent dans le répertoire.

Création de l’index des tuiles

Ouvrez la fenêtre de l’outil Index des tuiles à partir du menu Raster ->Divers -> Index des tuiles…

Cliquez sur le bouton « … » à côté de Fichiers source

Puis sur le bouton « Ajouter un répertoire« . Pointez sur le répertoire contenant les images.

Toutes les images sont cochées pour chargement dans l’index. C’est ici que, s’il y a des fichiers « world » il faudra décocher ces fichiers car ils provoqueront une erreur d’exécution (message « Valeur de Paramètre LAYERS incorrect »).

Cliquez sur OK pour fermer la fenêtre de sélection multiple.

Le champ Fichiers source indique le nombre d’images à charger.

Cliquez sur le bouton « … » à côté de Index des tuiles, puis sur Enregistrer vers un fichier et définissez l’emplacement et le nom du fichier d’index.

Cliquez sur Exécuter.

La couche d’emprises est chargée dans la fenêtre cartographique.

Le champ par défaut « location » contient le chemin des images individuelles.

QGis ne dispose pas d’outil prêt à l’emploi pour charger les images à partir du fichier d’index. Mais on peut palier à ce manque très facilement en définissant une action sur la couche index.

Définir l’action de chargement des tuiles

Ouvrez la fenêtre de propriétés de la couche index.

Cliquez sur l’onglet Actions automatiques (1) , puis sur Ajouter une action (2).

La fenêtre de définition des actions s’ouvre.

Dans Type, sélectionnez Python.

Rentrez une description, par exemple « Chargement des tuiles« . C’est obligatoire car ce texte sera utilisé comme élément de menu de l’outil Actions.

Dans la fenêtre Texte de l’action, rentrez le code suivant

import os
import ntpath
def getVectorLayerByName(NomCouche):
    layermap=QgsProject.instance().mapLayers()
    for name, layer in layermap.items():
        if layer.name()==NomCouche:
            if layer.isValid():
               return layer
            else:
               return None
mypath="[% "location" %]"
instRegistry = QgsProject.instance()
nom=ntpath.basename("[% "location" %]")
macouche = instRegistry.mapLayersByName(nom)
courant=qgis.utils.iface.mapCanvas().currentLayer()
raster_ouvert=getVectorLayerByName(nom)
if raster_ouvert is not None:
    QgsProject.instance().removeMapLayer(raster_ouvert.id())
    qgis.utils.iface.mapCanvas().refresh()
else:
    qgis.utils.iface.addRasterLayer(mypath,nom)
    qgis.utils.iface.setActiveLayer(courant)

Ce code récupère le contenu du champ « location« , puis le nom du fichier qui sera utilisé comme nom de la couche dans le panneau « Couches » de QGis. Avec ces deux éléments, il charge l’image correspondante.

Cliquez sur OK.

Utilisation de l’action

Pour exécuter cette action, il suffit de sélectionner la couche index dans le panneau Couches (Les actions s’exécutent sur la couche active).

Cliquez sur le bouton Activer une action et sélectionnez l’action définie dans l’étape précédente (Chargement des tuiles).

Il suffit maintenant de cliquer sur une emprise pour que l’image correspondante soit ajoutée aux couches.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *