Hacker News new | past | comments | ask | show | jobs | submit
This is interesting. For a long time it was pointed out that ZIP codes, unlike say, city or state boundaries, were not properly representable as polygons, since they don't divide up acreage into zones, but rather label postal delivery routes. Suppose I build a new neighborhood way out in the middle of nowhere. The "polygon" concept suggests that we could look and see what polygon I'm in, and that will determine what post office delivers my mail. But in reality, if there was no route to that area already, they could decide to make it part of any one of the surrounding routes.

I suppose though, as long as you let the polygons map has uncontained areas, where no routes currently exist, it's a doable task to draw polygons around the limits of every route network, as long as you don't mind that they may have lots of weird ragged edges.

As someone who has worked with geodata quite a lot, that wouldn't be a good idea in terms of resource usage. You are blowing up the size of the dataset by one or two orders of magnitude. Maybe even more. Processing these polygons would be extremely annoying.

I once built an interactive map for some areas in Switzerland with postcodes rendered on it. I had to use a lot of tricks to keep it down to a few hundred KB for just about 5% of Switzerland's area. If I tried to add more areas, I'd have to abandon the approach of rendering polygons directly with Leaflet and move to static, pre-rendered images. Now, if you add 10 or 100 times more points, you would barely be able to render it fast enough on the CPU anymore.

So, nice idea, but the polygons become hard to work with then.

It's become much easier to do this with the advent of tiled vector data and libraries like https://github.com/maplibre/geojson-vt

Here is an example using Mapbox GL - https://demos.mapbox.com/boundaries-explorer/?country=US&lay...

loading story #50438035
I'm confused, we did this on US Tiger line file data in 2006, rendering it on a early equivalent of Google Maps. You have to decimate the polygons to get them to render but doing bounding boxes around postcodes is fairly reasonable.

I think the one I enjoyed the most was a zipcode with 38 separate geographical areas, and the other example was a street where one half was one zip code, and the other was a different one, but half way down the street they swapped sides. Representing that with non-overlapping polygons was impossible. So we just let them overlap and shrugged.

I was talking about runtime rendering. It's a bit of a hard topic to talk about, as there are a multitude of use cases and approaches.

But in general, having more points really doesn't help with processing geo data. As you said yourself, you had to decimate the polygons. It's always compute vs. precision.

> Representing that with non-overlapping polygons was impossible. So we just let them overlap and shrugged.

Yup, lots of weird edge cases. For that one, you could also represent it with a multipoly.

Making each able to be a union of multiple enclosed areas would probably also help add an axis of flexibility.
I thought you used to be able to get it from tiger/line data
Doesn’t that imply that a ZIP code could change if the route is changed?
Yes. I had my ZIP code change when I was a teenager.
Did it just change with no net new zones?

I had mine changed from a new zip getting added as the area's population grew (after it had been removed decades earlier).

Only if it’s 1:1 instead of many to many
Yeah, I always thought that was a bit of an aCkTcHUuaLly type of point. Okay, okay, it's about routes. But, when you can draw perfectly mutually exclusive convex hulls around the unions of the lots receiving mail for a given zip code, then you can draw zip code polygons.
I don't think zip codes in practice can be both convex & mutually exclusive.

Imagine a river that divides two zip codes, with river-front property on both sides. If that river has a bend in it (-∿-) that's greater than the width of the river+property, the polygon bounding one zip code would cut through the other, or the polygon is non-convex where it bends along the river.

The Pentagon has six zipcodes and they're divided up by floor.

(My standard example used to be the World Trade Center, which had two - not one for each tower, but one for the state government offices and one for everything else.)

Thats interesting, how does that work with addresses that dont have mail delivery?