Takeout JSON

Foto di Google Takeout senza posizione? Ripristina il GPS

Dove finisce la posizione in un'esportazione di Google Takeout, cosa vogliono dire geoData e geoDataExif, perché molte dicono 0.0 e come riscrivere il GPS vero.

In Google Foto potevi cercare "Firenze" e trovare il viaggio giusto. Dopo Takeout, le stesse foto non hanno nessuna posizione. La nuova app mostra una mappa vuota. Qualcuno ti ha detto che il GPS è nei file .json, ne hai aperto uno e hai trovato 0.0.

Ecco cosa è successo e cosa puoi realisticamente recuperare.

Due campi per la posizione, e cosa significano

Ogni JSON di Takeout ha due blocchi per la posizione:

"geoData": {
  "latitude": 43.7696,
  "longitude": 11.2558,
  "altitude": 50.0,
  "latitudeSpan": 0.0,
  "longitudeSpan": 0.0
},
"geoDataExif": {
  "latitude": 43.7696,
  "longitude": 11.2558,
  "altitude": 50.0
}

geoDataExif è la posizione che stava nell'EXIF della foto quando l'hai caricata. Se la fotocamera del telefono ha registrato il GPS, è qui. geoData è la posizione che usava Google Foto, che parte dallo stesso valore ma include anche i luoghi che hai impostato o corretto a mano nell'app.

Quando entrambi i blocchi dicono 0.0 per latitudine e longitudine, la foto non ha posizione. Non è un luogo vero; è il modo di Google di scrivere "sconosciuto". Molte foto sono in questo stato, più di quanto la gente si aspetti.

Perché tante foto non hanno il GPS

I telefoni registrano le coordinate solo se l'accesso alla posizione è attivo per la fotocamera. Molti lo tengono spento. Screenshot, immagini di WhatsApp, foto scaricate e scansioni non hanno mai avuto il GPS. Le fotocamere più vecchie non avevano nessun ricevitore.

Google Foto te lo nascondeva. Indovinava i luoghi dalla tua cronologia delle posizioni e dai monumenti che riconosceva nell'immagine, e mostrava quelle stime nell'app. Quelle posizioni stimate non sono nel JSON. Ci sono solo le posizioni esplicite: dall'EXIF, o da un luogo impostato a mano.

Su una parte reale di Takeout da 991 foto, il 12 per cento dei JSON aveva coordinate vere e l'81 per cento aveva il segnaposto 0.0. La tua libreria sarà diversa, ma se la ricerca in Google Foto funzionava per foto che non avevi mai geolocalizzato, quella ricerca si basava su stime che non hai ricevuto indietro.

Perché il GPS manca anche dai file

Per le foto che avevano il GPS nell'EXIF, Takeout di solito restituisce il file con quell'EXIF intatto. Quindi molte foto da fotocamera hanno ancora le loro coordinate; l'app in cui ti sei spostato non le ha ancora indicizzate, o guardava un altro campo.

Le eccezioni sono le foto il cui EXIF è stato tolto prima del caricamento, e quelle in cui hai impostato la posizione in Google Foto. Per quelle, il JSON è l'unica copia. Se elimini i JSON senza unirli, quella posizione è persa.

Controlla cosa hai davvero

Con exiftool:

exiftool -r -if 'not $GPSLatitude' -ext jpg -ext heic -filename .

elenca le immagini senza GPS nel file. Confrontalo con i JSON che hanno un geoData diverso da zero, che puoi cercare con:

grep -L '"latitude": 0.0' *.json

L'intersezione è quello che puoi ripristinare.

Ripristinare le coordinate a mano

exiftool può copiare geoData dal JSON nei tag GPS dell'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 riga -if conta. Senza, scrivi 0.0, 0.0 in centinaia di foto, e ogni vista mappa della tua nuova app mostra un grappolo nell'oceano Atlantico al largo dell'Africa occidentale. I tag Ref prendono il segno della coordinata, per questo sono impostati dallo stesso valore.

Ripeti con "%d/%F.json" per le esportazioni più vecchie. I file con nomi JSON troncati e i duplicati (1) richiedono un trattamento a parte, spiegato nella guida a exiftool.

Ripristinarle con l'app

Takeout JSON Metadata Fixer fa lo stesso lavoro senza riga di comando, su Windows, Mac e Linux, in italiano.

Legge prima geoData, poi geoDataExif, poi qualsiasi GPS già nel file, e scrive le coordinate nell'EXIF della foto. Tratta 0.0, 0.0 come sconosciuto e lascia quelle foto senza posizione invece di metterle in mezzo al mare. Le date vengono scritte nello stesso momento, dato che i due problemi arrivano quasi sempre insieme.

Se vuoi il luogo nel nome del file o nella cartella, l'app può trasformare le coordinate in un nome di città e darti 2019-07-14-1105_Firenze.jpg, o una cartella 2019/Firenze. Quella ricerca usa OpenStreetMap, quindi ha bisogno di una connessione e manda a quel servizio le coordinate arrotondate, e nient'altro. Spegnila e l'app gira completamente offline. Le foto senza posizione ricevono semplicemente un nome senza luogo.

Le prime 1000 foto sono gratuite. Dopo, 19,99 USD una tantum sbloccano le foto illimitate.

Per le foto che non hanno mai avuto una posizione

Niente nell'esportazione può recuperare una posizione che non è mai stata registrata. Puoi però aggiungerla tu. Foto di Apple, digiKam e Immich permettono di trascinare una foto su una mappa. Per un lotto, exiftool può impostare le stesse coordinate su una cartella intera. L'app fa lo stesso dalla finestra di impostazione della cartella: scrivi un nome di città o le coordinate, e le foto della cartella che non hanno una posizione propria le ricevono nell'EXIF. È il modo più rapido per una scatola di scansioni o un viaggio fatto con una fotocamera senza GPS.

Domande frequenti

Google Foto mostrava una posizione per questa foto. Perché il JSON è a zero?

Perché quella posizione era stimata dalla cronologia delle posizioni o dal contenuto dell'immagine, e le stime non vengono esportate. Solo le coordinate dal file o da una modifica manuale lo sono.

Uso geoData o geoDataExif?

geoData include le tue correzioni manuali ed è altrimenti uguale a geoDataExif. Usa geoData, e ripiega su geoDataExif se è a zero.

Immich o Foto di Apple leggeranno il GPS dopo l'unione?

Sì. Entrambi leggono i tag GPS standard dell'EXIF, che è dove l'unione li scrive. Immich li mostra nella vista mappa dopo aver reindicizzato il file.

Posso invece togliere il GPS, per privacy?

Sì. exiftool -gps:all= -overwrite_original . lo elimina da una cartella. Fallo dopo il riordino, se vuoi comunque i nomi delle cartelle per luogo.