Photos Google Takeout sans localisation ? Retrouver le GPS
Où passe la localisation dans un export Google Takeout, ce que veulent dire geoData et geoDataExif, pourquoi tant valent 0.0, et comment réécrire le vrai GPS.
Dans Google Photos, vous pouviez taper « Lisbonne » et retrouver le bon voyage. Après Takeout, les mêmes photos n'ont plus aucun lieu. Votre nouvelle application photo affiche une carte vide. Quelqu'un vous a dit que le GPS était dans les fichiers .json, vous en avez ouvert un et vous avez trouvé 0.0.
Voici ce qui s'est passé et ce que vous pouvez réellement récupérer.
Deux champs de localisation, et leur sens
Chaque JSON de Takeout contient deux blocs de localisation :
"geoData": {
"latitude": 38.7223,
"longitude": -9.1393,
"altitude": 12.0,
"latitudeSpan": 0.0,
"longitudeSpan": 0.0
},
"geoDataExif": {
"latitude": 38.7223,
"longitude": -9.1393,
"altitude": 12.0
}
geoDataExif est la position qui se trouvait dans l'EXIF de la photo quand vous l'avez envoyée. Si l'appareil photo de votre téléphone enregistrait le GPS, elle est ici. geoData est le lieu que Google Photos utilisait, qui commence par la même valeur mais inclut aussi les lieux que vous avez réglés ou corrigés à la main dans l'application.
Quand les deux blocs affichent 0.0 en latitude et en longitude, la photo n'a pas de lieu. Ce n'est pas un vrai endroit ; c'est la façon de Google d'écrire « inconnu ». Beaucoup de photos sont dans ce cas, plus qu'on ne le croit.
Pourquoi tant de photos n'ont pas de GPS
Les téléphones n'enregistrent les coordonnées que si l'accès à la position est autorisé pour l'appareil photo. Beaucoup de gens le désactivent. Les captures d'écran, les images WhatsApp, les images téléchargées et les scans n'ont jamais eu de GPS. Les anciens appareils photo n'avaient pas de récepteur.
Google Photos vous cachait cela. Il devinait les lieux à partir de votre historique des positions et des monuments qu'il reconnaissait sur l'image, et il affichait ces estimations dans l'application. Ces lieux estimés ne sont pas dans le JSON. Seules les positions explicites y sont : celles de l'EXIF, ou un lieu réglé à la main.
Sur une archive Takeout réelle de 991 photos, 12 % des JSON avaient de vraies coordonnées et 81 % le 0.0 de remplacement. Votre bibliothèque variera, mais si votre recherche dans Google Photos marchait pour des photos que vous n'aviez jamais géolocalisées, elle reposait sur des estimations que vous n'avez pas récupérées.
Pourquoi le GPS manque dans les fichiers eux-mêmes
Pour les photos qui avaient un GPS dans l'EXIF, Takeout rend en général le fichier avec cet EXIF intact. Beaucoup de photos d'appareil portent donc encore leurs coordonnées ; l'application vers laquelle vous avez migré ne les a simplement pas encore indexées, ou regardait un autre champ.
Les exceptions sont les photos dont l'EXIF a été supprimé avant l'envoi, et celles dont vous avez réglé le lieu dans Google Photos. Pour celles-là, le JSON est la seule copie. Si vous supprimez les JSON sans fusionner, ce lieu est perdu.
Vérifier ce que vous avez vraiment
Avec exiftool :
exiftool -r -if 'not $GPSLatitude' -ext jpg -ext heic -filename .
liste les images sans GPS dans le fichier. Comparez avec les JSON dont le geoData n'est pas nul, que vous pouvez chercher ainsi :
grep -L '"latitude": 0.0' *.json
L'intersection est ce que vous pouvez restaurer.
Restaurer les coordonnées à la main
exiftool peut copier geoData du JSON dans les balises GPS de l'EXIF :
exiftool -r -tagsfromfile "%d/%F.supplemental-metadata.json" \
-if '$GeoDataLatitude ne 0 or $GeoDataLongitude ne 0' \
"-GPSLatitude<GeoDataLatitude" "-GPSLatitudeRef<GeoDataLatitude" \
"-GPSLongitude<GeoDataLongitude" "-GPSLongitudeRef<GeoDataLongitude" \
"-GPSAltitude<GeoDataAltitude" \
-ext jpg -ext jpeg -ext heic -overwrite_original .
La ligne -if compte. Sans elle, vous écrivez 0.0, 0.0 dans des centaines de photos, et chaque vue carte de votre nouvelle application montre un amas dans l'Atlantique au large de l'Afrique de l'Ouest. Les balises Ref prennent le signe de la coordonnée, d'où le fait qu'elles sont réglées depuis la même valeur.
Recommencez avec "%d/%F.json" pour les anciens exports. Les fichiers aux noms de JSON tronqués et les doublons (1) demandent un traitement à part, décrit dans le guide exiftool.
Les restaurer avec l'application
Takeout JSON Metadata Fixer fait le même travail sans ligne de commande, sur Windows, Mac et Linux.
Elle lit geoData d'abord, puis geoDataExif, puis tout GPS déjà présent dans le fichier, et écrit les coordonnées dans l'EXIF de la photo. Elle traite 0.0, 0.0 comme inconnu et laisse ces photos sans lieu plutôt que de les mettre dans l'océan. Les dates sont écrites en même temps, puisque les deux problèmes vont presque toujours ensemble.
Si vous voulez le lieu dans le nom du fichier ou dans le dossier, l'application peut transformer les coordonnées en nom de ville et vous donner 2019-07-14-1105_Lisbonne.jpg, ou un dossier 2019/Lisbonne. Cette recherche utilise OpenStreetMap ; elle a donc besoin d'une connexion et envoie à ce service les coordonnées arrondies, et rien d'autre. Désactivez-la et l'application fonctionne entièrement hors ligne. Les photos sans lieu reçoivent simplement un nom sans lieu.
Les 1000 premières photos sont gratuites. Ensuite, un achat unique de 19,99 USD débloque l'illimité.
Pour les photos qui n'ont jamais eu de lieu
Rien dans l'export ne peut retrouver une position qui n'a jamais été enregistrée. Vous pouvez en ajouter une vous-même. Apple Photos, digiKam et Immich permettent de déposer une photo sur une carte. Pour un lot, exiftool peut régler les mêmes coordonnées sur tout un dossier, et l'application permet de fixer un lieu par dossier, tapé comme un nom de ville ou des coordonnées. C'est la méthode décrite pour les photos scannées.
Questions fréquentes
Google Photos affichait un lieu pour cette photo. Pourquoi le JSON est-il à zéro ?
Parce que ce lieu était estimé depuis votre historique des positions ou depuis le contenu de l'image, et les estimations ne sont pas exportées. Seules les coordonnées du fichier ou d'une modification manuelle le sont.
geoData ou geoDataExif ?
geoData inclut vos corrections manuelles et est sinon égal à geoDataExif. Utilisez geoData, et repliez-vous sur geoDataExif s'il est à zéro.
Immich ou Apple Photos liront-ils le GPS après la fusion ?
Oui. Les deux lisent les balises GPS standard de l'EXIF, là où la fusion les écrit. Immich les affiche sur sa carte après réindexation du fichier.
Puis-je au contraire retirer le GPS, pour la vie privée ?
Oui. exiftool -gps:all= -overwrite_original . le supprime d'un dossier. Faites-le après le classement si vous voulez quand même des noms de dossiers par lieu.