I’ve built a site to create an open geocoding dataset over at opengeocoder.net.
The premise I worked with is to change the way geocoders work. Today, a geocoder uses some chunk of import code to import a large dataset from one format in to another. Then the geocoder itself (which is a large piece of software) takes a string from the user like “london” and uses it’s imported dataset to eventually give you a bounding box. The client uses this bounding box to zoom and pan a map to the correct place.
What if you threw all that away and just linked the string “london” to a bounding box? Thus opengeocoder.
In previews the number one thing asked for was synonym support. That is, “AK” should spit out the same box as “Alaska” without having to add both strings and two bounding boxes. So, you can do that. There is an API which spits out JSON so you can hook your map project up to it.
OpenGeocoder starts with a blank database. Any geocodes that fail are saved so that anybody can fix them. Dumps of the data are available.
There is much to add. Behind the scenes any data changes are wikified but not all of that functionality is exposed. It lacks the ability to point out which strings are not geocodable (things like “a”) and much more. But it’s a decent start at what a modern, crowd-sourced, geocoder might look like.