Eric Tate
CE 394K.3
May 7, 1998
etate@eqe.com

GIS Term Project
Display of Flood Levels in a GIS



Table of Contents:

  1. Introduction
  2. Run HEC-RAS
  3. Extract the RAS Stream Information
  4. Choose the Digital Stream
  5. Establish the Stream Boundaries
  6. Add the Cross-Sections
  7. Future Work
  8. Data Dictionary


Introduction

In recent years, there have been numerous technological advances in the field of geographic information systems (GIS). A recent thrust in GIS development has been the use of GIS in conjunction with existing computer models. For my GIS term project, I have attempted to link GIS to a hydraulic river model called HEC-RAS. Since the mid 1960's, the standard computer program for modeling river and floodplain hydraulics has been HEC-2, designed by the Hydrologic Engineering Center (HEC) of the U.S. Army Corps of Engineers. In the early 1990s, HEC released the Windows version of HEC-2, called HEC-RAS (River Analysis System). HEC-RAS is a one-dimensional model for calculating water surface profiles at cross-sections along a stream, for both steady and unsteady flow conditions. The model results can be used to develop (among other things) drainage designs, floodplain development restrictions, and flood insurance rates. However, the output is not geographically referenced. Geo- referencing would allow the user to view the results into a Geographic Information System (GIS) for easy comparison of the floodplain location versus the location(s) of existing/future structures. My term project focuses on developing a method to display the results of a HEC-RAS modeled floodplain in the ArcView GIS environment.

To complete the procedures described within, the following computer software and files are required:


Run HEC-RAS

In order to run the HEC-RAS model, channel geometry and flow information for the stream of interest must be provided as input. The stream geometry file contains detailed data about each cross-section of the stream. This data, consisting of x (lateral) and z (depth) locations along each cross-section, are generally obtained from field surveys. Individual cross-sections are identified by their river stations, measured in stream distance from downstream to upstream. For example, river station 32093 might represent the cross-section located 32093 feet from the stream mouth. Also included in the geometry file are the Manning n-value intervals for each cross-section point, identification of the left and right bank stations, and reach lengths between cross-sections. HEC-RAS allows each cross-section to be edited to include structures such as bridges, culverts, and weirs. Shown below is a HEC-RAS geometry data input window.

The flow file is much simpler and contains flow rate for each cross-section. Multiple storm flow profiles can be input. Once the geometry and flow files are complete, the model is run to calculate water surface elevations at each cross-section. The water surface profile computations are performed using a Fortran program that iteratively solves the energy equation for two cross-sections in order to determine the upstream water surface elevation. In this manner, water surface elevations are calculated for all cross-sections starting from the downstream end. This method is often referred to as the standard step procedure. The output for HEC-RAS can be viewed in the form of tables, or as a plot like the one shown below:

Output such as this is nice to get a conceptual view of the floodplain, but it has no relationship to geographic reality since the x-coordinate system for each cross- section is independent. For example, two stations, each numbered 1000 in subsequent cross-sections, likely have no geographic relationship to each other. As a result, effects such as bends in the stream are not accounted for. This type of geographic representation is best performed in a GIS.

Extract the RAS Stream Information

In order to move into the GIS environment, the RAS output information must first be extracted. I have chosen to read this information from a text file that can be created in RAS by invoking the File/Generate Report... menu item. When the selection window comes up choose plan and geometric as the general input data, reach lengths under the summary option, and cross-section table under the detailed output option. In addition, it is important that only one profile is selected for the report and the modeled stream has only one branch. These details were a bit too complex for me to handle in ArcView at this point. The report generator window should look like this:

Upon clicking the "Generate Report" button, an output file will be created that can be viewed in a text editor. At this point, the user would close the HEC-RAS application and load ArcView. Using Avenue, the ArcView scripting language, I've written a program named "RAS-Read.ave" that will read the output text file and extract the desired stream information. The "ave" extension indicates that the file is an Avenue script. I've assigned the script to a menu in the project window under Project/Import RAS Data.... For each cross-section, the script reads the location (x and z) of all points and subsequently calculates the locations of the floodplain boudaries and the x-location corresponding to the minimum channel elevation. Shown below is a graphic of a typical cross-section in which these key locations can be seen.

If there are multiple points with the same minimum channel elevation, the x-coordinate (station) of the channel center is calculated by averaging x-coordinates of the points with the minimum elevation. It should be noted that I encountered a problem in this step due to a minor bug in the HEC-RAS (v2.1) programming. I discovered that the cross-section coordinates in the output text file are not always space delimited. When this occurs, a single location with the coordinates 1144.5797, 650.84 might appear as 1144.5797650.84. When presented with a value such as this, the "RAS-Read.ave" script will not work. To remedy this, I had to manually edit the output text file wherever this occurs. I've brought this to the attention of Vernon Bonner who manages the RAS programming group at HEC. Hopefully this bug will be repaired in HEC-RAS version 2.2, which is due to be released sometime in the summer of 1998. At any rate, when all of the stream information is read from the output text file, it is subsequently written to an ArcView virtual table. The following graphic illustrates the result.

The fields "Station No." and "Flood Elevation" are self-explanatory. The "Location" field contains short descriptions of the cross-section location that were input in the original geometry file for certain cross-sections. "Channel Y" shows the distance along the stream starting at the upstream end. The remaining fields contain the left and right widths of the floodplain and bank stations, as measured from the center of the stream. The table is saved in database format (dbf), so it could be opened in Excel and Access in addition to ArcView. However, all that has been done in this step is to transform data in text file format to dbf format. Absent from this table is a shape field; the cross-section data still must be geographically referenced.

