Introduction

Les fichiers photo regorgent de mĂ©tadonnĂ©es. Cela peut poser de nombreux problĂšmes de vie privĂ©e lorsque ces fichiers sont partagĂ©s largement sur les internets, mais cela peut aussi ĂȘtre utile tant qu’ils sont gardĂ©s dans un cadre restreint.

C’est tout particuliĂšrement le cas des donnĂ©es de gĂ©olocalisation.

Votre smartphone peut (par dĂ©faut ou pas) gĂ©olocaliser l’ensemble des photos (ou vidĂ©os d’ailleurs) qu’il prend. Et cela permet de pouvoir les retrouver facilement sur une carte :

Immich - vue carte

Cependant, lorsque vous prenez des photos avec un appareil photo numĂ©rique, Ă  moins que celui-ci ne dispose d’un GPS, vous ne disposerez sans doute pas de la gĂ©olocalisation de vos photos.

Cet article vise à montrer comment lire et modifier les métadonnées associées.

Prérequis

Pour manipuler les mĂ©tadonnĂ©es, nous aurons besoin de l’outil ExifTool.

Le comment

Lire

Voici la commande pour lire les donnĂ©es de gĂ©olocalisation d’une photo :

exiftool -api geolocation "-geolocation*" test.jpg

Écrire

Ajouter depuis une ville ou village

exiftool -xmp:iptc:geolocate="paris,fr" test.jpg

Ajouter des coordonnées précises

exiftool -GPSLatitudeRef=N -GPSLatitude=48.85341 -GPSLongitudeRef=E -GPSLongitude=2.3488 photo.jpg

Ou la commande suivante pour Ă©craser le fichier d’origine :

exiftool -overwrite_original -GPSLatitudeRef=N -GPSLatitude=48.85341 -GPSLongitudeRef=E -GPSLongitude=2.3488 photo.jpg

Depuis les métadonnées

Comme il peut ĂȘtre fastidieux d’aller chercher les mĂ©tadonnĂ©es de l’ensemble de ses photos, particulierement lorsque vous souhaitez ajouter les informations pour un album oĂč toutes les photos ne sont pas prises au mĂȘme endroit, il est possible d’utiliser Darktable.

Cet outil de traitement d’image proposer une interface pour ajouter les donnĂ©es de gĂ©olocalisation.

Pour cela,

Cependant les donnĂ©es ne sont pas inscrites dans le fichier lui-mĂȘme, mais dans un fichier de mĂ©tadonnĂ©es annexe (.xmp - on retrouve souvent le terme sidecar file sur les internets).

Il faudra donc dans un second temps utiliser exiftool pour modifier les fichiers en allant chercher les informations dans le fichier annexe.

Pour cela, nous faciliter la tĂąche (et simplifier les lignes de commande), nous allons utiliser un fichier d’argument mis Ă  disposition par les dĂ©veloppeurs d’exiftool :

#------------------------------------------------------------------------------
# File:         xmp2gps.args
#
# Description:  Argument file for copying GPS information from XMP to EXIF
#
# Usage:        exiftool -tagsFromFile SRCFILE -@ xmp2gps.args DSTFILE
#
# Requires:     ExifTool version 10.96 or later
#
# Revisions:    2009/01/09 - P. Harvey Created
#               2018/05/07 - PH Handle GPSDestLatitude/LongitudeRef tags
#
# Notes:     1) Most of the GPS tags are copied by the first argument, but
#               the coordinate references and date/time values are stored
#               separately in EXIF, so they must be handled separately.
#               A bit of magic is employed by ExifTool to extract the date
#               and time parts respectively when writing date-only and
#               time-only tags with a date/time value.
#
#            2) These arguments will not delete existing GPS tags which are
#               missing from the XMP.  The GPS tags should be deleted with
#               "-gps:all=" first if required.
#------------------------------------------------------------------------------
-GPS:all < XMP-exif:all
-GPS:GPSLatitudeRef < Composite:GPSLatitudeRef
-GPS:GPSLongitudeRef < Composite:GPSLongitudeRef
-GPS:GPSDestLatitudeRef < Composite:GPSDestLatitudeRef
-GPS:GPSDestLongitudeRef < Composite:GPSDestLongitudeRef
-GPS:GPSDateStamp < XMP-exif:GPSDateTime
-GPS:GPSTimeStamp < XMP-exif:GPSDateTime
# end

Il sera donc possible d’utiliser la commande suivante pour copier les donnĂ©es du fichier xmp vers le fichier cible :

exiftool -overwrite_original -tagsFromFile SRCFILE.xmp -@ ~/xmp2gps.args DSTFILE.jpg

Il est également possible de réaliser cette opération pour un répertoire entier :

exiftool -overwrite_original -TagsFromFile %f.JPG.xmp -@ ~/xmp2gps.args -ext JPG .

Depuis une trace GPS [draft]

Il est Ă©galement possible d’importer les mĂ©tadonnĂ©es directement depuis une trace GPS enregistrĂ©e par une montre ou un smartphone.

Je n’ai pas encore expĂ©rimentĂ© cette option.

Cette section sera mise Ă  jour dĂšs que cela sera le cas.

Bonus

Par dĂ©faut, exiftool utilise une base de donnĂ©es de villes supĂ©rieure Ă  2000 habitants. Si vous souhaitez qu’il puisse vous indiquer de villes entre 500 et 2000 habitants, il faudra la tĂ©lĂ©charger et ajuster la configuration.

La base de donnĂ©es est disponible sur le site d’exiftool.

$ wget https://exiftool.org/Geolocation500-20241021.zip
$ mv Geolocation500-20241021.zip DESTFOLDER/
$ unzip Geolocation500-20241021.zip

Créer le fichier de configuration :

cp /usr/share/perl-image-exiftool/config_files/example.config ~/.ExifTool_config

Ajuster la configuration en ajoutant la ligne suivante juste avant la fin :

$Image::ExifTool::Geolocation::geoDir = '/PATH/TO/Geolocation500';

Sources