- For tracing aerial photos, see Aerial imagery.
A popular mapping technique, photo mapping can be a great timesaver - it can be far quicker taking photos of street signs or points of interest than either to write it down or fiddle with the GPS waypointing. What's more, since digital cameras add the date and time to each photo (in the EXIF data), and the GPS tracklog can be used to convert the time into your exact position, it's easy to match up the photos to the exact position they were taken.
Simple photo mapping
Use your camera to help you remember stuff. It can be as simple as that!
You don't need to use GPS and other advanced tricks described on this page. This is particularly true if you're in an area with good bing coverage (makes it a lot easier to get things in the right place) and if you have a good memory for this kind of thing. You'll need to remember the path you walked and the direction you were facing when you took the photos. To aid your memory it's always a good idea to input map data as soon as possible after collecting it. Also the more photos you take the better. If an area of one photo is visible in the previous photo, it makes it easier to orientate when you're looking back over them.
Even if you have a GPS track, it can be difficult to determine the way you were facing when taking a photograph. You can develop your own tricks to solve these problems, but here's one approach: Simply rotate the camera: landscape pictures for what's ahead, portrait-size for infos about the way you just came from and a rotation of +/- 45° for what is on the right/left of the road. Pretty low-tech, but sufficient most of the time. You can also work out orientation using the angle of the sunlight in the pictures.
Synchronizing GPS and camera
Some cameras come with in-built GPS, and some GPS units come with in-built camera so these devices will typically write geolocation data to the image file's metadata (EXIF) each time the shutter is snapped. This also happens with smartphones, although you may need to enable it. This makes things much easier. Tools such as JSOM will generally use this geolocation metadata.
What if you're working with two separate gadgets, a camera and GPS unit? You can still geo-locate your photos by doing timestamp matching. But this assumes your GPS and camera both have the same current time.
You could try to get positioning right by exactly synchronising the clocks on your camera and GPS device. GPS units don't typically let you set the time, because they receive the time as part of the signal, so it's a matter of setting the time on your camera to match that of your GPS, ideally down to the second. This is fiddly though, particularly as many cameras only let you set the time to the nearest minute. You may find it sets the seconds to zero when the time is set, so you can try setting the camera's time just as the GPS rolls over to a new minute. However... there is a better way.
Take a photograph of the GPS screen while it's displaying a clock, and that can be used to calculate the offset in seconds between the camera and GPS. JOSM will even do this calculation for you (see below). Later you can work with an application which will account for the offset - or use another application to adjust the EXIF time data on the photos (the well known Picasa software for example can do this).
Integration with Potlatch
Now, Potlatch can read a KML file for geotagged photos. See Potlatch/Photo-mapping for detail.
Integration with JOSM
First open a GPX file. It should then be listed as a layer (Toggle the 'Layers' panel, if it isn't visible). Right-click the layer listing, and select 'import images'. Select all the images (or the folder) you want. It will overlay little camera icons on the track based on the time the image is taken. (If you don't have a GPX file, but just geotagged images taken e.g. with the standard iPhone app: just open the images with File -> Open form JOSM).
The positioning of the camera icons along your GPS track is crucial, and depends on the offset in timestamps recorded by your two devices (camera and gps unit). You will need to adjust this offset, effectively moving the camera icons forward/backward along your route until they are in the right place. The most accurate way of doing this is to have a photo of the GPS unit screen showing the time (you need to remember to take such a photo at the time). On the 'correlate images' window there is button to 'Use photo of an accurate clock'. Failing that, you would use the other buttons 'Auto-guess' and 'Manual adjust' to tweak the positioning of all the photos. You can do this based on one photo where the exact position is already clear. JOSM remembers the offset, so next time you may find it gets it right without adjustment.
Some smartphones and other devices have 2-in-1, camera and GPS. In this case, you don't have a photo of the GPS screen, but images must be logically synched to the GPS tracklog. However, JOSM might not recognise synching. In the case of Android smartphones (as tested with a HTC G1 phone), if synching hasn't happened by default, you can re-synch the GPX tracks and the photos that you get from the phone: select "Sync Time" in any of the photos, choose +0 as the value, and all photos will be placed correctly.
The functionality of AgPifoJ plugin is now included in the JOSM core software (no need to install it)
Writing EXIF data back to Photos
This plugin, JOSM/Plugins/Photo_Geotagging, will write EXIF data back to images.
These can then be uploaded to flickr and displayed on their map, and distributed via GeoRSS or KML. Make sure "Import EXIF location data" is set to on http://www.flickr.com/account/geo/exif/?from=privacy
Tagging and storage
If you want to tag an object (node, way etc) to show that you positioned it using a photograph and not GPS data (perhaps a fence you didn't walk along running directly between two places already on the map), use "source=photograph". If, more commonly, it's the name of the object that you got from the photo (e.g. a street name), use "source:name=photograph". Similarly, for road numbers (e.g. ref=A305), use "source:ref=photograph".
There's nowhere within the OSM project for the photos themselves to be stored. If you upload them to a website such as flickr, you can use the "source_ref=http://example.com/123.jpg" (or "source_ref:name=" or "source_ref:ref=") tag to link the photo to the object.
If you're using the Annotation Presets with JOSM, it'll suggest the right tag at the right time, and you won't need to worry about which one is which!
- See also: Source for more source-tagging options
You should add the GPS positions to your photos, see Geotagging Source Photos.
OJW's image locator script can combine a directory full of JPEG images, with a GPX tracklog, to produce a list of latitude/longitudes for each photo.
Seth Golub's geocoding scripts do pretty much the same thing, but write the data into the EXIF section of the JPEGs using exiv2. The scripts also provide a more usable command line interface to exiv2 for reading and writing geographic data to/from EXIF headers.
More software and information about writing location in the pictures' metadata can be found on the Geotagging Source Photos wiki page.
Some Nokia camera phones do not include date information in EXIF headers, causing JOSM and other tools to fail. The date and time can be copied from the file creation time using the useful Perl library and command-line application ExifTool : $ exiftool -P '-FileModifyDate>DateTimeOriginal' *.jpg
For Linux users there is GPSCorrelate which has command line and GUI apps and is available in most repositories.
Also there is GPSPrune, a java-based cross-platform application which can correlate photos manually or automatically using timestamps (from GPX, KML or text files). It can output the photos in a KMZ file or it can use ExifTool to write the coordinates to the JPEG files.
Websites/projects about geolocating photos
Websites/projects as (free) services:
- Flickr, the photo sharing site, supports special OSM "machine tags". If it's a photo of an OSM object you can add tags such as osm:way=123456 or osm:node=654321 and Flickr will link to the data browser page. We also have a normal 'openstreetmap' tag and a group.
- OpenStreetView, project to upload geotagged images and put them on openstreetmap layers. Even if you don't have any images yourself, you can help by moderating existing images!
Miscellaneous (local tools or software repositories):
- CycleStreets (cyclestreets.net) has a Photomap for street photos of cycling facilities (No geographical restriction, though routing is UK-only). CycleStreets for iPhone has direct addition of photos, and the app code is GPL
- Show Your Places (syp.renevier.net) is a CMS specifically designed for showing geolocalizated photos and add. A software repository with demo page. It requires PHP and MySQL.
- phpMyGPX (phpmygpx.tuxfamily.org) is an open source web based application showing photos and GPX tracks on different OSM layers. A software repository with demo page. It requires PHP and MySQL.
- Viking (viking.sf.net), local program allows you to create and edit tracks and waypoints.
Abandoned or merged projects:
- MapPIN'on OSM, introducing system of geotagged photos. The website is designed as very simple in order to introduce millions of photos. This server doesn't hold any photos. Those photos are uploaded on each author's blogs and just linked to "MapPIN'on OSM" by RSSes. Seems to be defunct (except for the Ads?).
- OpenStreetPhoto. Somewhat misnamed project. Mostly working on various ideas for gathering aerial imagery (quadcopters) but some work on OCRing of street-level imagery. Seemed more active in 2009, then merged to OpenStreetView.
If you get any better sunny weather / picturesque photos (not just pictures of a street sign) while you're out mapping...
- Check if there's a Wikipedia article you can illustrate with the photos. Remember: it is best for the Wikimedia projects to upload the file on Wikimedia Commons. There may also be a Wikivoyage guide you can illustrate with the photos.
- Geograph (geograph.org.uk) is a UK photo site. Use this page to upload with lat/long instead of BNGR)