Chimaps in a few lines of code (4)

Posted on Updated on

My last post described the math behind chi analysis. By using the integral approach to the stream power model of incision, we derived an equation that allows us to model the longitudinal river profile as a function of chi. At the end of the last post I stated that this model is a straight line if we choose the right m/n ratio, that is the concavity index. Today, I’ll show how we can obtain this m/n ratio by means of nonlinear optimization using the function chiplot.

Ideally, we find the m/n ratio using a perfectly graded stream profile that is in steady state. I scanned through a number of streams using the GUI flowpathapp and found a nice one that might correspond to Cooskie Creek that Perron and Royden (2013) used in their analysis.

The graphical user interface flowpathapp allows visual exploration of planform river patterns and corresponding profiles.

The menu Export > Export to workspace allows saving the extracted STREAMobj St to the workspace. Then, I use the function chiplot to see how different values of the m/n ratio affect the transformation of the river profile. Setting the ‘mnplot’ option makes chiplot return a figure with chi-transformed profiles for m/n ratios ranging from 0.1 to 0.9 in steps of 0.1 width.

chi-transformed river profiles for different values of the mn-ratio.

Clearly, the chi-transformed profile varies from concave upward for low m/n values to convex for high m/n values. A value of 0.4-0.5 seems to be most appropriate but choosing a value would be somewhat hand-wavy. Thus, let’s call the function again, but this time without any additional arguments.

C = chiplot(S,DEM,A);
chi-transformed profile for an optimal value of the m/n-ratio.

Calling the function this way will prompt it to find an optimal value of m/n. In addition, it will return a figure with the linearized profile. By default, the function uses the optimization function fminsearch that will vary m/n until it finds a value that maximizes the linear correlation coefficient between the chi-transformed profile and a straight line. So what is that value? Let’s look at the output variable C:

C = 

          mn: 0.4776
        mnci: []
        beta: 0.1565
      betase: 2.2813e-04
          a0: 1000000
          ks: 114.8828
          R2: 0.9988
       x_nal: [581x1 double]
       y_nal: [581x1 double]
     chi_nal: [581x1 double]
       d_nal: [581x1 double]
           x: [582x1 double]
           y: [582x1 double]
         chi: [582x1 double]
        elev: [582x1 double]
      elevbl: [582x1 double]
    distance: [582x1 double]
        pred: [582x1 double]
        area: [582x1 double] 

C is a structure array with a large number of fields. is the value we are interested in. It is 0.4776 and corresponds nicely to previously reported m/n ratios although it differs from the value 0.36 found by Perron and Royden (2013). Of course, this value might differ from river to river and you should repeat the analysis for other reaches to obtain an idea about the variability of m/n.

Ok, we have the m/n ratio now. In my next blog we will eventually produce the chimap that we initially set out for.

P.S.: We could have also used slope-area plots to derive the m/n ratio (see the function slopearea). However, along-river gradients are usually much more noisy than the profiles and power-law fitting a delicate matter. I’d definitely prefer chi-analysis over slope-area analysis.


2 thoughts on “Chimaps in a few lines of code (4)

    Rishav Mallick said:
    September 25, 2017 at 6:58 am

    Hi Wolfgang,
    While using chiplot to find the optimum m/n ratio for small streams, i found that the resulting structure C (created as C = chiplot(S,DEM,A);) has a predicted value as C.pred. When i plotted this value (C.distance vs C.pred) versus C.distance vs C.elevbl i found that C.pred has a a very angular shape (an obtuse angle) , especially when theta values are > 2, as opposed to the gentle logarithmic shape i expected. Is that expected? Please can you comment on that?
    I was also thinking, given how noisy SRTM elevation data is (with its stair-step features), chiplot completely removes the need to compute spatial gradients. And because of that, there is no need to do spatial smoothing or resampling of the data at fixed contour lines. I think this is a very neat method 🙂 But i wonder if results of channel steepness and concavities of individual streams calculated using an integral method will be vastly different when compared to slope-area regression?


      wschwanghart responded:
      September 25, 2017 at 7:59 am

      Dear Rishav,
      I have tried following code to be able to reproduce your findings:

      DEM = GRIDobj('srtm_bigtujunga30m_utm11.tif');
      FD = FLOWobj(DEM);
      S  = STREAMobj(FD,'minarea',1e6,'unit','map');
      S = klargestconncomps(S);
      A = flowacc(FD);
      C = chiplot(S,DEM,A,'mn',0.45);
      C = chiplot(S,DEM,A,'mn',2);

      I do not get the angular pattern that you describe, but the predicted elevations seem at odds with true elevations for a mn-ratio of 2. The mn-ratio usually ranges between 0.2 to 0.8 (often it is set to 0.45), so this is something that I’d expect as such a high mn-ratio is unable to linearize the relation between chi and elevation.
      You are completely right with the robustness of chi analysis to errors in DEMs. This is something that Royden and Perron describe in their paper as a major motivation for developing this approach. Unless you are dealing with a lot of scatter, smoothing is usually not necessary for chi analysis. Whether results from chi analysis are vastly different depends on the noise in the slope area regression. Given the robustness of the chi approach, I’d always rely on mn ratios derived from chi analysis rather than those obtained from slope area plots.
      Cheers, Wolfgang

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s