I am using ArcMap 10. I have two datasets, one of which consists of many small contiguous polygons, and one which has many small non-contiguous polygons. The first dataset is census blocks, and the second is a polygon outline of urban areas generated from the raster datasets NLCD provides. What I want to do is clip each census block such that each census block polygon only contains the urban area specified by the NLCD polygon. Running clip with the census blocks as the input features gives me this. However, there are additional constraints: If the area of the intersection between a census block and the NLCD polygon is under a certain threshold (say, 1000 sq ft), then the entire census block should be kept in the output.

In this example, the green polygon is the NLCD data, and the red outlines are the census blocks. You can see the resulting clip.

http://i.imgur.com/ASYrc.png http://i.imgur.com/OBDkr.png

The issue comes when there is no intersection between the census block and the NLCD polygon; nothing is kept in the output for that census block.

I need to do this for a large amount of data, probably in arcpy. What strategy would you suggest?

  • So, is your issue that you are unable to get areas under 1000sq ft to include the whole census block, or are you just unable to include areas with no intersection? Commented Oct 31, 2012 at 18:32
  • If the intersection of the census block with the NLCD polygon has an area GTE 1000 sqft, then the clipped version should be kept. If the intersection is LT 1000 sqft (or empty), then the original census block should be kept. Using the bare Clip tool, the intersections LT 1000 sqft are used, or not included if the intersection is empty.
    – Eric W.
    Commented Oct 31, 2012 at 20:40
  • Do you need output in vector format or will a raster format do? (Raster will be easy and fast to produce.)
    – whuber
    Commented Nov 14, 2012 at 23:38

2 Answers 2


I would approach this by first using the Union tool.

The output from that will have attributes that enable you to distinguish three sets of polygons i.e. those where the two input feature classes overlap, and those where one or other exists but do not overlap with the other.

From this foundation you can start to apply your other rules - perhaps using a combination of Select, Dissolve and Append/Merge.

Once you have your procedure it should be amenable to turning into a model or Python script.


Perhaps the easiest thing to do would be to use select by location to select all of the census blocks that do NOT intersect the NLCD polygon and copy/paste them into your clipped layer.
You could use a similar procedure to identify the blocks with less than 1000 feet of overlap:

  1. Use select by attributes to select all polygons in your clip layer with <1000sq feet (use calculate geometry in a new field to get this).
  2. Save a new layer with these polygons, and delete your clipped polygons <1000sq ft.
  3. Use select by location to select all the Census blocks that intersect the new layer
  4. Open an edit session and copy/paste the selected Census blocks into your clipped polygon.

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.