Vous disposez de relevés terrain avec de magnifiques clichés. Vous voulez afficher ces photos sur une carte dans QGIS. Alors, ce tutoriel SIG vous montre trois manières de géolocaliser des photos sur le logiciel.
- La première technique de géolocalisation des photos comporte plusieurs étapes. (I.1) Elle enseigne comment extraire les longitudes et les latitudes des photos depuis ExifTool. (I.2) Puis, cette extraction d’information géographique permet la création d’un vecteur. (I.3) Vous paramétrez la table attributaire de la donnée afin d’associer des pièces jointes à des géométries. (I.4) Enfin, les photos sont affichées sur la carte grâce à une action.
- La fonctionnalité de QGIS « géolocalisation des photos » simplifie les trois étapes (I.1 à I.3).
- L’extension QGIS ImportPhotos inclue les quatre étapes de la première méthode de localisation des photos sur une carte.
Les photos sont acquises par drone dans le sud du Morbihan entre Lorient et Vannes pour cet exemple (figure 1).
- I. Techniques de localisation des photos sur une carte
- II. Géolocalisation des photos dans la boîte à outils de QGIS
- III. Extension QGIS ImportPhotos
I. Techniques de localisation des photos sur une carte
I.1. ExifTool : Extraction des coordonnées géographiques des photos
Une photo possède de nombreuses informations associées à la date, aux caractéristiques de l’appareil et au lieu de la prise de vue. Vous pouvez voir ces métadonnées avec différents logiciels comme par exemple Gimp ou ExifTool. L’application ExifTool permet d’extraire les longitudes et les latitudes des photos en ligne de commande. Vous pouvez télécharger l’exécutable Windows directement sur le site d’ExifTool et le dézipper. Vous paramétrez les variables d’environnement Windows afin que l’OS associe l’utilitaire au chemin de l’exécutable exiftool.exe. Puis, vous saisissez la ligne suivante dans l’invite de commande Windows pour lire les métadonnées d’une photo :
exiftool {nom du fichier}
La figure 2 montre une extraction des métadonnées de la photo choisie avec notamment les longitudes et les latitudes.
ExifTool possède plusieurs options en ligne de commande. Vous extrayez les longitudes et les latitudes des fichiers respectivement grâce aux options -gpslongitude et -gpslatitude. -directory correspond au chemin des fichiers et -filename au nom du fichier. Le traitement de toutes les photos d’un répertoire et de sous-répertoires est possible avec l’argument -r (Recursively process subdirectories). Plusieurs formats de sortie sont disponibles comme par exemple -T pour lister les informations en tableur ou en format csv (-csv). On a donc :
exiftool -directory -filename -gpslatitude -gpslongitude -T -r {chemin des photos} > data.txt
Une extraction des informations du fichier produit est visible sur la figure 3 ci-après. On note que les coordonnées géographiques sont en Degrés Minutes Secondes (DMS, en anglais Degrees, Minutes, and Seconds).
I.2. Création de la couche SIG avec le fichier texte
Dans cette section, vous créez la couche SIG à partir du fichier texte contenant les coordonnées géographiques. Puis, vous formatez la table attributaire de la donnée pour associer chaque photo à la géométrie.
Un vecteur est par définition un objet géographique avec une ou plusieurs géométries associés à des informations attributaires. Le fichier texte contient les données spatialisées nécessaires à la création de la géométrie ponctuelle. Enfin, le chemin et le nom de chaque photo sont des attributs liés à la localisation de la prise de vue.
I.2.1. Ajout d’une couche de texte délimité
Dans QGIS, vous ajoutez une couche de texte délimité en important le fichier data.txt. Une nouvelle fenêtre apparaît dans QGIS (figure 4). Vous pouvez nommer la couche SIG qui sera créée. Ensuite, vous paramétrez les caractéristiques des données du fichier texte :
- le format de fichier : les valeurs attributaires sont séparées par des tabulations Tab.
- les options des champs et enregistrements : vous décochez les en-têtes en première ligne puisqu’aucun nom de colonne n’apparaît dans le fichier.
- la définition de la géométrie : la géométrie est de type ponctuel. Vous choisissez la longitude pour le champ X et la champ Y pour la latitude. Si le fichier possède une donnée d’altitude, vous pouvez l’affecter au champ Z. Les coordonnées sont de type DMS en système de coordonnées de référence EPSG:4326 – WGS 84.
- enfin, les paramètres de la couche : vous pouvez sélectionner la création d’un index spatial.
Vous visualisez un échantillon de la table attributaire de la couche créée. Le fichier texte n’ayant pas d’en-tête, les noms des champs commencent par le préfixe field_.
Enfin, vous ajoutez la couche qui apparaît dans le panneau des couches et sur le canevas de la carte (figure 5). Vous ouvrez la table attributaire afin de vérifier rapidement les valeurs insérées.
I.2.2. Modification des champs de la table attributaire
Attention, la couche créée est temporaire. Vous devez enregistrer la couche en fichier natif par exemple en format shapefile afin de modifier la structure de la table attributaire. Puis, Vous changez les noms des champs attributaires dans les propriétés de la couche SIG dans l’onglet Champs (figure 6).
I.2.3. Création d’un nouveau champ dans la table attributaire
La calculatrice de champ de QGIS permet la création d’un nouveau champ dont les valeurs sont issues d’une expression (figure 7). Vous créez un nouveau champ de type texte nommé photo par exemple. La valeur insérée est la concaténation du champ représentant le chemin de la photo et celui du nom de la photo. Alors, vous saisissez dans le formulaire d’expression :
concat( "chemin" ,'/', "fichier" )
chemin et fichier correspondent aux noms des champs de la table attributaire précédemment modifiés. Enfin, vous sélectionnez OK pour créer le nouveau champ de la couche SIG.
I.3. Formater la table attributaire pour associer les photos
Les champs attributaires sont définis par des types de données comme un texte, un nombre, une date, etc. Vous formatez les champs de la table afin de retourner une valeur prédéterminée. Cela guide également l’utilisateur dans le choix de la valeur à saisir. Par exemple, vous pouvez utiliser un calendrier pour un champ attributaire de type date. De nombreux types de formulaires existent dans les propriétés de la couche SIG en sélectionnant modification des champs attributaires.
Ici, vous devez définir le champ attributaire contenant le chemin et le nom de la photo en format pièce jointe (figure 8). En clair, QGIS associe la valeur textuelle du chemin de la photo à une image. Or, vous avez déjà créé ce champ attributaire nommé photo dans la section précédente.
I.4. Affichage des photos sur la carte
Vous pouvez afficher une photo sur une carte QGIS :
- en cliquant simplement sur l’identification de l’objet géographique (I.4.1);
- par la création d’une action (I.4.2).
I.4.1. Affichage simple des photos
L’identification d’une entité géographique ouvre le panneau des résultats présentant les valeurs attributaires. L’affichage normal montre le chemin absolu ou relatif et le nom de la photo. Si vous changez le mode d’affichage des résultats via l’icône ci-dessous alors la photo s’affiche dans le panneau lors de l’identification sur le canevas de la carte (figure 9).
I.4.2. Créer une action dans QGIS pour montrer les photos
QGIS permet la création d’action lors de la sélection de l’entité géographique sur le canevas de la carte. Vous ajoutez une action dans les propriétés de la couche SIG. Dans la fenêtre (figure 10), vous choisissez le type d’action « Ouvrir » puis vous décrivez l’action. Les champs d’application de l’action concernent l’Entité géographique sélectionnée et le Canevas. Puis, vous insérez le champ attributaire contenant le chemin et le nom des photos dans le texte de l’action.
Puis, vous devez sélectionner l’action souhaitée dans la barre d’outils. Enfin, la sélection d’un point sur la carte génère l’ouverture d’une photo dans un autre applicatif que QGIS.
Vous trouvez toutes ces étapes chronophages pour localiser les photos sur une carte? Alors, la section suivante vous présente une fonctionnalité native de QGIS qui synthétise les étapes I.1 à I.3.
II. Géolocalisation des photos dans la boîte à outils de QGIS
La fonctionnalité « Importer des photos géolocalisées » se trouve dans la boîte à outils de QGIS (figure 12). Les paramètres proposent de choisir le dossier source contenant les photos. Et, le scan récursif prend en charge les fichiers des sous-répertoires du dossier source comparable à la commande -r d’ExifTool.
Le vecteur créé est de type ponctuel. Comme le montre la figure 13, les informations des photos retenues dans la table attributaire sont :
- photo : le chemin et le nom de la photo;
- filename : nom du fichier;
- directory : le répertoire de la photo;
- altitude : l’altitude de la prise de vue si disponible;
- direction : la direction de la prise de vue si disponible;
- rotation : la rotation de la photo si disponible;
- la longitude et la latitude;
- timestamp : la date de la prise de vue.
Vous remarquerez le formatage du champ photo en pièce jointe dans les propriétés de la couche créée. Cela favorise l’affichage d’une photo sur la carte par l’identification de l’objet géographique ponctuel.
III. Extension QGIS ImportPhotos
L’extension QGIS ImportPhotos garantie une prise en charge plus approfondie d’un répertoire contenant des photos.
III.1. Installation du plugin QGIS
Le plugin ImportPhotos est disponible dans le dépôt officiel de QGIS depuis la version 2.0.0 du logiciel. Plus de détails sont disponibles sur le site de QGIS. Dans la barre des menus Extensions, sélectionnez Installer/Gérer les extensions. La fenêtre des extensions met à disposition un moteur de recherche pour trouver plus rapidement le plugin souhaité. Vous sélectionnez ImportPhotos (figure 14) puis le bouton Installer le plugin ajoute le module dans QGIS.
III.2. Utilisation de l’extension ImportPhotos
L’extension ImportPhotos se situe dans le menu Extensions. Trois icônes sont associées. Le premier permet d’importer toutes les photos depuis un répertoire. Le fichier vectoriel en sortie est un geopackage contenant les objets géographiques des photos. Les attributs associés au vecteur sont plus nombreux que l’outil « Importer des photos géolocalisées » de QGIS. Les informations concernant le capteur de l’appareil photo figurent dans la table attributaire.
L’extension ImportPhotos favorisent également le défilement des photos dans le logiciel QGIS avec la sélection de l’entité ponctuelle concernée (figure 16).
En conclusion, ce tutoriel SIG a montré comment afficher des photos sur une carte dans QGIS. Trois solutions différentes génèrent la création d’un vecteur de type MultiPoint. Chaque photo importée depuis un répertoire représente une entité géométrique de la couche SIG. Ainsi, la première méthode utilise l’outil ExifTool qui extrait les longitudes et les latitudes des photos. Le fichier en sortie est ensuite transformé en vecteur dans QGIS. Le formatage du champ attributaire en pièce jointe associe la valeur textuelle du chemin de la photo à la représentation de l’image. Enfin, le mode action génère l’affichage de la photo lors de la sélection de la géométrie ponctuelle sur le canevas de la carte. La seconde technique est l’utilisation de la fonctionnalité native de QGIS « Importer des photos géolocalisées ». Enfin, le plugin QGIS ImportPhotos propose une utilisation plus approfondie des photos localisées sur la carte.
- QGIS: ajouter automatiquement l’attribut d’une autre coucheVous dessinez un point sur une couche SIG et vous voulez connaître la commune associée? Dans QGIS, il est possible d’ajouter automatiquement l’attribut d’une autre couche dans une donnée cible. Dans ce tutoriel… Continuer à lire
- GeoJSON dans QGIS : ouvrir, visualiser et exporter un fichierLe format GeoJSON est un format d’encodage de données géospatiales basé sur JavaScript Object Notation (JSON). Pour rappel, c’est un format standardisé par l’Internet Engineering Task Force (IETF) qui a publié le référentiel… Continuer à lire
- Identifiant unique auto-incrémenté dans QGISLa création d’un identifiant unique affecté aux entités d’un vecteur garantit l’indexation de chaque objet géographique. L’attribution d’une numérotation distincte assure le classement des entités vectorielles. Ce tutoriel SIG montre comment ajouter un… Continuer à lire
- Déplacer une entité dans QGISCe tutoriel QGIS porte sur la numérisation d’un vecteur. Il s’agit de déplacer une entité d’une couche vectorielle dans QGIS. La manipulation des données géographiques s’appuie sur l’exemple des départements français. Alors, comment… Continuer à lire
Un grand merci pour ce tutoriel clair et pratique !
Pierre,
Merci pour votre retour.
Cdlt,
FD