8

I geocoded the address "50 Hurt Plaza Southeast, Atlanta, GA 30303" twice.

Once on July 28th, 2014 when I got the coordinates: (33.754208, -84.387272)

And again today, August 18th, 2014, and got the coordinates: (33.754129, -84.38721).

Should I expect google to update its geo-coordinates for given addresses throughout the year?

It's a concern for me because I confirm the identity of buildings in the database I'm working with by comparing the geo-coordinates, and that's not going to work so well if they're in flux.

Note the results above have been rounded to the sixth decimal.

  • 1
    I think the only answer you're going to get is whenever they obtain better (newer) data. The Google dataset is amazing, usually a little inaccurate, but still a great source of information. Updates are happening constantly but the dataset is so big that accuracy over the whole cannot be stated. I'm of the opinion that you don't look a gift horse in the mouth - you're not purchasing the data so you're not in a position to complain about it. If you really need it to be static then purchase the data and maintain the database yourself. – Michael Stimson Aug 18 '14 at 22:57
  • 1
    Even if we knew how often Google updates their map data, I think the real question is, "Can I use coordinates as a way to identify addresses/buildings?" unless I'm reading the question wrong? – Matt Aug 19 '14 at 3:07
9

Yes, always anticipate coordinates to fluctuate.

Though the building is not likely to shift on the earth's surface, using coordinates as identifiers/keys for addresses is a bad idea because the data set is going to move from underneath you:

  • Accuracy a matter of definition. Is an address most accurately pinned at its mailbox, or its largest structure, or the front door? Which front door? Maybe the driveway?

  • Decimal precision is another concern. Is 33.754208 the same as 33.754209? This can be fixed by rounding, but then you lose precision. Adding decimal precision is a luxury you may not have. No matter how precise your decimal is, they're likely to be different (especially considering how computers compare float types) even if they're "the same". You're wholly dependent on low-level implementation details at this point.

  • When you don't control the data set and you're using a physical attribute to key something, you can't guarantee that the key won't change. But that's a problem because your database expects the identifier to be unique and constant. Even if you update it, what about collisions with another data point?

Even if you do own the data set, you're subject to the first two problems. Definitions and implementations change. You could just never update your coordinate data, even for better "accuracy," but addresses still change whether you like it or not, invalidating your cache.

What you can do, though, is own the key. Don't use coordinates as identifiers; rather, assign a key that is guaranteed to be unique across your application (or possibly the world) and don't ever let it change.

At SmartyStreets, I deal a lot with geocoding addresses. For instance, that address is a building default. It's missing a secondary (apartment/suite) number. Though our data is block-level (near-rooftop), if we could get as precise as possible, what would its coordinate be? Right now, we assign it 33.75425, -84.38721 which is only a few feet away from where Google Maps puts it. Should it be a different coordinate if it's the lobby vs. a unit in that building? The answer to that question can change, thus changing the underlying data set. And what about units that are right above each other (you can pin a point in a building, but which floor did you mean)? Google obviously goes through the exact same questions, and if the answers change, so do the coordinates.

As such, we always recommend that people give the address a key that they control to uniquely identify it, and never change it.

Why?

Addresses are a mess. They can change too, especially if you start asking the philosophical questions about "What does an address really mean? Does it represent a building or resident? Or a mailbox?" and when you start considering that addresses are temporal, meaning that they change with time, it gets even uglier.

We also hear of people that try hashing the addresses or using the delivery point barcode as an identifier. Don't do that, because even in a standardized format, addresses can change and yet still be the "same" address. And the delivery point barcode, erroneously thought to be unique for an address, is doubly guilty: it changes and is not necessarily unique. Cool, huh?

tl;dr Make your database rely as little as possible on the actual address and coordinates.

  • 1
    I like your philosophical what is an address? In truth, how do you measure accuracy? Against more accurate data surely, but how do you determine one dataset is more accurate than another? Survey measurements are based on observations and tied into benchmarks that may be decades old and placed with the modern equipment of that era. Your tip on "owning the key" is a very good idea - so long as keys don't change. Or, conversely, build your application with the knowledge that the address location isn't static so don't rely on it. – Michael Stimson Aug 19 '14 at 4:08

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.