Hacker News new | past | comments | ask | show | jobs | submit
So 1 means the polygons don't cover the entirety of the US which is fine, 2 means some polygons overlap which is fine too, 3 means some zipcodes are excluded from scheme, as one might not be legally allowed to know where a particular unit is.

"Many postcodes for particular lat/lon" should be part of the polygon delivery schema, i.e. you get a list all the time.

Seems like a non-issue for most use cases.

Ok, but you have to think about how people actualy use the polygons you create. You might be assuming these are minor edge cases or that I have enumerated all of the relevant edge cases (I have not) and that we can sweep this in a corner and forget about it.

> 2 means some polygons overlap which is fine too

For some use-cases, sure, but not all. One common use-case for zip code polygons is "I have a lat/lng, just give me the zip code, damnit!" Your users might expect that a lat/lng point can have no zip code, but most won't expect that it can have multiple (because no address has multiple zip codes).

At a minimum that leaves you scrambling to explain "well, but it only happens in a few edge cases where a land parcel has multiple mail delivery locations from different postal carriers, and it's super-rare, pinky swear".

> 3 means some zipcodes are excluded from scheme, as one might not be legally allowed to know where a particular unit is.

Another very common use-case for zip code polygons is "I have a zip code, just tell me where it is, damnit!" Maybe they want to estimate shipping distance without hitting the shipper's API.

Part of the problem here is that the AFPO zips do have a physical location for this purpose, which is the facility where mail and parcels are delivered from the USPS to the AFPO. And your users will probably expect you to know that's what they mean. So when you try to explain that "actually an aircraft carrier is constantly moving and we're not allowed to know where it is", they will think you are being pedantic and condescending, and look for someone else to sell them polygons.

But let's say the user actually wants to forecast sales of the new ThingyWidget 3000 by estimating the average weather by customer zip code (by getting the polygon for each zip and the doing a spatial join to weather data). When they do that for the AFPO drop-off point, they're going to get a completely wrong estimate of the weather because the people receiving mail at the AFPO zip are not physically present at that place. So when you explain that "actually that is the physical location of the AFPO facility" they will also think you are being pedantic and condescending, and look for someone else to sell them polygons.

Notice how you're damned if you do and damned if you don't?

Any choice you make for polygonalizing zip codes will be wrong for some use case, and it will be spectacularly wrong for certain edge cases in very intuitive ways that certain users deeply care about and will blame you for.

Which brings me back to the point: You can make a set of polygons for zips which is "good enough" for many use-cases, but ultimately you cannot represent zips as polygons in a way that is suitable for all use cases because, once again, zip codes are not polygons!

Well the alternative to "here's a service that converts a zipcode to a polygon, and coordinates to a list of polygons, and here's the fine print of limitations and how they are communicated" is declaring that postcodes are arcane entities and their connection with the mortal plane is only an illusion, and no such service is possible.

If I was developing something that required dealing with US GIS I'd very much prefer a service that does the above, and handle the edge cases, than have no such service at all.