Select to view content in your preferred language

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

2054
3
05-09-2011 12:44 PM
DavidStrip
Emerging Contributor
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 Alum
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
Emerging 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.
0 Kudos
curtvprice
MVP Alum
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