Dataproofer
Dataproofer copied to clipboard
Test location lon/lats for common source datasets (that represent areas, not points)
Point data is frequently used to represent areas (e.g. the MaxMind GeoIP Farm From Hell). That's bullshit. Points are lies.
Building on the suggestion issue from #123, where there's a dataset of fixed, published points, notify the user it's from one of those common datasets.
These include:
-
MaxMind Open GeoIPs
- Countries
- States
- Cities
-
GeoNames (friends don't let friends use geonames)
- All Geonames levels
-
Postal Codes
- Broken out by country
- Null Island (which should just proceed all others)
This could be done using Boom Filters or Cuckoo Filters to test for membership. While newer, there appears to be a pretty nice cuckoo filter implementation in node. Using this, we could distribute very small models rather than the complete dataset, making the footprint for this test fairly small (by comparison).
We'd do a 2-pass system for identifying common space->point data:
- one filter for ALL of the above points: Is this a common bad lon,lat?
- A filter for each or the above categories to notify the user which dataset it's likely from
I'm gonna break this up into some sub-tasks because there's quite a lot of data to be vacuumed up and sorted properly.
- MaxMind
- GeoNames
- [ ] cities
- [ ] @riordan could you elaborate on tricky GeoName levels?
- Postal Codes
- [ ] TODO: munge Who's On First data. (The postal code GeoJSONs on Github seems to have 0,0 coordinates, example here. Could you provide some details on how to get this into a list of points to add to our filters @riordan?)