Steepness derived from smoothed river profiles

Posted on

Today, I gave a talk in the weekly seminar of Manfred Strecker’s group at our institute. The talk had the title: Introduction to TopoToolbox and its application in tectonic geomorphology. Among other, I provided an example of how to calculate and plot the steepness of river networks (see the new function ksn) and how the new smoothing function crs (Schwanghart and Scherler 2017) is helpful here. I am providing the code here for the DEM of the Big Tujunga catchment, but you can easily adapt the code to your own needs.

First, load the DEM and derive flow directions and the stream network. In addition, calculate a flow accumulation grid that we need for calculating ksn.

DEM = GRIDobj('srtm_bigtujunga30m_utm11.tif');
FD = FLOWobj(DEM,'preprocess','carve');
A = flowacc(FD);

We then extract the stream network for a threshold upstream area of 1 sqkm.

S = STREAMobj(FD,'minarea',1e6,'unit','map');
S = klargestconncomps(S,1);

To hydrologically correct and smooth the river profile, we use the function crs:

zs = crs(S,DEM,'K',6,'tau',0.1);

And finally, we plot it all

imageschs(DEM,[],'colormap',[1 1 1],'colorbar',false,'ticklabels','nice');
hold on
hx = colorbar;
hx.Label.String = 'k_{sn}';
Map of ksn values in the Big Tujunga catchment.

Which parameter values should be used to smooth the stream profile? The values depend on the amount of scatter in the profiles, their spatial resolution, and the amount of smoothing. Visual cross-checking of the results is thus advisable. In this lecture, I presented the tool crsapp that let’s you identify a suitable set of parameter values. A screenshot of the tool can be seen below.

The crsapp GUI let’s you interactively choose the right parameters for smoothing river profiles.


Schwanghart, W., Scherler, D., 2017. Bumps in river profiles: the good, the bad, and the ugly. Earth Surface Dynamics Discussions 1–30. [DOI: 10.5194/esurf-2017-50]


Chimaps in a few lines of code (final)

Posted on Updated on

A couple of weeks ago, I covered a series of blog posts about chi maps. This post links to these posts for future reference.

  • Part 1: Overview and approach to creating chimaps
  • Part 2: Preparing the stream network
  • Part 3: The mathematical basis
  • Part 4: Finding the right m/n ratio
  • Part 5: Plotting the chi-map

In addition, I like to draw your attention to the tool ChiProfiler that has been developed by Sean Gallen from the ETH Zürich. ChiProfiler is based on the TopoToolbox functions and provides a visual interface to stream profile analysis and includes ksn and chi analysis, amongst other. Give it a try!


Summer School 2018 on Earth Surface Dynamics

Posted on

The VolkswagenFoundation funds a series of two summer schools entitled “Earth Surface Dynamics – Understanding Processes at the Earth’s Vulnerable Skin” led by apl. Prof. Dr. Martin H. Trauth, together with nine instructors from Germany, United Kingdom, and Ethiopia. The application is now open, and the deadline is 1 October 2017. Download the summer school 2018 flyer.

Here is the program:

Please find additional information on location and time of the summer school and on how to apply on Martin’s blog:

Hope to see you there!

Best regards, Wolfgang


Smooth operator…

Posted on

Different methods of hydrological conditioning and smoothing and the new CRS algorithm now available in TopoToolbox (Source: Schwanghart and Scherler, 2017).

No, this post is not about my favorite interpretation of this song by Senor Coconut. Its about our latest discussion paper submitted to ESURF in which Dirk and I introduce a novel way to smooth river profiles. We show that DEMs in valley bottoms are characterized by errors with positively-skewed distributions and are often biased to higher values. These errors are more pronounced in high topographic relief, thus limiting our ability to interpret profiles. We also assess uncertainties of profiles derived from different globally available DEMs and find that the ALOS World 3D 30 m (AW3D30) DEM outperforms other DEMs in terms of precision and accuracy.

The manuscript comes with a set of functions that are now part of TopoToolbox and that I will cover in more detail in the following weeks. Here is a quick overview:




Have fun exploring these new functions. I will be back here with more information soon.


Schwanghart, W., Scherler, D., 2017. Bumps in river profiles: the good, the bad, and the ugly. Earth Surface Dynamics Discussions 1–30. [DOI: 10.5194/esurf-2017-50]

Better slope-area plots

Posted on

Plotting upslope area vs. slope in logarithmic axis has been the de-facto standard approach to river-profile analysis. In theory, if a river profile is in a perfect steady state, then this plot should yield a straight line. The TopoToolbox function slopearea calculates these plots. In addition, the function fits a power law S = k*A^(-theta). However, the function has drawbacks, and I want to address one of these in this post.

Slope-area plots require stream gradient, the first derivative of the river profile. If elevation values of the profile have errors, then this uncertainty becomes even more significant in the first derivative. To alleviate this problem, slope is usually averaged in bins. The function slopearea calculates the width of these bins based on upslope area so that bins are equally spaced in log space. However, this approach entails that bin width increases for larger upslope areas. Thus, for larger upslope areas, gradients are averaged over larger stream distances which may hide some of the structures that we wish to detect.

