I created an Aspect Layer with 9 Zones on which I want to use the Tabulate Area Tool with another polygon layer namely Woods. So what I actually need to know is the percentage, covered by woods for each of these areas. I tried it with tabulate area but without success, the intersect tool might be useful here but I can choose the polygon layer there.

5 Answers 5


There are two ways of calculating, raster on raster or vector on vector. radouxju has given an instruction on raster on raster but I believe the vector on vector might be more what you're after.

Convert your raster into polygons using Raster to Polygon, don't simplify the polygons for more accurate results.

Percentage of cover for the overlaying polygons is Area in Zone / Total original area, to preserve this add a field for original area (let's call this OArea) as the shape areas will be updated during the overlay.

Overlay with the zones using Intersect, Identity or union... whichever one looks best to you;Union or Intersect on two layers can be done with a standard license where Identity is an Advanced tool. Then summary statistics to compile your output table: Use your original FID/OBJECTID, OArea and Zone as the case fields and shape_area as a sum, this will give the areas for each ID and Zone combination, then divide the ID/Zone area sum by the OArea to give the percentage of each polygon covered by the zone type.

If you want an overall value and not to identify each input polygon then sum the OArea as well as the Shape_Area and leave only Zone as case field, then divide Shape_Area sum by OArea mean for percentage of each zone type over all input polygons.


convert your woods polygon to raster (feature to raster) with the extent of your aspect layer

make it a binary layer (raster calculator : Con(IsNull("woods"), 0, 1))

use zonal statistics as a table to have the mean of your wood layer (this mean will be the percentage of the area covered by wood)

  • Thx for your answer, but I'm not really sure how the mean(average) can be my percentage. Would you mind to give me one more small explanation?
    – Daniel
    May 9, 2014 at 13:38
  • pixels have the same size. the mean will be the sum of pixels with a value of one (forest) divided by the total number of pixels (total zone). So this will be the percentage in area.
    – radouxju
    May 9, 2014 at 13:42

If you have advanced license use the Tabulate Intersection tool. This is exactly what is that tool is for.


For two polygon features, I like Mike's method. If you are working with raster feature and/or zone data, I personally prefer using PolygonToRaster and Combine, shown logically in pseudo-code:

Zone_Raster = PolygonToRaster(Zone_Polygon, re-scaled & snapped to Feature_Raster)
Combined_Raster = Combine(Zone_Raster, Feature_Raster)

This outputs a new raster with a band of values corresponding to each unique combination of overlays between the two input bands (feature and zone number), as well as a cell count for each unique combination, and two bands corresponding to the original band values. Since you know the cell resolution, you can simply multiply that by the count for each unique combination to get the area. The number of features per area is already provided.

What I like about this approach is that it is simple yet very generalizable for many different types of calculations. It also computes much more efficiently than other methods, particularly Zonal Statistics. Depending on the precision of your polygons, this approach may be suitable for that data as well. The only catch is that you need Spatial Analyst. However, you could create your own function in QGIS's Raster Calculator for free or use its Zonal Statistics function, which is leagues faster than ArcGIS.


This really gave me fits because I had a similar problem. I thought that intersect resolved my issue, but upon closer inspection I realized that intersect did not "count" my polygons (also woods/trees) that extended beyond the area of my buffer zone (i.e. sq ft for big wooded areas was computed as zero). On the other hand, other strategies I had tried resulted in the computation of the WHOLE wooded area without regard to my buffer zone (e.g. resulting in a computation of wooded area that was greater than the area of my buffer zone). So I either ended up with data that didn't count big wooded areas at all or counted the whole wooded area despite my intent to only count what portion fell in the buffer zone. Here's what finally worked for me:

  1. Clip the tree layer w buffer zones
  2. Intersect Clipped tree canopy files with buffer zones (This step connects the clipped data back to the school ID / buffer zone)
  3. Use dissolve based on the ID of your buffer zone (mine was school ID) - input the Clip-intersection layer and check only the school ID so that it aggregates by school. Open the dissolve attribute table; create new field (long integer) and use calculate geometry to compute square feet for total tree canopy falling within each buffer zone. Use that total sq feet and divide by the total area of the buffer zone to create a proportion of tree canopy. Export that data for use in statistical analysis.

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.