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.

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.

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