Another approach is to calculate slope averages over river segments of predefined length. While this is not supported by the function slopearea (yet), I’ll show here how to calculate it. The new function labelreach comes in handy here.

Let’s first load a DEM, derive a stream network.

DEM = GRIDobj('srtm_bigtujunga30m_utm11.tif');
FD = FLOWobj(DEM,'preprocess','carve');
S = STREAMobj(FD,'minarea',1000);
S = removeshortstreams(S,1000);
DEM = imposemin(S,DEM);
A = flowacc(FD);

Then we calculate node-attribute lists for upslope area and gradient.

a = getnal(S,A)*(DEM.cellsize^2);
g = gradient(S,DEM);

The function labelreach calculates a label for each reach in a STREAMobj. The option ‘seglength’ allows us to subdivide the labels into reaches of ~2000 m length. Note, however, that the function separates reaches at confluences so that segments may not always be exactly 2000 m.

label = labelreach(S,'seglength',2000);

The function accumarray is one of my favorite functions. Here we use it to aggregate the values in the node-attribute lists g and a based on label. As an aggregation function, we use the average, while we express errors as the standard error.

gg = accumarray(label,g,[],@mean);
ggs = accumarray(label,g,[],@(x) std(x)/sqrt(numel(x)));

ag = accumarray(label,a,[],@mean);
ags = accumarray(label,a,[],@(x) std(x)/sqrt(numel(x)));

Finally, let’s plot the results.

plot([ag ag]',[gg+ggs max(gg-ggs,0.0001)]','color',[.7 .7 .7]);
hold on
plot([ag-ags ag+ags]',[gg gg]','color',[.7 .7 .7]);
plot(ag,gg,'o','MarkerFaceColor',[.7 .7 .7])
hold off
xlabel('Area [m^3]')
ylabel('Gradient [m m^{-1}]')
ylim([1e-3 0.6])
Distance-binned slope-area plot of rivers in the Big Tujunga area

Now that looks much better than area-binned slope-area plots. Give it a try…

Putting together version 2.2

Posted on Updated on

Vigilant readers of the readme file of TopoToolbox may have noticed that the most recent version is 2.2 pre with pre indicating a prerelease. Since version 2.1, a lot has been added including TTLEM, plotsegmentgeometry as well as many other functions and modifications. Now it is time to put all together and finish version 2.2, and Dirk Scherler and I will do so after the summer break. Specifically, we will scan the functions and documentation for possible flaws, bugs, and inconsistencies. We know there are some problems with backward compatibility and out-of-date user guides.

However, there may be more issues and that is where you help is required. Do you know of any bugs or problems in TopoToolbox? If yes, please let us know via comments to this blog post. Make sure, however, that you are using the latest version. Your help is very appreciated.

Turbidites and sediment connectivity along the Chilean Andes

Posted on Updated on


Image courtesy of NASA (Link)


Turbidites sporadically deliver large amounts of sediment from shelf areas to deep marine depocenters. These submarine mass movements are well recognized in marine sediment cores, yet their formation, triggers and controls are less well constrained. In a now published paper in Earth and Planetary Science Letters, we have analyzed seven marine sediment cores in three study sites along the Chile convergent margin. The sites span a pronounced on-shore climatic gradient from arid in the North to humid in the South.

Sediments in the three sites provide a detailed record of turbidite deposition over the last glacial-deglacial cycle from ~20 ka to present. All sites reveal a steep decline of turbidite frequency and thickness during deglaciation, a temporal pattern that has commonly attributed to sea-level rise and inundation of shelf areas. Our data suggest, however, that sea-level rise is not the most dominant control. Rather, turbidite deposition ceases simultaneously with pronounced climatic change on-shore predating significant changes in sea-level. Warming and changes in precipitation have likely altered terrestrial erosion and sediment transport systems. Analysis of the on-shore geomorphological situation suggests that sediment connectivity played an important role although its control differs regionally. While highly connected systems along the steep gradients in the northern part of our study site have rapidly conveyed the erosional signal of aridification, retreating piedmont glaciers in the southern part left numerous proglacial lakes that act as sediment traps. These sediment traps shut down coarse sediment transfer to the marine realm.

Our analysis shows that turbidites can be reliable recorders of onshore climatic change. The exact role of the effects of the sediment transport system, however, may strongly differ while producing similar depositional patterns offshore, and it is challenging to invert these from the sedimentary record alone. Understanding the terrestrial sediment transport system on millennial time scales is thus of vital importance for the interpretation of sediment records of climate variability.


Bernhardt A, Schwanghart W, Hebbeln D, Stuut J-BW, Strecker MR. 2017. Immediate propagation of deglacial environmental change to deep-marine turbidite systems along the Chile convergent margin. Earth and Planetary Science Letters 473 : 190–204. [DOI: 10.1016/j.epsl.2017.05.017]. **** Free pdf download link active until August 16, 2017 ****