Hi, I am attempting to identify the steepest portions of a line in arcgis pro. I have a line feature with z values and a DEM. I have calculated maximum slope for the entire line using the "Add Surface Information Tool". Now I would like to identify the location of this maximum slope along the line. Is there a tool for this in ARC GIS Pro?
Thanks,
-Andrew
Solved! Go to Solution.
Your slopes will make no sense if your x and y are not in planar units (aka meters) since your elevations are in planar units (meters).
Slope has to be calculated using projected coordinates. Either use a projected file (like a UTM or even an Albers or something local) or use the Add Geometry Attributes to get the coordinates in projected units before calculating slope
In ArcMap, there is the Deriving Steepest Path tool on the 3D Analyst toolbar that will do this workflow and there is an open ArcGIS Idea to add this to ArcGIS Pro here. Not sure when it will be implemented.
Is your line a segmented line or a continuous line?
Did you densify the coordinates of the line and does each point on the line have a Z value?
Field calculator, python expression, should do the trick. Convert to degrees if needed. the 'abs' is if you don't care about uphill vs downhill
abs(!Shape!.firstPoint.Z - !Shape!.lastPoint.Z)/!Shape_Length!
Split Line At Vertices (Data Management)—ArcGIS Pro | Documentation if you want a finer resolution
Dang! Thanks Dan. That worked great for calculating the maximum slope. Sorry, I didnt explain my question well enough initially. I am trying to identify the segments of a line that are of a problematic (high) slope angle. I need to identify these visually on the map so that I can go in and mend the line segment in these areas.
I am working on a trail planning proposal and need to ensure that there are no short pitch maximum grades over a certain grade.
Thanks so much for the info you have already provided, let me know if you have any ideas for how to select line segments above a particular grade.
Assuming that you did this on the segmented (split at vertices) version of your lines
Query the table for slope above your grade threshold... they will appear selected on the map,
Or
Sort the table on the slope field in descending order, select the rows above some threshold and they will appear selected on the map
Or
Add another field and do a field calculation like
1 if !slope! > x.xxx else 0
Then query for the 1's and they will appear on the map
OK, one more (hopefully) question: I am getting large values for average slope in the attribute table of my segmented line. like this....58957.520938. I cant seem to figure out the issue, any ideas? Thanks again for all the help
rise over run yields 58957
It is a ratio so it isn't a real issue unless your run is short
The forward slash ... / ... probably has a similarly large slope value.
You are probably looking for certain rise over a certain run,
in other words, you want to delineate places that have more than a 5 meter rise over a 10 meter run, which is a 50% slope. a 100 m rise over a 10 m run.
So those really ridiculously large values are probably at locations where the points are really close together. Highlight them and look at the map, they should be short relative to the elevation difference, or, you have quite the remarkable landscape 😉
hmm, the runs are short but not that short. I think I must be making an error. Upon visual inspection it looks like the high valued line segments should not exceed a reasonable grade, I would be surprised if the max was 50%