[GIS] How to find the slope of road segments with point elevation data of the same linear path

arcgis-10.3arcgis-desktopdempoints-to-lineroad

I'm currently working on a project to calculate road grade along roughly 30 miles of highway. I need to isolate and portray all sections of road with more than a 5 percent grade; in hopes of finding that there are at least 15 miles of road that fall into this category.

I currently have my line segment (road), which I generated random points along, and extracted elevation data from DEM to these points. Now I have a points shapefile and a line shapefile but cannot find a way to merge the two.

I expect that I will have to calculate the slope for each segment of the line, but in order to do that I need my line to have elevation data for each segment (which I was expecting could be taken from the point data)

I need to find a way to break my line up into segments between the points I generated in order to attach the proper elevation data (from the points). Maybe I am going about this the wrong way? I am running Arc 10.3 with unlimited license for the ArcToolbox, so I know I have the tools available to do this.

Best Answer

Create a copy of your road. Start editing it, select line and and split into equal length segments, I’d say approximately 50 m. Convert segments to 3D shapes:

enter image description here

enter image description here

Calculate field

enter image description here

abs( !Shape!.lastPoint.Z- !Shape!.firstPoint.Z)/ !Shape!.length*100

Result:

enter image description here

Please note both roads shown are fictions. One of them made of contour line, guess which. I wonder to see how red it would be if I’ve used slopes derived from DEM as per multiple suggestions. I hope they weren’t serious

UPDATE TO ORIGINAL ANSWER:

Picture below shows terrain slope:

enter image description here

Obviously engineers of the past didn’t know how to use GIS to calculate road slope:

enter image description here