I installed postGIS and the associated TIGER geocoder for work, and noticed a strange thing when geocoding some addresses in the Atlanta area. For example, when I geocode the address "8610 Roswell Rd, Atlanta GA 30350," the TIGER geocoder spits out

-[ RECORD 1 ]----------------------------------------------- addy | (8610,,Roswell,Rd,,,"Sandy Springs",GA,30350,t) geomout | 0101000020AD1000000D9C2329851655C04F0F9046E4FE4040 rating | 11

At first I thought this was just an issue where someone had incorrectly entered the address as Atlanta instead of Sandy Springs. Strangely though, if I search for "8610 Roswell Rd, Sandy Springs GA 30350" on googlemaps, it says that the address is in Atlanta. This is despite the fact that a search for Sandy Springs in googlemaps returns a bounding box that clearly includes the address in question.

Does someone know what is causing this discrepancy? Is there something weird going on with cities around Atlanta or is this a general pattern?

  • I see this in multiple metro areas, not just Atlanta. It appears to be dependent upon the geocoder that the service is using. Curious about this one, I went to the USPS address lookup--8610 Roswell Rd, Sandy Springs GA does not exist, but 8610 Roswell Rd, Atlanta GA does. I assume Google Maps and the USPS use the same geocoder. – MaryBeth Dec 11 '15 at 2:05

The city matched and returned is going to depend on the reference data, more so than the geocoder or anything else. As MaryBeth pointed out, city names are quite ambiguous in metropolitan areas.

In this particular case, Sand Springs, GA is an incorporated city, but the USPS still uses the preferred city name of Atlanta, GA for the Zip code 30350. Given that, it's not surprising that some geocoding reference data sets (such as what Google uses) have Atlanta instead of Sandy Springs.

Also note, Dunwoody would have also been valid:

Default City Name in ZIP Code™ 30350

Please use the default city whenever possible.


Other city names recognized for addresses in 30350


  • I didn't end up accepting this answer because I felt like the discussion of zip code as an identifier of city was unrelated. I am asking why one data sources has a different name, not what cities are in a particular zip. Are you saying that the geocoder Google built uses the USPS default city name instead of actual city name when it does geocoding? – Sam Gross Dec 30 '15 at 0:17
  • So what you are actually asking is: What determines the city of a particular address? Do the city limits matter, or other things? What about Unincorporated areas? My address is located in an unincorporated area of a county, and yet there is still a city name associated to it. Not counting 911 addressing, I'm not sure of another way of assigning city names. It's possible that the TIGER data simply intersected city limits to determine city names, but what of my situation above? – Evil Genius Dec 30 '15 at 0:54

When you geocode "8610 Roswell Rd, Atlanta GA 30350" using the TIGER Geocoder, the code is using the "place" (Sandy Springs) that is related to the "edge" (road). The code is pretty complex but you can debug it in pgAdmin.

Simplifying the code helps identify how the geocoder is retrieving "Sandy Springs":

SELECT b.fullname,f.placefp,p.name
FROM edges as b
INNER JOIN faces AS f ON ('13' = f.statefp AND ( (b.tfidl = f.tfid ) )) 
INNER JOIN place p ON ('13' = p.statefp AND f.placefp = p.placefp )
WHERE fullname = 'Roswell Rd'
    AND b.statefp='13'
    AND '8610'::integer >= least_hn(b.rfromadd,b.rtoadd)
    AND '8610'::integer <= greatest_hn(b.rfromadd,b.rtoadd) ;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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