Time was short.
A little more reading, and I saw that Cheeky4n6Monkey was similarly inspired and accordingly, worked up a better solution than my bash one-liner. Very nice.
Over the last few evenings, I had some time to read up on GeoRSS, an XML document format that can be read by Microsoft's Bing Maps. In turn, Bing can drop pushpins in the GPS coordinates provided from the file. I have a working prototype for this. Now, right off, I have to say, I barely know enough to make this work, the solution is not robust. I did use the word "prototype."
But, I did get it working and I think it may be useful to investigators who want to take images off of a phone or GPS equipped camera and create a map showing where all the images were taken. Here's a walk through.
First, I started with SIFT 2.12 and wrote a Python script that would parse out the EXIF metadata from a collection of photos and write them to a GeoRSS file. The script borrows a bunch of code from http://stackoverflow.com/questions/208120/how-to-read-and-write-multiple-files and http://eran.sandler.co.il/2011/05/20/extract-gps-latitude-and-longitude-data-from-exif-using-python-imaging-library-pil/.
I turned on "Location Services" for the camera on my phone and snapped a bunch of pictures over a few days, then copied these to my SIFT system. Here's the directory listing:
| Figure 1: Directory listing of a bunch of images from an iPhone and the script to parse them |
To create the GeoRSS file, simply run the "photo_map.py" script with the files as an argument, like so:
![]() |
| Figure 2: Running the photo_map.py script against all the JPG files and redirecting the output to the xml file |
Update: the code in photo_map.py is available in my git repo as exif2georss.py. Again, it is nearly all based on code taken from the links mentioned previously.
Now, here's where a good developer is really needed, someone like the guy behind "Ricky's Bing Maps Blog". He's done all the heavy lifting, creating a tool that can read our GeoRSS file and put pushpins on a Bing map for each set of GPS coordinates. You can download his code and build your own tool for doing this, but if you just want a quick solution that works, open Internet Explorer and go to maps.bing.com:
![]() |
| Figure 3: Internet Explorer with maps.bing.com loaded |
Notice under the stylized "bing" logo in blue where it says "Maps" in orange? Right below that there is an image of a car and a row of menu options, one of which is "Map apps." If you click on "Map apps," you'll see this:
![]() |
| Figure 4: What you should see after clicking on the "Map apps" button |
At the top of this window there is a search box. In that box, type in "georss" without the quotes. Duh. You should be presented with this:
![]() |
| Figure 5: Showing Ricky's Data Viewer, which will read our GeoRSS xml file and plot the GPS coordinates! |
Click on "Ricky's Data Viewer" and you'll see something like this:
![]() |
| Figure 6: Bing's map now has Ricky's Data Viewer on the side. Note the "GeoRSS" tab. |
Click on the "GeoRSS" tab and you'll see this:
![]() |
| Figure 7: Enough screen shots yet? Now we can select our GeoRSS file that we created earlier. |
Select your file:
![]() |
| Figure 8: Navigate to your file (it's on my SIFT share) and click Open. Here comes the magic... |
Now we can see a pushpin for every location where a photo was taken:
![]() |
| Figure 9: Pushpins representing locations where photos were taken. Mousing over the pin shows the photo file name. |
That's it for my prototype code. Again, this could be taken further with more time and effort. According to the docs for Bing, these mouseover events can be modified to show more data. For example, it may be possible to add the timestamp information to the pushpins and have that appear on the mouseover. And of course you can zoom in to the map and get a better idea of where a cluster of photos was taken, by default Ricky's code centers the map over the collection.







