Som bergsklättrings- och cykelentusiast använder jag min GPS för att spela in mina spår och min digitalkamera för att spela in synpunkterna.

För att dela med mig av mina erfarenheter ville jag kunna visa mina spår på en karta i en webbläsare. Precis som med Google Maps ville jag länka mina bilder till en intressepunkt (POI) på kartan och popa upp fotot när användaren klickar på POI.

Hela processen innebär att använda en olik samling av öppna källverktyg - först att extrahera spår från GPS, sedan geo-tagga bilderna med GPS-data och slutligen att visa både spåret och bilderna på en karta med OpenLayers JavaScript bibliotek.

Hämta data

Det första steget är att få data från din GPS. Jag har en Garmin eTrex, som har en seriell port. Många nyare enheter kommer dock med USB-portar.

Om din GPS-enhet har en seriell port måste du förmodligen få en USB-kabel till seriell kabel. Dessa är allmänt tillgängliga på eBay.

Vi ska använda GPSBabel för att ladda ner spåren och waypointsna från GPS. GPSBabel är den schweiziska armékniven i GPS-världen. Det konverterar waypoints, spår och rutter mellan många olika format.

Om du använder en seriell till USB-omvandlare, när du ansluter den till datorn och kör dmesg du ska få produktionen som liknar:

[5753.489759] usb 5-1: pl2303-omvandlare ansluten nu till ttyUSB0
[5753.489786] usbcore: registrerad ny gränssnittsdrivrutin pl2303
[5753.489789] pl2303: Prolific PL2303 USB till seriell adapterdrivrutin

Om du använder en Garmin GPS får du de bästa resultaten genom att ladda ner Raw Tracklog. Sparade tracklogs är borttagna av mycket information, inklusive tiddata. Om du vill geotag dina foton behöver du tidsdata!

Det är bäst att spara data i GPX-format, eftersom detta är det mest stödda GPS-dataformatet. GPSBabel har ett GUI front-end, som är skrivet i Qt. GUI bygger en kommandorad, som överförs till GPSBabel. Kommandot visas i GUI, så när du är bekant med programmet kan du använda kommandoraden för att ladda ner spår.

Många senaste GPS-enheter har USB-portar och visas som en masslagringsenhet, så du kan ladda ner trackloggen med en filhanterare.

Ange ett intervall

Jag rensar trackloggen från min GPS bara när den blir full. Jag vill emellertid inte helt ladda hela loggen varje gång jag har varit på en promenad eller cykeltur. Med GPSBabel kan du ange ett stort antal filter, inklusive tidsintervaller, för att ange vilken data som hämtas från din GPS.

Följande kommando hämtar trackloggen för den angivna dagen och sparar den som en GPX-fil:

gpsbabel -t -i garmin -f / dev / ttyUSB0 -x spår, s tart = 20120212000001, sluta = 20120212235959 -o gpx track.gpx

Du är en nörd, så kamerans klocka överensstämmer med din GPS klocka? Err ... Jag hatar att erkänna detta, men det gör det inte för mig.

Klockan i din GPS är synkroniserad med GPS-satelliten, så ska alltid vara korrekt. Nästan alla digitalkameror lagrar information om när ett foto skapades i EXIF-taggar. De relevanta taggarna är "DateTimeOriginal", "CreateDate" och "TimeCreated". Så vad du behöver göra är att uppdatera dessa taggar med skillnaden mellan kamerans tid och GPS-tiden.

Vi kommer att använda Phil Harveys exiftool för att korrigera EXIF-informationen. I mitt fall var kamerans klocka 1 timme 21 minuter före GPS-klockan, så jag behövde subtrahera 1 timme 21 minuter från tiden i EXIF-taggar. Med exiftool är kommandot:

exiftool "-DateTimeOriginal- = 0: 00: 00 01: 21: 0" \
"-CreateDate- = 0: 00: 00 01: 21: 0" \
"-TimeCreated- = 0: 00: 00 01: 21: 0" * .JPG

Notera - framför jämliksignalen, som subtraherar tidsförskjutningen. Innan du uppdaterar dina EXIF-taggar, kommer du förmodligen att skapa en säkerhetskopia av dina bilder om du gör ett misstag. Du kan även skapa en kopia av EXIF-data till en textfil för alla foton i den aktuella katalogen genom att använda följande kommando: