[GIS] calculate slope of lines between nodes

qgisroadslope

I need to calculate the mean slope of roads between nodes with QGIS. I have a DEM and a vector (PostGIS) with the roads, nodes are additionally displayed as point shape and also contain an elevation field derived from DEM:

enter image description here

I am looking for the mean slope between those nodes which are connected with a line.

As there are many roads to calculate (see the picture below), I need a workflow which processes all calculations at once.Either output as raster (with slope values on the roads and NoData for others) or shapefiles containing the the slope are useful for my purpose.

How can I do this?

enter image description here

I have a ArcGIS solution in mind (3D Analyst / interpolate shape), but I'd prefer a QGIS / open source solution!

I tried the Profile Tool Plugin, which only processes one line at once. Further, I was thinking of using a slope raster and failed because of the direction of the slope (contour line streets).

I was looking for other approaches, but it didn't work or I didn't understand them, e.g.:

Best Answer

Given DEM (raster) and Linea (SHP) calculate the slope on each segment of line

1) Explode Linea--->Segment 2) Field calculator define two float field Z_end_point raster_value('Lake_100m',1,make_point(x(end_point($geometry)),y(end_point($geometry))))

Z_start_point raster_value('Lake_100m',1,make_point(x(start_point($geometry)),y(start_point($geometry))))

then slope= Z_end_point-Z_start_point/lenght($geometry)*100

Related Question