The solution is to map collections to a coverage area (shape) instead of a point. Then when we query for any point inside the United States, we will see that it's inside of the coverage area for collections that cover the entire United States.
There are several sources for place boundaries, the largest of them being OpenStreetMap (OSM). But there are several issues with most of these:
- They were created to enable queries that map to a point or to enable queries that get a list of features (points of interest, like stores or restaurants) in a specific area. We have yet to find a service that allows for a string search to return a shape that represents the place's boundary.
- They do not take into account the fact that places only exist for a particular length of time, and that the boundaries of these places change over time.
- There is no reasonably hostable database that a developer can setup and use. OSM's data is available as a planet.osm file that is 31 GB compressed. For most developers that is untenable at best, unusable at worst.
- There are no publicly available APIs that map a place string to a coverage shape.
The alternative is to create a place coverage database and associated API that will take in a place string and return a coverage shape for that place.
We are resigning ourselves to the fact that we need to create said database (though we are asking the experts at GIS.StackExchange to make sure our conclusion is correct). This will slow us down significantly but the resulting service will be valuable for the community.