How to compute % area above 30% slope for 100+ polygons in layer

1384
3
05-09-2011 12:44 PM
DavidStrip
New Contributor II
I have a map with about 100 or so polygons in a single layer. (For what it's worth, the extent of the bounding box is about 10,000 sq miles, the area of the polygons is about 3000 sq miles - 30% fill).
I also have the DEM for the whole region. I've run slope to compute slope over the region, then used extract by mask to limit the slope map to the region covered by the polygons. That's where I've run out of ideas. I assume the next step is to clip/extract the slope raster to each polygon, but I have no idea how to do that. I see an extract by polygon function, but that requires I input the coordinates of the polygon - it doesn't read them from the layer (and there are over 100 of them).

Next up is once I have the slopes clipped to the polygons, how do I compute the percent of the area above some give slope, say 30%?

I would prefer not to have to write Python for this, but can if I have to.
0 Kudos
3 Replies
DarrenWiens2
MVP Honored Contributor
It sounds like you should be using the Zonal Statistics tool, using your polygons as zones and slope raster as the value raster. Use caution if your polygons are overlapping. I believe the output is a raster showing the slope and zone of each cell. Then it's just a matter of summarizing the data.
0 Kudos
DavidStrip
New Contributor II
Thanks, that was most of what I needed.
First, though I had to compute which pixels where >30% slope. I did this with the raster calculator which I eventually found hidden under Map Algebra.

I was then able to use the Tabulate Area under Zonal tools to finish the job.
0 Kudos
curtvprice
MVP Esteemed Contributor
Thanks, that was most of what I needed.
First, though I had to compute which pixels where >30% slope. I did this with the raster calculator which I eventually found hidden under Map Algebra.

I was then able to use the Tabulate Area under Zonal tools to finish the job.


Here's another approach:

1. Tag high-slope pixels with the polygon ID, others NoData
   (Raster Calculator or Single Output Map Algebra)
   (Set the extent, snap, and raster processing cell size to elevgrid before executing)
   SetNull(slope(elevgrid,"DEGREES") <= 30,polygrid(inpoly,polyid))

2. calculate area of each zone with the Zonal Geometry As Table tool
0 Kudos