Geocoding

What is Geocoding?

When you type an adress or place name into your map app, GIS or online map it shows you the location on the map and possibly gives you a list of other possible locations from the name you have typed. Geocoding is the process where these addresses are converted into spatial coordinates e.g. converting 'southampton' to the geographic coordinates of latitude 50.9 and longitude 1.4.

Reverse geocoding does the opposite of converting a geographic coordinate to a place name or address.

For example, geocoding 'University of Southampton' using Googles geocoding API gave the following result.

city:Southampton
county/district:Southampton
country:United Kingdom
latitude, longitude:50.936344, -1.39681

How to do Geocoding?

Geocoding is offered by many online services. One means is to use Google Fusion Tables to do the geocoding of an address column. Google Maps API also offers geocoding. However, these services all have usage limits on the number of columns/requests sent for geocoding.

Alternatives to Google (when not accessible) are Mapbox and various other options like MapQuest, Yahoo! PlaceFinder and Bing.

However, if you needed to geocode a large batch of sensor data at once, all of the online services would limit the rate for non-paying plans. A reasonable alternative is to setup your own geocoder, which though not as powerful and refined as googles' will still provide decent results.

Gisgraphy

Gisgraphy is an open source Geocoding server which uses data from geonames (a lookup list of place names to spatial coordinates) and open street maps (POI - places of interest: detailed street names, polygons, place names, etc.). If you setup Gisgraphy locally, you can do large batches of geocoding without worrying about limits.

An example gisgraphy setup has been done on the sotowo.cloudapp.net server.