Problem: identify locations of exposed cliffs and bluffs with a minimum slope angle. I've created a DSM using 1m lidar and have performed slope analysis. I'm interested in creating a point feature class that plots points for areas that contain certain slope characteristics. For example, the attached pic shows slope values 75 degrees or steeper. I'd like to perform a calculation that looks at the slope raster and assigns points to areas that are likely to contain cliffs that are, perhaps, a certain continuous length and minimum vertical relief. Put simply, I'm looking for a model that analyzes a dsm and says, 'here's a point that might have a cliff.' Using ArcGIS Pro 2.9.0
have you tried query your slope raster to identify slopes within your desired slope range, using the Con statement or SetNull
Setting values to NoData with Set Null—ArcGIS Pro | Documentation
OutRas = SetNull(SlopeRaster <= ??, InRas1)
then extract to points
Raster to Point (Conversion)—ArcGIS Pro | Documentation
That worked for isolating the slope range! Thanks. But do you know if there's a way extract the resulting raster to points without returning a point for every pixel? Ideally, I'd like to extract a single point for a certain "volume" of slope. By volume, I mean a certain count of contiguous pixels. So, if in the slope raster I have one section of the raster with 100 contiguous pixels and another section with only 99 contiguous pixels, I'd like to extract only 1 point to be placed somewhere in the 100 pixel area. Hopefully that makes sense.
not without converting to vector
raster zones to vector (eg raster to polygon)
Raster to Polygon (Conversion)—ArcGIS Pro | Documentation
You might need to run a MultipartToSinglePart tool on the above.
Then if you really need just a point in each polygon/raster zone, perhaps
Feature To Point (Data Management)—ArcGIS Pro | Documentation
you perhaps could run
Zonal Geometry (Spatial Analyst)—ArcGIS Pro | Documentation
with the centroid option but that runs the possibility to have to run a RegionGroup to make sure each zone has a unique value (ie you might have several spatially separated zones with the same class)
then convert to point and use those points to extract the values