I've got a batch of addresses to geocode (on the order of 10,000), I've looked at various services for doing the geocoding, and each service seems to be able to locate a portion between 50% and 90% of the addresses with address-level specificity. Are there any advantages/disadvantages to getting the results from multiple services and trying to combine them?
-
Combining the best results from various services will probably require some advanced GIS knowledge, or proficiency with scripting/programming, or serious Excel ninja skills. The advantages/disadvantages may be different depending on which of these ways you prefer.– MattCommented Apr 15, 2013 at 16:55
-
@Matt: Yeah, I'm planning to tackle that from the scripting/programming side—I'm thinking that I can use a framework-provided distance-between-locations function to see how far apart the lat-lon pairs from different services are to sort out the addresses that come up roughly matching across services from those that don't.– IsaacCommented Apr 15, 2013 at 17:11
-
How many of the services return accuracy estimates? (Ideally, you would just pick the most accurate geocode results based on the accuracy reports.)– MattCommented Apr 15, 2013 at 17:23
-
They all return some form of accuracy information, I think, though it's often category-level; but I'm also concerned about the case where two different services both claim to have found an address-level match, but they put the address in significantly different places.– IsaacCommented Apr 15, 2013 at 17:25
-
We check our own database by geocoding with google/yahoo/mapquest (we have buisness/enterprise licenses) and compare using FME - any that are flagged as incorrect are checked in another process (sometimes manually)– Mapperz ♦Commented Apr 15, 2013 at 17:34
2 Answers
I work at SmartyStreets and I've been working on a similar comparison for over two years now. As it turns out, even the almighty google gets some addresses wrong. I've compared google to ten other services that provide geocoding.
Here's the comparison:
https://docs.google.com/spreadsheet/ccc?key=0AidEWya_p6XFdGw1RmZ6TjB1ajZxVk81d2pISDMzVUE&usp=sharing
Now, certainly it would be nice to paint my company to look better than the others, but I opted for brutal honesty instead of spin.
The results (small set but it was enough for me) show that overall, the google geocoding service was significantly better in almost every instance. (The green fields show the best for that address while the red fields show the worst for that address). Google averaged a mere 28ft variance.
(update - among the 10 addresses I checked actually Yahoo had the closest average geocoding. wow!)
Keep in mind that there are also instances that I have tested where some of the other services were actually closer than googlemaps. These "other" services rely on the US Census Bureau TIGER data which is generally only updated every 10 years, with the census, while the googlemaps data is constantly updated.
I would recommend picking either google or bing, based on your preference and stick with them. I'm happy to give you more details if you need them.
You might take a look at geopy, a Python library for several of the popular geocoding services. You can get some results to see the differences and maybe go from there:
>>> from geopy import geocoders
>>> p = "1600 Pennsylvania Ave, Washington DC"
>>> g = geocoders.GoogleV3()
>>> us = geocoders.GeocoderDotUS()
>>> place, (lat, lng) = g.geocode(p)
>>> print "%s: %.5f, %.5f" % (place, lat, lng)
1600 Pennsylvania Ave Northwest, President's Park, Washington, DC 20500, USA: 38.89710, -77.03654
>>> place, (lat, lng) = us.geocode(p)
>>> print "%s: %.5f, %.5f" % (place, lat, lng)
1600 Pennsylvania Ave NW, Washington, DC 20502: 38.89875, -77.03768