Tutorial on River Channel Morphology Model

by Venkatesh Merwade

Center for Research in Water Resources
The University of Texas at Austin

Table of Contents


An analytical model is developed to create a three-dimensional description of river channels using cross-sections and profile-lines. The analytical model, also called the River Channel Morphology Model, is based on the channel planform and its geometry. Therefore, by knowing only the planform, the channel can be described in three-dimensions. River Channel Morphology Model (RCMM) is a useful tool for creating the three-dimensional description of river channels where there are no bathymetry data. Detailed description about the model can be found in chapter 5 of Venkatesh Merwade's dissertation at this link.

If you have any suggestion on how the model can be improved, please write to the email address given at the end of the tutorial. RCMM is developed using ArcGIS 9. RCMM is an ongoing project, and is constantly under development. Please send an email to know the current status of RCMM.


The goal of this exercise to demonstrate the applicability of RCMM in describing the river channel bathymetry at regional scale. RCMM is used to generate the channel bathymetry for a 50 mile reach along the Brazos River in Texas. RCMM uses the channel planform in conjunction with hydraulic geometry relationships to generate cross-sections at any locations along a river channel. In this exercise, the USGS gaging station data are used to create a three-dimensional description river channel bathymetry along the Brazos River in Texas. The study area is located between the Richmond gaging station (#08114000) and Rosharon gaging station (#08116650) along the Brazos River as shown below.










Data Requirements

All the data necessary for this exercise are stored in a geodatabase called Brazos.mdb in the Data folder. The Data folder also contains a sub-folder called Worked Data that contains all the results for the exercise. The user can use some of these results in the exercise. The RCMM dataset in Brazos.mdb contains seven feature classes as shown below:

BoundarySegments feature class contains the left bank (looking downstream) of the study area, BrazosRiver feature class contain the lower Brazos Segment, Channel_Boundary contains the boundary for the study area, and USGS_Points feature class contains the USGS gaging stations along the lower Brazos River. The CrossSections, ProfileLines and Thalweg feature classes are empty, and will be populated during the tutorial. The RCMM uses the left bank of the river channel, and based on its curvature, the thalweg, cross-sections, and profile-lines are generated.

Getting Started

Please copy the Data folder on your hard drive. Also make sure that a folder named “c:\temp” exists on your drive. Open an empty ArcMap document and save it as RCMM.mxd. The first step is to add RCMM.dll to the map document. To load the dll click on Tools-->Customize… as shown below:

In the customize window, click Add from file… button to browse the RCMM.dll in the Data folder. Click open and then OK to add the RCMM Toolbar to the toolbars list. Click on RCMM Toolbar as shown below:

Close the window and you should see the RCMM Toolbar as shown below:

Save the ArcMap document.

Components of River Channel Morphology Model

The RCMM toolbar has three components as shown below:

(1) Create Thalweg: This component uses the left bank of the channel (Boundary_Segments feature class), calculates the radius of curvature for each segment, and based on the radius of curvature, locates the thalweg along the channel.

(2) Create Cross-sections: This component uses the thalweg, and depending on where the thalweg is located, creates cross-sections using a combination of two beta distributions. RCMM uses MS Excel to create beta functions. 

(3) Create Profile-lines: This component uses the cross-sections and joins them by creating profile-lines. Profile lines are represented as Bezier curves for a smoother representation.

The application of each component is described in the following sections.

Locating Thalweg Using Channel Planform

From the data folder, add BoundarySegments, BrazosRiver, USGS_Points, Channel_Boundary and Thalweg. Play around with the data to study what they are. The thalweg feature class is empty and will be populated in this section.

The boundary of the channel is manually digitized by using DOQs, and this process needs to be automated. BoundarySegments feature class is created by splitting the boundary of the channel into right and left banks, and then removing the right bank. 

Open the attribute table of Boundary_Segments feature class by right clicking on it as shown below:

The BoundarySegments feature class has the following attributes:

(1)Depth: is the water depth at bankfull discharge (2-year return period flow) obtained from hydraulic geometry relationships.

(2) BankElev: is the bank elevation at bankfull discharge also obtained from USGS gaging station measurements.

(3) Width: is the bankfull width obtained from hydraulic geometry relationships. The width is modified to incorporate additional information from DOQ.  

(4) ThalwegZ: is BankElev minus Depth.

(5) Measure: keeps track of which segment is where on the left bank of the channel.

(6) FromLine: is the ObjectID of the preceding boundary segment. 

(7) ToLine: is the ObjectID of the succeeding boundary sement. FromLine and ToLine are used to find out the connection of the boundary segments.

There are subroutines developed to assign these attributes, but are not yet ready for public use. 

Using the ArcGIS Editor toolbar, start the edit session by clicking on Start Editing.  

Click on RCMM Toolbar-->Create Thalweg as shown below:

This will prompt the following interface to appear:


Depending upon the sinuosity, three different relationships are developed for relating the radius of curvature of the left bank with the thalweg location. Click and Medium and High and the parameters in the text boxes will change. The Brazos River has a sinuosity of about 1.2. Therefore, click on Low (1 to 1.25) and click OK. You will then be asked to input parameters for the following interface:

Input Line is the BoundarySegments feature class, Boundary is the Channel_Boundary and output layer is Thalweg layer. All the input fields are from the BoundarySegments feature class. Use BankElev, ThalwegZ and Measure from the BoundarySegments feature class. The create thalweg interface creates one thalweg point per boundary segment. This is undesirable because sometimes just one point per boundary segment can cause the thalweg to cross the boundary, especially at sharp meandering bends. The Advanced Option creates three thalweg points for each boundary segment by using the thalweg location of upstream and downstream boundary segments. Click on Advanced Option and then click OK. You should see a progress bar at the lower left corner of the interface as shown below:


After all the processes for locating the thalweg are complete, the following message will appear:

Click OK, and save the edits. The thalweg feature class will now have one feature added to it.

Open the attribute table of BoundarySegments, and you will see some new attributes added to it as shown below:

IsRight: is a boolean type field with a value of either zero or -1. Looking downstream, a value of zero  means the channel is meandering to the left, and a value of -1 means the channel is meandering to the right.

rCurvature: is a double type field which stores the radius of curvature for each boundary segment. 

ThaLocation: is a double type field which stores the thalweg location for each boundary segment. The thalweg location is always between zero and one. The thalweg location is multiplied with the width of the channel to locate the actual thalweg on the map. 

Upstream: is a double type field that stores the thalweg location of the upstream boundary segment.

Downstream: is a double type field that stores the thalweg location of the downstream boundary segment.

Upstream and downstream are used to create extra thalweg locations when the Advanced Option is checked while creating the thalweg. You can run the tool again without checking the Advanced Option and see the difference between the two thalweg features.

 Close the Boundary Segments attribute table. Select the thalweg feature, change the editor task in the Editor toolbar to Modify feature, and then click on Edit Sketch properties button as shown below:


The thalweg feature will now turn green to show its vertices and its edit sketch properties as shown below:

You can see that the thalweg is a PolylineZM feature with Z and M attributes. These attributes are assigned to these vertices using the ThalwegZ and Measure field in the boundary segments feature class. In addition, you can see that the Z and M values are same for two/three points. The program needs to be modified to interpolate these values besides interpolating the thalweg location.

Close the edit sketch properties window, save edits, save the map document, and now we are ready to generate cross-sections!

You can also zoom/pan to see how the thalweg created by RCMM varies depending on the curvature of the channel.

Creating Cross-sections using Thalweg

RCMM uses the thalweg location relative to the left bank, and creates cross-sections as a combination of two beta distributions. RCMM uses an access database that has the information about how the parameters of beta distribution change for different thalweg locations (Figure 5.23 in the dissertation). This database is named BetaParameters.mdb and is available with this tutorial.  Please copy BetaParameters.mdb to "c:\temp" folder. Failure to do so will cause RCMM to crash. This problem will, however, will be taken care of in the future by letting the user to specify the path for these files. After copying BetaParameters.mdb to c:\temp, add CrossSections feature class to the map document. 

The CrossSections feature class is empty, but it has six fields. Fields ALPHA1, BETA1, ALPHA2, BETA2 are the beta parameters and the field FACTOR corresponds to the scaling factor k in chapter 5 of the dissertation. Measure stores the position of each cross-section on the thalweg. All the fields are double type, and if these fields are absent, RCMM will create them before creating the cross-sections. 

Click on RCMM toolbar-->Create Cross-sections to get the following interface:


The create cross-sections interface requires three inputs: Thalweg, BoundarySegments, and Channel_Boundary. The user also has to specify the output feature class for storing the result. The output feature class in this case is Cross_Sections. After specifying the input and output layers, click OK.

The process of creating cross-sections takes a while, and this is due to the interaction with Excel application for creating each cross-section. This time will be reduced in the future by using a subroutine inside RCMM to do the calculations rather than using MS Excel. After the cross-sections are created, following message box should appear (If you get an error message, just ignore it!):

Click OK, save the edits, and refresh the map document. You should see cross-sections on the map as shown below:

Open the attribute table of cross-sections to see the parameters of beta distributions used to fit cross-sections for different thalweg locations as shown below:

The parameters in parameters.mdb are interpolated to get the beta distributions for different thalweg locations. Save the ArcMap document.

After cross-sections are generated, the next and the last step is to generate profile-lines. This is described in the next section.

Creating Profile-lines using Cross-sections

Save the map document, add profile-lines feature class the ArcMap document. The profile-lines feature class is empty and does not have any special attributes associated with it. Click on RCMM toolbar-->Create Profile-lines to get the following interface:

Create profile-lines interface needs only two feature classes as input: the cross-sections created in previous step, and the profile-lines feature class for storing the output. There are two options for creating profile-lines. The first option (depth based) will divide cross-sections into equal depths to generate profile-lines. The second option (flow-based) will divide the cross-sections into equal volumes to generate profile-lines. Check depth based option and click OK. After the profile-lines are created, the following messages should appear on the screen.

Click OK. Save edits, stop the edit session, and refresh the map document. You should now see the profile-lines on the map as shown below:

You can also see that the profile-lines feature class is now populated with PolylineZM features. Play around to see the cool channel morphology you have created for about 50 miles of Brazos River. Since RCMM creates the channel morphology in three-dimensions, we can see the real three-dimensional form using ArcScene. Save the map document, and close the ArcMap session. 

3D Visualization of Channel Morphology in ArcScene

Start an ArcScene session from Start-->Programs-->ArcGIS-->ArcScene. Save the ArcScene document as Visual.sxd.

Add cross-sections and profile-lines feature classes to the scene document using the Add Data button similar to ArcMap. You will now see the channel morphology in 3D as shown below:

Well, this is cool, but you hardly see the 3D structure. Zoom in on one of the locations until you see cross-sections and profile-lines as shown below.


If you know ArcScene, you can increase the vertical exaggeration by right-clicking on each feature class, Properties-->Base Heights-->Z Unit Conversion. The following figure shows the channel with a Z unit conversion of 10.

Really cool stuff! Play around with ArcScene for a while. Save the ArcScene document. 

OK. You are done with this tutorial!


RCMM is an analytical model for describing the three-dimensional form of river channels based on channel planform and cross-sectional data. The model is still under development, and will be made more robust and user friendly in the future. The main goal of this tutorial is to expose the community to RCMM, and get their feedback for improvements. The data provided with this tutorial had all the attributes to run RCMM. If you wish to use RCMM, please make sure that you have those attributes (boundary elevation, thalweg depth, measures, etc) in the boundary segment layer. There is a toolset under development to populate these attributes. Please send an email to get an update.

Supporting Materials

Contact Information

Venkatesh Merwade

Center for Research in Water Resources

Department of Civil Engineering, University of Texas at Austin

(512) 471-0073



These materials may be used for study, research, and education, but please credit the authors and the Center for Research in Water Resources, The University of Texas at Austin. All commercial rights reserved. Copyright 2004 Center for Research in Water Resources.