🚧 Contenu en évolution — Nous publions cette page dès maintenant pour vous offrir un avant-goût. Encore mieux très bientôt !
j’ai 20k photo d’un voyage autour du monde. Chaque photo contient les coordonnées gps. j’aimerais trouve une application qui me permettrait d’importer les photos et qui recréerai l’itinéraire de mon voyage a partir des coordonnées gps. Dans le cas ou ce type d’application n’existe pas je serais près a faire le script en golang pour y arriver. J’aimerais aussi utiliser le texte associé avec chaque photo.
Super projet — 20k photos avec GPS, c’est parfait pour reconstituer un itinéraire riche et navigable. Je vais d’abord résumer les solutions prêtes à l’emploi que tu peux tester tout de suite, puis je te donne un plan technique + un script Go de départ (extrait fonctionnel) pour extraire EXIF, trier par date, dédupliquer et exporter en GPX/GeoJSON/CSV prêt à importer dans My Maps / Mapbox / Leaflet.
1) Solutions existantes à tester (rapide)
- PhotoPrism (self-hosted) — indexe de grandes bibliothèques, propose une vue Places (map) et peut estimer des emplacements manquants. Idéal si tu veux une application photo complète (face detection, recherche, map). (docs.photoprism.app)
- HoudahGeo (Mac) — conçu pour géotagger et visualiser photos; peut exporter KML/GPX et réécrire les métadonnées. Pratique au moment de nettoyer et corriger des coordonnées. (houdah.com)
- Adobe Lightroom Classic — Map module — map interne, possibilité d’auto-tag via GPX et visualiser les photos sur carte. Utile si tu utilises déjà Lightroom pour le catalogage. (Adobe Help Center)
- Google My Maps / Google MyMaps import — tu peux importer CSV / KML / GPX avec lat/long et lier des photos (ou URL vers des photos) ; facile à partager/embarquer sur un site. Bon pour la publication web simple. (Google Help)
- TravelMap / TravelTracker / Photo Map apps (iOS/Android, web) — solutions rapides pour transformer une sélection d’albums en une carte interactive et story map utile pour partage public/famille. (TravelMap)
Conclusion pratique : si tu veux juste visualiser / partager vite fait → teste PhotoPrism (si self-host) ou My Maps (CSV/KML). Si tu veux contrôle total sur l’itinéraire (ordre chronologique, simplification, hébergement des images), je recommande d’exporter d’abord un fichier GPX/GeoJSON depuis un script puis l’importer dans Mapbox/Leaflet/MyMaps. (docs.photoprism.app)
2) Scénario si tu veux coder (Go) — workflow recommandé
Objectif : partir des 20k fichiers (avec EXIF GPS + timestamp + texte associé), produire :
- un fichier GPX / GeoJSON représentant le tracé chronologique (itinéraire),
- un CSV/KML des points (latitude, longitude, timestamp, photo filename, texte / caption),
- une version simplifiée (polyline simplifiée) pour affichage web,
- et des popups avec miniatures/texte (tu peux héberger miniatures sur CDN/Nextcloud/Drive).
Étapes :
- Scanner le dossier récursivement pour lister fichiers (jpg, heic, png, mp4)
- Lire EXIF : GPSLatitude, GPSLongitude, DateTimeOriginal (ou CreateDate). Si GPS manquant → ignorer ou estimer.
- Extraire le texte associé : si tu as un fichier texte lié (ex. same-name.txt) lier ; sinon appliquer OCR (Tesseract) ou OCR cloud pour extraire texte depuis l’image.
- Normaliser timestamps (UTC) et trier par timestamp.
- Dédupliquer / cluster : fusionner photos prises à la même position/intervalle pour garder un flux lisible (regrouper photos prises en quelques minutes au même point).
- Générer GPX/GeoJSON/CSV ; option : polyline simplification (Ramer–Douglas–Peucker) pour réduire points.
- Héberger miniatures et produire une colonne
photo_url pour les popups.
- Importer dans My Maps, Mapbox, Leaflet ou PhotoPrism selon besoin.
3) Points techniques importants pour 20k images
- Mémoire & perf : traiter en streaming / batch ; ne pas tout garder en mémoire. Utiliser goroutines mais limiter le parallélisme (worker pool) pour lire EXIF.
- Formats HEIC / MOV : choisr des libs qui lisent EXIF sur HEIC/MP4; sinon convertir.
- Timezones : vérifier que DateTimeOriginal est correct (certaines caméras laissent en local) — tu dois harmoniser vers UTC.
- Héberger photos : pour popups web, mets miniatures sur un bucket (S3 / Cloudflare R2) ou Nextcloud et écris l’URL dans le CSV.
- OCR / texte associé : Tesseract local ou Google Vision / Azure OCR si tu veux qualité. Pour 20k images, cloud peut coûter—prévoir budget.
4) Starter Go script (fonctionnel, raisonnablement complet)
Ce script : parcourt un dossier, lit EXIF GPS+timestamp, trie, déduplique proches voisins, et écrit un route.geojson + points.csv.
Dépendances :
github.com/rwcarlsen/goexif/exif pour EXIF
github.com/tkrajina/gpxgo/gpx (optionnel) pour GPX (ici on fait GeoJSON manuellement)
- standard library
Installe : go get github.com/rwcarlsen/goexif/exif github.com/tkrajina/gpxgo/gpx
photo2route_with_heic_videos_gpx_thumbs.go
Notes :
- Ce script ignore les images sans GPS (option : PhotoPrism peut estimer).
- Pour HEIC/MP4,
goexif peut ne pas toujours décoder : tu devras tester et ajouter libs natives si besoin (ou convertir).
- Ajoute un upload des miniatures si tu veux générer
thumb_url pour popups (ex. s3://bucket/thumbs/...).
- Pour OCR, utilise
tesseract en CLI et pars les résultats, ou appelle Google Vision si tu veux meilleure qualité.
5) Que faire ensuite (intégration / affichage)
- Importer
route.geojson dans Mapbox GL JS ou Leaflet pour afficher la polyline et points ; utiliser photo_url pour popups.
- Importer
points.csv dans Google My Maps (ou Google Drive) si tu veux un partage rapide. (Google Help)
- Optimiser / simplifier la polyline côté serveur (Ramer–Douglas–Peucker) pour alléger l’affichage sur web.
- Story map : ajouter sections temporelles (ex..timeline) ou cluster par pays/ville pour navigation.
6) Recommandation pratique immédiate
Si tu veux test rapide sans coder : installe PhotoPrism et indexe un sous-ensemble (ex. 1k photos) pour voir la carte et l’UI. (docs.photoprism.app)
Si tu veux publier une carte web partagée : génère route.geojson via le script ci-dessus et importe dans Mapbox/Leaflet/My Maps. (Google Help)
Si tu veux que je passe à la vitesse supérieure maintenant : je peux
- adapter le script Go pour gérer HEIC/vidéos et écrire GPX aussi,
- ajouter export de miniatures (commande d’exemple
ffmpeg/sips sur macOS) et générer thumb_url CSV,
- ajouter simple étape OCR (Tesseract) et option d’upload vers un bucket.
Dis-moi quelle option tu veux (tester PhotoPrism, je veux le script complet Go prêt-à-lancer avec HEIC+GPX+OCR, ou un guide Mapbox/Leaflet pour afficher route.geojson) — je peux te fournir le code/commandes exactes tout de suite.