Basics: I have a country wide dataset of Census blocks, I need to find the population of unrelated boundaries that do not ALWAYS follow census blocks. I would like to use Select by Location-centroid as my method for determining what census blocks should be in the different boundaries.

Any tips on how to do this in a model?


So I originally was intersecting my Boundaries (we will call them FBoundaries) with census Blocks to find the population of each of the fboundaries. However the fboundaries do not always follow the census blocks so I was getting double counts. So what I want to do is somehow tell the model to only take the census block if the centroid of the census block is in the Fboundary. Unfortunately I have the entire country I need to work with. And i'm lost –

  • Could you clarify your question a bit more? You have a census block dataset, but what else? Where are you getting the population for the "unrelated boundaries"? Are you aggregating your census blocks up?
    – GISHuman
    Commented Aug 14, 2014 at 14:20
  • What about the census blocks that cross the Fboundaries? So one census block falls into two - how will you account for that?
    – GISHuman
    Commented Aug 14, 2014 at 19:29

2 Answers 2


Doing this iteratively in a model with selections is one approach but there are a couple of other options that I think would eliminate the need for iterations. I'm not entirely clear if you're trying to fit a solution into a larger model you've already built or going the model route because of the size of the data and necessary iterations to use selections. The below could be implemented in a model, but they're more about solving the double count problem of your initial Intersect method.

One would be to convert your census blocks to points. With an Advanced license you can use Feature to Point, or if you don't have Advanced there's a slightly longer work-around calculating the XY of the centroids and making an event layer out of them. Both are discussed at this question. Once that's done you could Intersect those points and your Fboundaries (since it's unlikely though possible a centroid point will fall exactly on an Fboundary). You can then run Summary Statistics on the resulting point layer to get a total population by Fboundary (and if necessary join/join field that summary table back to the Fboundary to get the population as an attribute).

Another approach would be to use apportionment as discussed at this question. That will actually divide up the population attribute of the census blocks based on how they are split by the Fboundaries - so if a block is 2/3 in one boundary and 1/3 in the other, the new shapes will get 2/3 and 1/3 respectively of the population attribute value for the original block. There are a number of considerations for going down this path though, some discussed at that question (sliver polygons, accuracy of apportioning by area, etc.).


in a model, you can use the "select by location" tool (management > Layers and table view). The little trick is that you first need to create a layer (with the "make feature layer" tool, same location) before you can use the "select by location" tool.

based on your updates, you could also consider the use of "tabulate intersection" providing you have the advanced licence. You then have all the information to group your data in a single table.

Another approach is to divide the population of each census block by its area, convert this to a raster and use zonal statistics as a table to get the population (the sum of the pixels multiplied by the area of the pixels would be an estimate of the population).

In any case, there is no good solution to this problem,

  • See the new comments, I think what OP wants is not as straightforward as this
    – GISHuman
    Commented Aug 14, 2014 at 15:55
  • The same approach in your new third option could also be used without going to raster - you'd just do the population count to density (normalization) conversion/field calculation in the census block data, Intersect the two layers, field calc the new shape areas times thier population density, then dissolve by fboundary id with a sum stat on the new shape's population field you calculated. This is basically another method of doing some apportionment by area. I suppose it's all in how many steps and conversions you want to do.
    – Chris W
    Commented Aug 14, 2014 at 20:01

Your Answer

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

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