This must have been asked before, but I can't find the exact answer and my attempts so far have not worked. Most of the overlap questions I see are for calculating the area of overlap for portions of polygons or points in polygons. I want to do something that should be simpler: count overlapping polygons from separate feature classes.

I have 100 separate feature classes, each representing the occurrence of a single species. They all use the same polygon template (based on sub-watershed boundaries), meaning that when more than one species is found in an area the polygon (sub-watershed) for those species' feature classes are perfectly aligned (overlap by 100%, exactly). Note: although not as efficient for disk storage, this is how the data was provided, rather than relating tables of species data.

Example of overlaps.

Example of overlaps: Each color (blue, red dots, orange lines) each represent one species. When they overlap, e.g. red and orange, there is a perfect overlap of polygon boundaries.

What I want to do is count the number of species recorded for any given location, i.e. count the number of times a polygon overlaps and associated this with a specific polygon location. The area of overlap is not relevant in this case, just the count. With a raster, this would be equivalent to setting each layer's cells to have a value of 1, then summing. Is there a simple way to efficiently batch/automate this with 100+ vector features, without converting to raster?

So far I have tried using this count overlaps model. However, this resulted in an m-aware error, which seems unrelated. I am now running union, which has been progressing for a few hours without completing. Since I may try and run this with 1,000+ feature classes in the future, I was trying to find a more efficient way to complete the analysis. There must be a very simple way to do this, something that I am overlooking.

  • What kind of feature classes are they? Are the species occurrences point feature classes and the sub basins polygons?
    – Mike
    Jan 20, 2015 at 17:22
  • The thread at gis.stackexchange.com/questions/51929/… goes beyond this: it asks how to count overlaps and then, further, rasterize the result. You don't have to do the rasterization step if you don't want to. I think that might make that thread a perfect duplicate of this one. Is there some difference in what you need to do?
    – whuber
    Jan 20, 2015 at 18:27
  • Could you describe your 'sub-basin' data a bit more? Is it also vector? is each 'sub-basin' a feature (ie polygon) or a feature class? Jan 20, 2015 at 18:34
  • I have edited the question to hopefully address some of these questions (apologies for the original confusion). @whuber, I have tried union, which has been running for three hours. I was trying to find a more computationally efficient way, but if it eventually completes I will close this post as a duplicate.
    – Dan
    Jan 21, 2015 at 5:57
  • 1
    @whuber, I eventually had to halt the union tool, as it went into a runaway process (had written 62 GB of data, starting from the original input of only 15 MB). Seems to have been due to a mismatched extent environment automatically set by the data. Spatial join as giving higher numbers (i.e. 5, when I expected 2), so there may be an issue with the data (or I just do not understand what is going on). I will try some other alternatives, such as the points-in-polygon you suggested. Since there are 100 feature classes, it has to be iterated; union would be the fastest alternative if it worked.
    – Dan
    Jan 22, 2015 at 17:50

1 Answer 1


Have you looked at Spatial Join?


Make the sub-basins the 'target features', the species polygons the 'join features' and then Spatial Join should generate a field Join_Count that simply gives the number of joins that matched each target feature.

You can join one-to-one and get the Join_Count directly. If you wanted to retain information about which species were matched to which sub-basin, you can do a one-to-many join (you end up with a record for each species) and then calculate the frequency of each sub-basin in the final table.

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.