Sign up ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I'm new to ArcGIS.

I have a layer showing forest cover in a landscape. I'm trying to create a 5km buffer around every forest patch in the landscape and then calculate the amount of forest within that buffer. I've done this before with non-overlapping buffers, just by dissolving all forest patches into a single multipart feature and then intersecting this with the buffers. However, in the landscape I am working on now many of the buffers overlap with each other, and wherever a forest patch within the buffer of interest is also intersected by another buffer it gets split into several features. So, instead of a single value for forest cover per buffer I'm getting value for every little piece of patch that has been created by the overlaps.

Does anyone know how to get around this, so that I have a single value of forest cover within each buffer? Seems like it should be easy, but I've been fiddling with spatial join and merge all day but haven't gotten anywhere. Using V10.

share|improve this question
Have you considered converting the layers into rasters. Raster calculations will be much easier/faster and should not break because of a too high number of features. – underdark Nov 2 '11 at 7:35

1 Answer 1

If you're using ArcGIS 10, you can do it without Editor or Info by creating the buffer as a different layer, then doing a Union (Analysis->Overlay) on the initial layer and the buffer. This should create additional fields in the dataset, for instance if the unique field is "Name", then there should be a field "Name_1". In other words the union is basically joins the structure of both layers together.

You can then filter out all shapes where "Name" is nothing (Deifinition Query = "Name"<>'') [two single quote marks after <>] which should leave you with just the initial shapes, split by the buffers.

You can then calculate the area of each of these objects into a new field and do a spatial join on the buffer layer counting the sum of the area of the filtered Union Layer.

Hopefully this graphic illustrates this visually.Filtered Union Screenshot

share|improve this answer
That worked – thanks very much for your help. my issue now is that the union creates an enormous number of features from all the overlapping buffers, so the geoprocessing crashes unless I do it on a much smaller subset of the total area. trying to work around this now. But the suggested approach works – just not on my very large dataset. Cheers, Jay – jay Nov 2 '11 at 2:41
Good. I'm not sure there's much you can do if your dataset is too large for this method, short of upgrading your hardware, which of course is no guarantee that it will work and expensive. So your options are do it on several subsets and merge, or try another way. BTW - no pressure but if you're happy with the answer as it stands you could accept it ... Of course there are other ways, as underdark has alluded to – Stev_k Nov 2 '11 at 9:30
Steve_K: maybe I'm a bit useless, and I definitely have a bad case of 'man vision', but can't figure out what to click to accept your answer.. If someone can tell me how then I'm happy to accept it. – jay Nov 3 '11 at 3:19
There should be a clear tick box to the left of the question that goes green when you click on it – Stev_k Nov 3 '11 at 9:30
Is there a way to limit the union so it doesn't create the empty geometries? Something like UNION(forest_buffer, forest_patch) WHERE OVERLAP(forest_buffer, forest_patch)? – canisrufus Nov 3 '11 at 13:07

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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