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.
Bonjour,
J’ai des cartes sur fond d’image sat, exportées sous arcmap en Pdf. comment générer ces cartes .pdf en tuiles mbtiles pour utilisation dans smartphone avec mapit ?
Merci !!!!
Bonjour
Article très clair et instructif, cependant le script ne fonctionne pas ou plus. Voila le message d’erreur:
File « », line 2
Publié le 28 novembre 2019 par Atilio Francois
^
SyntaxError: invalid syntax
Version de Python :
3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]