iconeJe me propose dans ce billet de vous expliquer ma méthode pour obtenir dans GoogleEarth ou GoogleMap vos traces GPS agrémentées des photos géolocalisées.

Pour ce faire, nous allons utiliser principalement GpsBabel, un couteau suisse en ligne de commande des fichiers Gps. Pour plus d'infos, je vous renvoi vers la doc ubuntu-fr, ou le site officiel. Nous utiliserons aussi un petit script en python que j'ai développé pour mon usage personnel.

Tout au long de ce billet nous prendrons comme exemple une journée d'une croisière aux Scilly que j'ai faite l'an dernier.

Note: si vous voulez pouvoir clicker sur les fichiers pour GoogleEarth sans l'ouvrir 50 fois, je vous conseille d'aller lire cet autre billet sur Google Earth.

Récupérer la trace GPS

GPSDe nombreuses méthodes existent pour cela. J'utilise principalement QGis et son plugin gps ou GpsBabel. Vous trouverez plus d'infos dans la doc. Mon GPS est un Garmin, connecté en USB. Avec GpsBabel, on récupère les traces au format GPX ainsi :

gpsbabel -t -i garmin -f /dev/ttyUSB0 -o gpx -F trace_all.gpx

Les options sont :

  • -i pour le format d'entrée ;
  • -f pour le fichier d'entrée ;
  • -o pour le format de sortie ;
  • -F pour le fichier de sortie ;
  • -t pour indiquer que l'on travaille sur les traces (tracks).

Ensuite, nous n'allons garder que les points correspondant à une journée :

gpsbabel -i gpx -f trace_all.gpx -x track,pack,split,title="ACTIVE LOG # %Y%m%d" -o gpx -F trace_split.gpx
gpsbabel -i gpx -f trace_split.gpx -x track,start=200708280000,stop=200708290000 -o gpx -F 20070828.gpx

La première commande regroupe (pack) puis sépare par jour (split) la trace gps. La deuxième ne conserve que les points du 28 aout 2007.

Enfin, nous allons en faire un fichier KML lisible par les applications de Google :

gpsbabel -i gpx -f 20070828.gpx -o kml,points=0 -F 20070828.kml

l'option points=0 permet de n'afficher que la trace mais pas les points qui la composent. Plus de détails dans la doc de GpsBabel

Vous pouvez dors et déjà afficher celui-ci dans GoogleMap ou Earth.

Géolocaliser les photos

Si votre appareil photo ne dispose pas d'un GPS, vous pouvez quand même associer des coordonnées géographique à chaque photo grâce à votre trace GPS[1]. Le principe consiste simplement à corréler l'heure de prise de vue avec votre position enregistrée par le GPS à ce moment précis. Pour découvrir toutes les méthodes possibles, je vous renvoi encore une fois vers la doc ubuntu-fr.

Personnellement, j'utilise digiKam pour faire cela. digiKam Rien de bien sorcier ici. Pensez quand même que les traces Gps sont généralement en UTC et vos photos en heure locale (UTC+2 pour la France en été)

Une fois ceci fait, lorsque l'on ajoute les photos à un album PicassaWeb, des miniatures des photos sont directement placées sur une carte. Il est alors possible de télécharger un fichier kml pour les voir dans GoogleEarth[2].

Combiner les fichiers KML

Maintenant, nous avons deux fichiers kml :

  • la trace gps ;
  • les photos positionnées.

Il ne reste plus qu'a combiner ces deux fichiers. GpsBabel est capable de le faire.

gpsbabel -i kml -f 20070828.kml -f photos.kml -o kml,points=0 -F 20070828_tout_gpsbabel.kml

Malheureusement, il pert les miniatures et les liens vers les photos, ce qui rend l'opération peut intéressante :(

J'ai donc écrit quelques lignes de python pour faire l'opération. Vous pouvez télécharger le fichier à partir du dépot svn[3] : addPicassaToKml

Son usage est des plus simple :

./addPicassaToKml.py 20070828.kml photos.kml

il produit alors un fichier merge.kml contenant le meilleur des deux autres[4]. Et voila !


Agrandir le plan

Si vous voulez jouer, tous les fichiers sont ici

Notes

[1] le fichier gpx que nous avons importé du gps

[2] chez moi ce fichier le fait planter s'il est ouvert au démarrage :(

[3] gracieusement offert par TuxFamily

[4] avec les même limitations que le kml de Picassa :(