[GIS] Extracting peaks from DEM and creating 5 m elevation buffer around each peak in ArcGIS Desktop

arcgis-desktoparcmapelevationextractspatial-analyst

enter image description here

I have a DEM available and would like to identify all the peaks that are likely to be bare rock. I want to be able to isolate these areas and create a 5m elevation buffer around them to represent the non-productive forest. I have used tools like fill but find the output to be to large/general and would like to get more specific..


In summary, I want to find and extract each peak in the DEM to turn it into a polygon out to the closed contour that encompasses the peak. Ideally like the picture attached.

Best Answer

WORKFLOW:

import arcpy
from arcpy.sa import *
from arcpy import env
env.overwriteOutput = True
height=0.5
DEM=arcpy.Raster("dem")
invert=8848.1-DEM
shallow = Fill(invert,0.95*height)
deep = Fill(shallow)
big=Con(deep>shallow,1)
outRgnGrp = RegionGroup (big, "EIGHT")
outZmin = ZonalStatistics(outRgnGrp, "VALUE", invert,"MINIMUM")
AOI=Con((outZmin+height)>invert,outRgnGrp)

pGons=r"..\SCRATCH.gdb\pgons"
peaks=r"..\peaks.shp"
arcpy.RasterToPolygon_conversion(AOI, pGons)
arcpy.Sort_management(pGons, peaks, sort_field="Shape_Area DESCENDING")
arcpy.DeleteIdentical_management(peaks, fields="gridcode")

OUTPUT:

enter image description here

NOTE: I presented workflow as a script, just to make it look shorter. In reality it is just a sequence of existing tools placed in order. You'll need to replace 3 lines, height assignment and output feature classes to make it work.

Related Question