 # Building a dam inundation model

Calculate the height – volume curve of a newly constructed dam

1. Copy the template into a new script and fill in the author details, date and contact information.

2. Import the SRTM Digital Elevation Data 30m.

The Ban Ve dam in Nghe An was constructed in 2009. The SRTM data is from 2000, so the Bathemetry is represented in the DEM. The location of Ban Ve is 19.3363 104.4841.

3. Draw a polygon around the Ban Ve dam, as shown in the image below. 3. Draw a polygon around the Ban Ve dam, as shown in the image below.

4. We create a list with values from 155 to 220 meter.

```// set list with water levels
var waterlevel = ee.List.sequence(155,220,1);
```

5. Clip the polygon from the DEM.

```// clip ban ve area
var dem = srtm.clip(BanVe);
```

6. Copy paste the function below to calculate the volume for each water level.

```var calcVolume = function(level,list){

// calculate area inundated
var inundated = srtm.clip(BanVe).lte(ee.Number(level));

// calculate water level in each pixel
var water = inundated.multiply(dem).subtract(ee.Number(level)).multiply(-1)

// calculate area
var area = inundated.multiply(30).multiply(30);

// calculate volume
var volume = area.multiply(water);

// sum the volume
var totalvolume = volume.reduceRegion(ee.Reducer.sum(), BanVe);

// retunr result to list
};
```

7. Use the function below to run the function.

```// create emtpy list
var first = ee.List([]);

// iterate over water levels
var Volumes = ee.List(waterlevel.iterate(calcVolume, first));
```

8. Make an array with x-values for volume, y-values for water level.

```// set x an y values for list
var xValues = ee.Array(Volumes).divide(1000000000);
var yValues = ee.Array(waterlevel);
```

9. Use the function below to create a chart.

```//  Create the chart
var chart = ui.Chart.array.values(yValues, 0, xValues)
.setOptions({
title: 'Relation Volume Waterlevel',
vAxis: {'title': 'water level (m)'},
hAxis: {'title': 'Volume (billion m3)'},
pointSize: 3,
});
```

10. Display the chart.

```// Print the chart.
print(chart);
```

Now we are going to display the inundated area using the DEM

11. Create a variable level with 200 (m).

```// Set water level at 200 m
var level = 200;
// create a color table
var myWater = {min:0, max:1, palette:"0000FF"};
```

12. We select all pixels with a height less then the water level.

```// select all pixels less than the water level
var inundated = srtm.clip(BanVe).lte(ee.Number(level));
```

13. Visualize the inundated area.

```// add srtm water mask
```

We like to include a sentinel-2 image for comparisons.

14. Use the snippets from the previous assignment to include a sentinel-2 water mask.

Now we save the DEM to the google drive.

15. add a fusion table of the Ca basin.

```// the ca basin
```

16. Add the ca basin to the canvas.

```// Add Ca fusion table
```

17. add the srtm of Ca to the canvas.

```// set viz parameters
var myviz = {min:0, max:2000, palette:"000000,0000FF,FDFF92,FF2700,FF00E7"};
```

18. In the geometry click add layer and draw a polygon around the Ca basin as shown below. Call the new layer CaMask ```//Export the image, specifying scale and region.
Export.image.toDrive({
image: srtm,
description: 'CaBasin',
scale: 500,
1. Sam says: