Project 6: Computing sea-level rise (SLR) flooding using grid DEMs

SLR test grids


You have undoubtly heard that one of the consequences of climate change is melting of the polar ice-caps, which will cause the sea level to rise globally, bringing the risk of flooding to all coastal areas.

Scientists predict between 3 to 5 feet of sea-level rise in the next century [IPCC 2007 report]. This is a concern as many major cities lie in low areas in close proximity to the coast, and flooding will cause significant damage and disruptions to these cities and to the millions of people who live in them.

States and institutions have started to model the extent and impact of the flooding. The first step in this process is to use digital elevation models to compute what parts of the coast will get underwater in different flooding scenarios. When run on high-resolution digital elevation models derived form LiDAR point clouds, the accuracy of these models at predicting the extent of sea level rise flooding is high.

SLR viewers: examples

Most widely used are the SLR viewers developed by National Oceanic and Atmospheric Administration (NOAA), which can be accessed from their Digital coast website:

SLR flooding: how it works

The basic problem is the following: Given a grid terrain (part of which is the sea) and a sea-level rise (e.g. 3ft), compute flooding of the terrain as the sea rises to the given level. The ouput of this process is a grid, of the same size as the input elevation grid, where each point is marked as either flooded, or not.

How does this work? One way to think about this is to intersect the terrain with a horizontal plane at z=sea-level: that is, find all points with elev <= slr. This will create a bunch of "blobs": compute their connected components, and retain only the connected component of the sea. This is the approach taken by NOAA SLR viewer (Detailed method for mapping sea level rise innundation, NOAA, 2017).

In this project you will develop a different and arguably simpler approach, based on the following idea. As the sea level is rising, points on the coast that are low (i.e. their elevation is below sea-level) will get underwater, and through them, the water may go further inland. In other words, points that

  1. are reached by water; and
  2. have elevation below the water
are flooded. They become water. Repeat.

One question that you'll run into is: how is the water labeled in the elevation grid? In an ideal world the sea points would have their own label, so that we can easily say if a point is in the sea or not. In practice water gets labeled as NODATA. The caveat is that not all NODATA points are water, so we'll have to make some assumptions:

The interface

At a bare minimum, your code should take the name of an elevation grid, a rise, and the name of a flooded grid where to write the flooded terrain.
./slrflood elev.asc 3 flooded.asc
We shoud be able to render the resulting grid:
render2d flooded.asc
The rest is open-ended. Here are some possibilities.

Test data

Any of the grids that border the sea can be used for testing. You'll find some small ones here (Southport provided by Prof. Eileen Johnson, ES).

The larger sets are not available online; you can find them at: dover::/mnt/research/gis/DATA/SLR/.

Would be great to also flood Boothbay Harbor: I only have .las data for it, but we could use your lidar project to classify the ground and grid it (you'll need to add the save capability, but you have a writetofile() function from a previous project). Or, you could use LASTools::las2dem [this may not be open source, but binaries are available].

The paper

Write a paper/report that summarizes the work that you did for this project. Do not worry about writing a certain number of pages, but rather that you include sufficient information so that someone who reads the paper can understand all the work that you've done for this project, the high level algorithm, the details of the implementation, and an overview of how you tested it and how it works in practice.

You will use LaTex. If this is the first time you use LaTex, check the www for more info. Feel free to use the Latex templates here (at ); they were created for previous classes, so disregard the details. To install Latex on your computer, you could try MacTex:

There are many LaTex guides online, if you should need anything beyond the template. Here is a suggested outline for the paper:

What to turn in

Push the code and the paper, also bring a hard copy of the paper to class.


Total 25 points