Just completed a cruise from Miami to L.A via the Panama Canal, with several stops at ports along the way, including Cartegena, Hualtulco, etc. Had my ASUS R300 GPS running and recording as we left and entered ports, as we transited the Panama Canal, and as we took excursions off the ship in the various ports. I have used that data to geocode, via the GPX files I produced, the photos we took... well over 1000.
For the record, the main software used is as follows:
Used to look at GPX files and merge them, delete off track points and replace them with on track points [particularly in the Panama Canal, where having the GPS on a table on the balcony results in SOME points being on solid land even though the ship remained in the canal] and then save the fixed GPX file.
To actually inject the geocode information into the photos, by matching the time and place from the GPX file with the time in the photo.
EXIF Date Changer
To correct values in the photos when they were wrong because the camera was set to the incorrect time or time zone [for example] or to adjust for the inevitable difference in seconds between the camera and the GPS unit. Remember that the GPS gets it time from the satelites while the camera gets its time from you, and that the GPS is recording in Zulu time, while the camera usually is recording in local time, or your home's time.
To look at [and EDIT] almost ALL of the EXIF data in a photo, and to export the EXIF data to a file that can be imported into another photo if that latter photo is missing EXIF data. That happens when I make a panorama of several photos, so I export the EXIF file from the first photo in the panorama and import it into the panorama, which then provides all of the info in the first photo, including the geocoding of that photo, in the panorama.
RoboGeo to create an EXIF in a photo if need be, but then I need to use PhotoMe to be able to correct the deliberate error in the geocode that is created, as I am using the unregistered, free, version.
I also have Exifsorter.exe and exiftool, which also have their uses in creating the correct values. exiftool can be used to correct values in a panorama, when the image has the wrong number of pixels defined because the panorama has a size not covered in the EXIF file from the first image in the panorama.
The real problem always is getting the time in the GPX file and the time in the photo to be useful. GPicSync includes the time zone adjustment, so you can use -5 hours or -4.5 hours to syncronize that way, and you can use EXIF Date Changer to correct the precise seconds so that they align as well... or for the minute or two drift the camera's clock may have to the actual time in the GPX files. Once that is done, you can geocode easily as long as the GPS was on when the photo was taken.
For those occasions where I have a photo taken when there was NO GPS running and therefore no GPX track, I use IrfanView to look at the EXIF information, write down the precise time the photo was taken, copy a GPX file into Wordpad, and CREATE the record for that photo in the GPX file, which I save with a unique name. I correct the time to the time in the photo and the latitude and longitude to the place I know the photo was taken, using Google Earth to get the latitude and longitude. I will do a number of photos at one time by doing just that for EACH of the photos, but putting their information in that one uniquely named GPX file.
I tell GPicSync to use 0 seconds difference when I do the above as I know that each entry only covers one individual photo using the time in that photo. Otherwise you can use GPicSync with its default 300 seconds offset, or 5 minutes offset, if that will be close enough for your purposes.
Any photo geocoded this way can be opened in Google Earth using IrfanView, looking at the photo's information, selecting Exif in the lower left of that information, and then selecting view in Google Earth in the lower right of that new window.
If anyone has questions or needs help, feel free to ask... and all the photos I use this with are JPG images.