I'm using QGIS 3.0 and attempting to calculate the number of people that fall within a buffer. The population count is a field within my block group polygon layer. I've attached a screenshot, the orange polygons are my block counts and the purple layer is my buffer.

At first, I created a point layer where each yellow point represented 50 people in a block group (visible in the pic below), then I randomly placed the points throughout the polygon. I was going to just count how many dots fall within the purple polygon and multiply by 50, but my gut tells me this isn't a very accurate measure. Or maybe it is, since population is not uniformly distributed to begin with.

I have a field in my block group layer that provides the surface area in square miles, the total population, and the population per square mile, so with all that info I should be able to more accurately clip my block group layer by the boundary extent of the purple buffer, and the output should give me only the number of people who fall within the purple. I've tried a simply clip, but the output shows the same surface area & population as before the clip-the field info isn't updated.

I've also tried digitizing, converting the polygon to lines and digitizing to conform to the boundary of the purple buffer, but it seems like a messy and complicated process for a seemingly simple task.

Maybe I'm overcomplicating things..suggestions?

enter image description here

1 Answer 1


The output clip features are showing the original block attributes, because the clip output just gives each feature the same attributes as its source feature (virtual field values become permanent too).

To get the population for each clipped feature, based on the proportion of the original area, you could use the field calculator to create a field on the clipped output layer.

The field calculation expression would be something like: ($area / "orig_area" ) * "population"

Where $area returns the area of each feature, "orig_area" is the area of the whole block (ideally calculated on the original blocks using the same $area expression, to avoid the need for unit conversions).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.