ZIP codes are a bad spatial abstraction | SkaldMaps
Login
Get started for free
ZIP codes are a great invention. I almost guarantee you know yours by heart. And probably your work’s. And maybe your parent’s. Depending on your age, you’ll probably know 90210. If you’ve ever been to Chicago, you’ll maybe know 60606. Or New York. And so on and so forth.
However, they are also a pretty awkward spatial abstraction. ZIP codes, similar to Social Security Numbers, have been used for things they weren’t intended for for decades (horrifyingly, including database primary keys).
And yet, we use ZIP codes all over the place, largely because they are a familiar concept and most real estate workflows already use them (go to Zillow or any real estate search site, you’ll be able to input one). I’ve yet to tell a realtor “I’d like a house in census tract 5.02 AK” (although that wouldn’t be a terrible idea, but we’ll get to that).
ZIP codes are useful, but they’re not “geographically clean”. GIS folks like to reiterate this point (and they are correct): In fact, ZIP codes can be pretty misleading.
In this article, we’ll briefly talk about why ZIPs are weird and how we get around some of that weirdness (including caveats).
INFO<br>We’ll be using the ACS, the American Community Survey, for several of the examples in this article.<br>However, most of our (and certainly our most interesting) attributes aren’t just ACS data; we combine ACS with weather, healthcare access, education, voting, housing, and other public data, then do the spatial work required to make those sources useful for filtering, rating, and comparing places.<br>However, since that is a rabbit hole in itself, we’ll largely use plain Census and ACS examples for this article.
ZIP codes are weird↑
Allow me to start with a short primer. We’ll stay on brand and start with a map:
US ZIP codes.<br>Credit: Wikipedia.
A map that has exceptions baked into the SVG always promises a good story.
A primer on ZIPs↑
Introduced in 1963, ZIP codes are US Postal Service (USPS) routing identifiers used to send and receive mail. If you have an address that receives mail, that address has a ZIP code.
One of the key issues we’ll be discussing in this article is the fundamental problem that ZIP codes describe routes, not areas (or shapes of areas), while GIS-shaped workflows - including SkaldMaps - tend to pretend ZIP codes are areas.
NOTE<br>When we draw a ZIP-shaped area, we really mean a Census Bureau ZIP Code Tabulation Area, or ZCTA: a generalized areal representation of USPS ZIP delivery data. ZIP identifiers in address and crosswalk data are still actual USPS ZIP codes, so we’ll distinguish them where it matters.
Here’s an example from North Georgia / vaguely Atlanta:
Routes in 30188.<br>Credit: USPS.
You can see the actual routes on the USPS website.
Any shape of a ZIP (including the one above) we might draw is an approximation - if you’re looking for a house “in” this ZIP code (30188), you’d really be looking for a house with a 30188 address.
Real life, however, doesn’t work like that.
ZIPs have problems↑
But before we jump into the spatial issues, there’s more fun factoids to share that are (if nothing else) interesting to think about:
ZIP codes are five digits (sometimes with a ZIP+4 extension), but leading zeros matter, so they’re not integers
ZIP codes can cross city, county, and even state boundaries
The USPS changes ZIP code definitions over time for operational reasons, so statistical consistency isn’t exactly a given
Some ZIP codes represent a single building, organization, or PO box facility (or nothing at all)
Some uninhabited areas don’t have ZIP coverage because there are no mail routes there
Rural ZIP codes can cover enormous geographic areas, while urban ZIP codes may span only a few blocks
Perhaps most “fun”: The USPS does not actually maintain an official list of polygons for ZIP codes (for the aforementioned “not a shape” reasons)
NOTE<br>In case you haven’t seen it, this video by CGP Grey on the topic is wonderful.
A tale of three ZIPs↑
I’m a visual person, so take a look at this (same area as the earlier screenshot):
Three ZIP codes from North Georgia: Three very different areas. More on that in a second.<br>Credit: SkaldMaps.
These are three ZIP codes in North GA - they are all somewhat similar by means of proximity, but actually very different between each other, but also within them. These are at the very outer edge of what any reasonable person could consider the “Atlanta metro” (despite the Atlanta–Sandy Springs–Roswell MSA spreading much further, but that’s a rant for another time).
We can see this if we show population density with a bit more detail:
Three ZIP codes from North Georgia: By population density.<br>Credit: SkaldMaps.
As you can see, the density at the tract level - a separate Census geography, not one level down a ZIP hierarchy - starts to really spike up towards the south (which includes both suburbia as well as “real”...