Choose the Digital Stream

The next step is to assign geographic coordinates to the cross-sections. This can be accomplished by linking the RAS stream to the same stream in DLG format. For this project, I obtained a subset of Rf3-Alpha from the Center for Research in Water Resources (CRWR) at U.T.'s J.J. Pickle Research Campus. Rf3-Alpha may still have some bugs and hence, it's not yet widely available. The river reach files can be quite large. For example, Rf3-Alpha for the Hydrologic Unit Code (HUC) representing part of Austin consists of 2.7 megabytes. As such, it would be advantageous to work only with the stream information relating to the RAS modeled stream. To this end, I've written a second script, "RASriver.ave", that creates a new shapefile from selected polyline(s) within a larger coverage. A polyline is an ArcView term which refers to a single continuous line composed of numerous individual line segments joined at vertices. The first and last vertices are referred to as the "from" and "to" nodes, respectively, giving a property of direction to the stream representation. Once the stream coverage has been added to the view window, the stream (polyline) of interest is chosen with the mouse by first clicking on the select tool and then on the stream. The result should look something like this (the selected stream is highlighted in yellow):

Next, invoke the "RASriver.ave" script by clicking the tool in the view window and a new, and considerably smaller shapefile is created. The original Rf3-Alpha shapefile can now be deleted from the view. Currently, the "RASriver.ave" script performs a similar function as the Theme/Convert to Shapefile menu option in the view window, but I plan to modify it in the future to allow the selection more than one stream segment, as long as a continuous line results when the segments are put together (i.e., no branches).

Establish the Stream Boundaries

Before adding the cross-sections to the view, the length of the RAS modeled stream versus that of the Rf3 stream must be evaluated. It is entirely possible for example, that the Rf3 stream is defined to a point farther upstream than the RAS stream, or vice versa. Hence, it is necessary to define the upstream and downstream boundaries of the RAS stream in the view window. To this end, I've written a third script for this project named "addpnt.ave", with which the upstream and downstream boundaries can be established with a click of the mouse. To invoke the script from the view window, click the tool prior to defining the upstream boundary and the prior to defining the downstream boundary. When a point is clicked, the script determines the nearest point along the stream polyline and snaps the point to the stream. In this way, it is guaranteed that the boundary points fall exactly on the stream polyline. A new polyline can now be established, with the upstream and downstream boundary points defining the "from" and "to" nodes, respectively. Often, the boundary points are more easily pinpointed by comparison to the location of an existing structure (e.g., road, bridge, etc). The GIS format allows a coverage of such a structure to be easily overlaid to assist in the boundary points selection process. Following definition of the stream boundaries, the view might look like this (the boundary points are depicted in green):

Add the Cross-Sections

Now that the stream boundaries have been established, the cross sections can be added between them. In this step, the length of the RAS modeled stream versus that of the Rf3 stream between the boundary points is important. I've termed this the "lengths ratio." By establishing the boundary points in the first place, the lengths ratio should be nearly 1, but likely not exactly 1. If the RAS stream length exceeds the Rf3 stream length, the reach lengths between cross-sections will need to be compressed by the lengths ratio. In contrast, if the RAS stream length is less than the Rf3 stream length, the reach lengths between cross-sections should be expanded. In this manner, the proportionality of RAS reach lengths is preserved. Once this re- sizing is complete, the cross-sections can be laid out along the stream:

The cross-sections have been added through the use of a fourth script I've written called "convert.ave." The script has been attached to the tool in the view window. The width of the left and right floodplain at each cross- section comes from the ArcView table containing the stream geometry data previously extracted from RAS. The location of any given cross-section along the stream is determined by multiplying the river station by the lengths ratio prior to normalizing by dividing by the length of the Rf3 stream (as defined by the boundary points). The result is the location of the cross-section that is expressed as a percentage of the Rf3 stream length. At this point, the location of the cross-sections are known, but not the orientation. To determine this, it is assumed that the cross-sections occur in straight lines, perpendicular to the stream. The slope of the stream was determined using points immediately upstream and downstream of the cross-section. The slope of the perpendicular line was subsequently calculated by taking the negative inverse of the stream slope. With the cross-section locations and orientations now known, a line representing the floodplain at each cross-section could be added. A closer look of the cross-sections looks like this:

The magnified view gives a better picture of the orientation of the floodplain at each cross-section. However, it also indicates that some of the cross-sections intersect, an occurrence that likely does not accurately represent reality. This is infidelity is likely due to the method for determing the slope of the stream channel. A better approach might be to calculate the slope using a greater portion of the stream, rather than strictly the points immediately upstream and downstream of the cross-section of interest. This would involve using a curve fitting algorithm, but it would generate a slope that was more representative of the general shape of the stream (the effects of sharp bends would be removed).

Future Work

To complete the goal of displaying the floodplain in a GIS, much work remains to be completed. These tasks will likely involve the following:

Data Dictionary

DataFeatureClass UnitsDescription
waller.g05Waller Creek geometryText file Distance measured in feetExisting channel geometry compiled from survey information
waller.f10Waller Creek existing flowsText file Flow rates measured in cubic feet per secondFlow profiles based on current land use
205_stEPA River Reach File 3 (Alpha)Polyline Distance measured in feetVector stream coverage for Austin (HUC 12100205)
RoadsRoad coverageLine Distance measured in feetVector road coverage of Austin


   Return to Eric Tate's home page