I’ve been working with geotagged photos for the last few weeks as part of our GIS Internship Program with the NJ National Guard. One aspect of our data gathering at each of the state’s Readiness Centers is to photo-document the site as we collect data. All of the data recorded for the facility is stored in a SDSFIE-compliant geodatabase. One of the thousands of SDSFIE entity classes used to organize the data is “photograph_location_point” – a schema specifically for recording geotagged photographs.
We recently conducted field work at the installation in Woodstown, NJ and I took along my Nikon Coolpix p6000 – with integrated GPS. Since I’ve gotten the camera, I’ve been taking plenty of pictures with it and have been pleased with the results. The pictures are of a great quality and the GPS coordinates are usually in the 1-10m range. I took about 150 pictures while the students were collecting data. Using my mobile office, I downloaded the photos into iPhoto so we could discuss the work being done. I exported the pictures from iPhoto using the Export functionality and saved them to our workgroup server.
This past week I’ve been working on a Python script* to take a directory of geotagged photographs and produce a point shapefile with the location of each picture and a path link back to the source photograph. I tested the script out on my Woodstown pictures and was conflicted: I was happy the script was doing what I wanted, but I was very disappointed with the results. It seems like the geotagged photo points were all snapped to some imaginary grid. In fact, they were! iPhoto’s export function apparently rounds the seconds value (of degrees, minutes, seconds of latitude or longitude) to the nearest whole number. In doing so, it essentially snaps all of the coordinates to a grid with a spacing of 1 second, or around 100 feet. This clearly is a problem, as the most GPS units today are much more precise. The image at left demonstrates the difference between photos exported from iPhoto and the original images from the camera. Green squares represent the point shapefile based on the exported-from-iPhoto images and the blue circles represent the unaltered images. Except for two or so misplaced points, the blue circles accurately represent my position when taking the photograph within 15 feet.
Measuring the distances between the rounded points clearly shows that the location information is improperly exported from iPhoto and the coordinates are being rounded. iPhoto does not by default include GPS Exif tags in exported images, presumably to preserve privacy. Regardless, if the “Export Location Information” checkbox is checked, why should iPhoto even touch the GPS info? I would think it should pass the Exif tags along without molestation.
I really hope that this is a bug on Apple’s part and that they don’t assume that integer seconds ought to be enough for anybody. Until they do fix the bug, we won’t be able to edit our photos using iPhoto and retain accurate coordinates.
* I intended to release the script this weekend, but realized that I did not include any documentation in the ArcToolbox file. Once I add some documentation to the tool, I’ll put the script online and add links to this post.
Bravo, John! I just discovered this after photos exported from iPhoto didn’t match the GPX track I’d used to reference them in the first place. I shall make sure that I use exiftool to add/copy coordinates *after* I’ve exported from iPhoto – but can we trust Apple not to have messed with the picture creation date, too? 😉
It’s not just iPhoto. It’s in Core Image, because the same issue occurs simply by opening a photo with Preview and saving. I’ll post more details soon.
Pingback: Don’t trust iPhoto’s exported GPS coordinates « Numpty's Progress
Pingback: new jersey geographer » Blog Archive » More on Apple’s mishandling of geotagged photos