I'm working on a personal project studying catchment areas for local travellers, and I'm looking for a way of finding population (& possibly GDP as well) within a radius of a point. I've been checking out census sites, but within a radius has been something I have been unable to find, particularly when I'm trying to do so in bulk (~40,000 times). Could someone point me in the right direction?
I have not done this before, but I do not think you can get exactly what you want (population + GDP) within a radius. You can get population/GDP/demographics down to a census tract. Here is what I would suggest as a rough method (in pseudo code), assuming your radius stays within a US county.
- Get the census tract KML datasets from US Census.
For the point of interest (POI)
A. Determine which county the POI is in.
B. Determine which census tracts are in that county.
For each census tract determine if the census tract polygon is following within the circle defined by the POI and radius.
A. If so, include the population and other data as part of the radius
B. If not, determine if the polygon intersects the circle.
C. If so, use a rough approx. of how much of the population data for the census tract to include (e.g., 50%).
The US Census KML datasets can be found here: http://www2.census.gov/geo/tiger/KML/2010_Proto/
I have done this with different goals. It depends on the resolution you want. My primary approach was similar to above: Create a circle of the radius desired, then use a spatial intersection code to ask if the tract/tract centroid lies inside the circle. I did it with block groups in R and it worked fine. There are lots of tools for that in R, python, postgis.
However, if you want to fine tune it, you can use change of support code http://cran.r-project.org/web/packages/spBayes/ to change the estimates from tracks/block groups to a fine grid, then apply your code. If you change your support to a hexagonal grid you can get a pretty good estimate.