I have created a .shp file of slopes over a range land environment. The goal is to identify any slope over 15% and remove it form the file to calculate graze-able acres. The attached file show a zoomed in area where white no data area encircles flat land(basically a butt or plateau). Obviously grazing animals can not get to the top of the butt to graze but its flat so it shows up as graze-able. I need to find a way to identify and remove all these areas.
Any thoughts?
Thanks,
Yesterday I performed some steps on the dataset provided by Andrew. See them listed below:
# Create a hillshade for visualization arcpy.gp.HillShade_sa("ned10m34101g3","C:/Forum/Pasture/gdb/Pasture.gdb/HillShade","315","45","NO_SHADOWS","1") # Calculate the slope in percentage based on your DEM ("ned10m34101g3") arcpy.gp.Slope_sa("ned10m34101g3","C:/Forum/Pasture/gdb/Pasture.gdb/Slope","PERCENT_RISE","1") # Reclassify the slope in two classes 0-15% and >15% arcpy.gp.Reclassify_sa("Slope","Value","0 15 1;15 159,99526977539062 2","C:/Forum/Pasture/gdb/Pasture.gdb/SlopeClfy","DATA") # Set those areas to NoData that have a slope > 15% (value = 2) arcpy.gp.SetNull_sa("SlopeClfy","SlopeClfy","C:/Forum/Pasture/gdb/Pasture.gdb/SlopeSetNull","Value = 2") # Calculate the cost distance from the water points, using SlopeSetNull as cost raster (slopes > 15% are inaccessible) arcpy.gp.CostDistance_sa("Water","SlopeSetNull","C:/Forum/Pasture/gdb/Pasture.gdb/CostWater")
The result looks something like this (accessibility calculated from water points are represented with blue area):
Indeed the region group tool is a method to obtain the result.+1 for that!
For me, the most straight-forward method would be:
1.) Reclassify your raster into 1 (slope <15%), NoData (slope >=15%).
2.) Use Region Group to group connected polygons. Your buttes should be relatively small groups compared to the surrounding matrix.
3.) Use Con (or other filtering method of your choice) to remove the identified islands from the original raster.
Maybe Daniels' idea 1 (contours) could be modified to make it workable? An idea I'll toss out:
1. Create contours, but based on elevations (not gradient).
2. Derive the 15%+ slopes and convert to polygons.
3. Now Dissolve the polygons.
4. Clip the contours based on the Dissolved slope polygons to find only the contours in steep areas.
5. Run Feature to Polygon to convert the clipped contours to polygons if they do indeed circle an area. Not totally sure this last step would work, but may be worth a try.
Caveat: Even if this works from a topological perspective, it won't work if the steep areas that encircle a butte vary in elevation as they encircle it. So it will be limited by the morphology/geology of your study area. For example, if the butte's are in a sandstone formation with a substantial dip (angle), this won' be effective.
Chris Donohue, GISP
Options 1 and 2 do not account for the those areas that are flat but surrounded by inaccesible áreas...
Are you trying to automate this or is it a one time deal? you have several options
1. Create contours based on gradient and then use clipping.
2. Perform a slope analysis and clip based on the result or.
3. Run the Cost Distance tool as Xander suggested.
Yep, Cost Distance is the best way to get the desired result. Just attach a piece of your data and I'll show you how to get the result.
I think Xanders' idea has potential. Use a line or polygon feature class showing where the cattle could be initially as part of the Cost Distance Analysis.
For example, assuming the islands issue is only buttes/mesas/high elevation areas, you could make the Cattle Starting Locations polygon feature class by just selecting low elevations, then doing the Cost Analysis as Xander suggests. Obviously this will be dependent on your data.
Daniel, That is what I originally did but you will have a Butt that has a 15%+ slope all the way around, and on the top it will be flat. Some of these Butt's can bee 10-20 acres on top. Cattle will never graze them so they need to be removed from the calculation. I am trying to run a tool that will identify and remove any area that is completely surrounded by the 15% or greater slope.
Thanks
Use the raster calculator to query everything greater than 15% slope. Then create a new surface and calc the area based on the new surface
If you're willing to share (part of) the data, I'm sure things will become clearer and that will allow us to come up with a solution. Please also provide info on the versión of ArcGIS and if you hace access to the Spatial Analyst extension.
I appreciate the help but have still not been able to come up with a solution.
Interesting analysis challenge. Some quick thoughts/rehashing:
- It's almost like the reverse of Sink detection in hydrology.
- I wonder if there is a way to detect the impassible areas and then aggregate them to create barriers.
Sounds like an accessibility analysis. If you know where the cattle is initially you could do a cost distance analysis in raster format (Spatial Analyst required), assigning inaccessible to those areas with high slopes. This way you will end up with a raster showing those part accessible for grazing.
A possibility that I know won't work for all your cases might be to query your classes grid for values >= 1 giving you a binary grid you could then look at the zonal geometry tool (thickness) and query for areas less than some specified thickness... alternately you could query the binary grid for zones with less than a certain area. the resultant could be used as a mask to produce a new classes grid.
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.