Disaggregating vector layer splits
I'm fairly new to GIS, but I've got the basics down. I'm utilizing QGIS and Python to calculate election statistics by legislative and congressional districts. I'm trying to aggregate precinct level results up to the district level but have a small problem. In some districts (about 10%) precincts are split unevenly into 2 or more districts.
The good news is that I have census blocks that are intact across the board even among precincts. Is there anyway I can take the population statistics from the block level to disaggregate the precinct election returns down to the census block level in QGIS? If not, are there tools in Python or PostGIS that will help?
The method I have used to do this makes a bad assumption (that population is evenly distributed across the block). However it is AFAIK the only way to do it.
You can use the percentage of the area of split precincts occurring in different districts to get the estimated population values that you want. The method works like this.
Create a field to represent the original area of the precincts (or use the census blocks). Calculate the area before doing any spatial analysis to get the original area.
Intersect the precincts or blocks by the congressional districts so you have them split into their respective districts.
Create a new area field and calculate the area geometry again.
Create a new field for the percentage of area and calculate that to (the new area over the old area) * 100. This percentage can be multiplied (into a new field) by any of the census values (population for example) to be used as an estimate of the value (population) in that new area (percentage * value).
If necessary to aggregate the multiple values up to the districts (you may want to do this if there are a lot to do), you could do a spatial join and sum up the value(s) of interest by congressional district.