Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I occasionally need to geocode >> 500,000 US street addresses (no features or intersections). I'd like to set up a geocoding service locally to handle these bulk geocodes.

I've used the Tiger-based Geocoder::US 2.0 locally in the past. Initial benchmarking gives reasonable accuracy against Google-geocoded addresses, especially when I don't rely on the Ruby parser and I pass the address elements to the geocoder explicitly.

I've also read a good deal about the PostGIS Geocoder. Since my data are already in PostGIS this sounds attractive, but I haven't set it up locally to try it out.

Also, someone recommended I try Nominatim locally. I don't know much about it except that it's not Tiger based (as far as I can tell), and I'm wondering if I'll get more reliable results.

My question to anyone with experience with the above solutions: How does the accuracy of the three compare? Specifically, which provides the most consistently-reliable geocodes for US street addresses? I'm not overly concerned with speed or setup complexity.

Thanks in advance.

share|improve this question
up vote 13 down vote accepted

I haven't had a chance to test out the Nominatim and Geocoder US geocoders. My understanding though is that the Geocoder and Nominatim can't be run directly in the database, which to me is a big disadvantage because it makes them difficult to use in things like triggers or for batch updates directly in the database.

PostGIS geocoder being a pure PostGIS/postgresql set of plpgsql functions, runs completely in the database. I would expect the Geocoder US and PostGIS geocoder results to be on par and from what I have tested using the web stuff, they are. Google is a bit better since they take advantage of place names.

I think Nominatum since it does use OSM data does use tiger data indirectly since OSM imports for US much of that comes from TIGER with user contributed corrections. I am not sure what vintage (year) of Tiger OSM is currently on. From playing with the web interfaces online it takes advantage of place names too and has an interesting twist in that it allows you to specify the zoom level of the geocoding which allows for faster geocoding by set the zoom precision you need.

Full disclosure -- I've been doing a lot of work on PostGIS Geocoder and wrote the online manual for it. I will tell you a bug I am working on is that I think the location of the point it interpolates is on the wrong side of the street. I'm working on fixing that. If you could care less about which side of the street (or at least sometimes), then that may be a non-issue to you.

Probably worth while testing with the online versions comparing some address results: e.g. nominatim you can test here:

For my use cases I have found the fuzzy checking of nominatum is not as good as what PostGIS Geocoder has. For example my vanity street address (mailing address) is 1 Devonshire Place, Boston MA. PostGIS returns an answer which is close as I recall, Google returns an answer, but I can't get Nominatim to return an answer. To be fair even Boston parcel records have no clue where this is and gets listed in parcel records as washington street. PostGIS can find it since it does various levels of checking and intersections of cross streets etc. I've tested other cases where I purposely type in the zip wrong or something and PostGIS comes back with an accurate set of options. Google does too.

share|improve this answer
Additonal comment: Probably worth while testing with the online versions comparing some address results: e.g. nominatim you can test here: – LR1234567 Mar 18 '11 at 5:54
Thanks for the response! I'll do some benchmarking over the next week or so, but I've been impressed with the PostGIS Tiger coder so far. – danpelota Mar 20 '11 at 2:06
Barring the occasional hangup for a newbie, of course:… – danpelota Mar 20 '11 at 2:08 using TIGER 2013 data, ready to run your own server instance in Amazon EC2 cloud and geocode 1,000,000+ per day. PostGIS as you mentioned, has loaded Zillow Neighborhoods as well and returns FIPS codes for the address parts. REST API similar to Google but your own server, no quota needed. – Biba May 5 '15 at 18:32

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.