Analysis of Dam Storage

QGIS
Grass-GIS
Elevation
Water
Dam Storage
Author

Akhilesh Kumar Karna

Published

December 30, 2022

1 Abstract

This tutorial is intended to learn how to calculate the dam storage area and volume based on the dam height. It uses GRASS-GIS to find the storage area. The tutorial starts with introduction to basics of GRASS GIS and then importing the GIS data and finally creating the dam storage area.

2 Preparation of Data

In this tutorial, it is assumed that the learners already know how to prepare elevation data. If you don’t know, please go through the relevant tutorials. For this article I have used merged-clipped DEM data obtained from ASTER-DEM which is available freely.

Note that we already have DEM data in GeoTiff format.

3 Create Location data from DEM

Open GRASS GIS and create new location as shown below.

  1. Select Folder and add title etc.

Create and Select an empty folder 2. Select the Coordinate Reference System (CRS)

Figure 1: Select the option for existing file

Figure 2: Select the DEM file

  1. In the next dialog box, click Finish button. Click OK in the next dialog.

  2. Click Yes when a dialog box for importing the selected data is displayed.Completion of data import may take a few seconds. After the import is completed, click Start Grass Session in the main display of Grass-GIS.

  3. Two windows of Grass will be displayed. The first (main) window consists of different tools for the analysis of GIS data. Second(map) window displays the map.

  4. Open Data tab in the main window and double click the DEM data as shown below.

Figure 3: Display DEM in the map window

4 Create Flow Accumulation data from the DEM.

  1. Open Console tab and write the following command.Change the name of elevation data according to the name of your data. Press Enter after writing the command.
r.watershed -sa elevation=dem_utm accumulation=flow_acc drainage=flo_dir

The above command will create flow accumulation and flow direction rasters. You can manage showing and hiding GIS data using Layer Tab.

Figure 4: Display Flow Accumulation Raster

5 Contour

To find the proper dam location it is necessary to visualize the elevation data. Contouring is the best way to visualize elevation. Follow the steps below.

  1. Using tiff file of DEM, create contour using QGIS. Contouring can be done in Grass-GIS too. But I found it too slow.
  2. Import contour vector data to Grass-GIS using v.import and selecting the vector data as input.

6 Create Dam

Let us select an area to create a dam. Flow accumulation raster shows the drainage pattern. We will draw vector line data to represent a dam.

  1. Zoom to a river and select a proper location for dam.

Figure 5: Dam Location along river cross section

  1. Create Vector Line data for the dam

Figure 6: Create new vector map

  1. Select name of vector line data

Figure 7: Name of vector data

  1. Digitize dam as line data

    • Select vector layer(damline) in the layers tab
    • Click pencil mark (edit) layer
    • Click digitize new line tool

Figure 8: Vector data editing

  1. Draw line (represent the dam) joining the points of the same contour line. In the following example, 850m contour line is selected.

Figure 9: Draw Vector Line

  1. After completion of editing, double click.

  2. Add column elevation and put the value=1, run following lines of code one by one.

v.db.addcolumn map=damline@PERMANENT columns="elev int"
v.db.update damline col=elev value=1

6.1 Create buffer (to make a polygon) using damline vector data

v.build map=damline@PERMANENT
v.buffer -t input=damline@PERMANENT output=dampoly distance=100

6.2 Find the altitude just above the dam

  1. Select dem layer in the layer console
  2. Click the query tool in the map display window
  3. Click the location above dam
  4. As shown in the figure the elevation is 676m.

Figure 10: Query DEM raster

6.3 Convert buffered polygon to raster using following code

v.to.rast input=dampoly@PERMANENT output=dam.p1 use=val

6.4 Find the storage area and volume

  1. Set the dam height well above the ground elevation (e.g. 1500) so that the water does not overflow.See the code below.The following code creates the raster (dam.w2) same as the elevation raster except the dam area which will have a value of 1500.
r.mapcalc expression="dam.w2 = if(isnull(dam.p1), dem_utm, 1500)" --overwrite
  1. Find the coordinates of DEM above dam polygon by right-clicking

Figure 11: Copy cell coordinate

  1. Fill the point with water level = 800 (for example). Change the x-y coordinates accordingly.
r.lake elevation=dam.w2@PERMANENT water_level=800 lake=dam.f coordinates=666842.4616903653,3117099.7358401124 --overwrite

The output (Console tab of main window) is like below.

  • Lake area 16437164.727258 square meters
  • Lake volume 970926553.462708 cubic meters

The map display for the storage area is shown below. Using above map we can create water elevation-volume graph and animate the change in storage area with elevation.

Figure 12: Storage Area