FREC 480 -- GIS in Natural Resource Management
Hydrologic Modeling, Vegetative Mapping & Runoff Management

This lab introduces Arc's hydrologic modeling tools and vegetation mapping. The objectives of this project are to--

  • Derive the watershed boundary and sub-basins for the Nanticoke River system from a 30M-resolution DEM.
  • Derive a vegetation density index map (NDVI) for the watershed from satellite imagery.
  • Analyze the vulnerabilities of the river system to agricultural runoff, and
  • Map an efficient strategy to control this runoff.
The upper Nanticoke watershed spans parts of Kent and Sussex Counties in Delaware and Caroline County in Maryland; the lower Nanticoke river is the boundary between Dorchester and Wicomico Counties in Maryland.   The Nanticoke is the most unspoiled and biologically diverse river on the Delmarva peninsula, and sustains the largest population of bald eagles in the northeast US.

The data for this project include a 30-meter resolution DEM, a recent 3-band Landsat image and a 2002 land-use/land cover raster.   Download and unzip the datafiles on your USB drive; then add landsat432.img, landuse and nanticoke_dem to a blank map. Uncheck the Landsat and landuse layers for now, so you're just looking at the DEM. Set your map frame coordinate system to UTM--NAD 1983--Zone 18N. Create a new personal geodatabase on your USB drive and make this your default geodatabase.

1. Hydrologic Model

Arc's hydrologic analysis tools create a number of derivative maps from a DEM.   You will test these tools on some very challenging (flat!) coastal plain terrain.  In the following steps you will delineate a watershed, identify its inferred drainage patterns, categorize its stream segments and delineate its component sub-basins:

  1. Use the FILL tool to create a version of the DEM with all the local sinks (depressions) filled in.  The output DEM will then have a continuous level or downhill flow path from every interior cell to the map edge.  Once you have the filled DEM, remove the original DEM.
  2. Run the FLOWDIRECTION tool on the filled DEM.  The output map reports the downgradient flow direction for each cell. 
  3. Use the BASIN tool on the flow direction map.  The output map will give each watershed a unique category value.  Select the raster category representing the biggest basin (the Nanticoke) and convert this to a single-feature polygon shapefile.  In subsequent steps you can specify the watershed polygon as a mask in Environments--Raster Analysis settings if you wish. (Note that your delineation of the Nanticoke basin may include the Wicomico as well. While the Wicomico is technically a separate watershed, you can include it in your analysis.)
  4. Use the FLOWACCUMULATION tool on the flow direction map to create and INTEGER output map.  This map will show the cumulative number of up-gradient cells that drain through each cell in the watershed.  You may get a clearer sense of these drainage patterns with a stretched color ramp using a histogram-equalize stretch.
  5. Use the Raster Calculator to create a map of inferred streams, i.e., all cells that exceed some flow accumulation threshold value. (Pick a value between 10,000 and 15,000.)
  6. Use the STREAMLINK tool on the inferred streams raster.  The output map will give a unique ID number to each stream link or segment. Then create a shapefile of the stream links with the STREAM TO FEATURE utility.
  7. Use the WATERSHED tool on the flow direction map, with the stream links as targets.  The output map will identify the sub-basin areas that drain to each of the target stream links, giving each sub-basin a unique ID. 
  8. Now use the Raster Calculator to create a binary raster map of agricultural areas with a statement like: (landuse == 81) | (landuse == 82).  (Since the landuse map is in a different cooordinate system, you may have to use Data--Export to create a copy of it in the dataframe's coordinate system that you can extract ag cells from.)   Re-run the FLOWACCUMULATION module on the flow direction map using this ag raster as the weight map to generate an INTEGER output map.  This output map will show the flow accumulations from agricultural cells only.  Use the Raster Calculator to divide ag flow accumulation by total flow accumulation to obtain percent accumulation from ag (an index of potential vulnerability to agricultural nutrient runoff).  Multiply this map by the binary inferred stream raster to obtain the percentage of runoff from agriculture in just the stream cells. Use the Neighborhood--Focal Statistics tool (maximum) to "fatten up" the stream segments for a more appealing display (try a min-max stretch of a cool-to-hot color ramp).

I encourage you to experiment with the other hydrologic modeling tools if you wish.  I created a demo of Arc's hydrologic modeling tools for upper Nanticoke (in DE State Plane), using the watershed as a mask.  You can check your results against that.

2. Extracting NDVI from satellite imagery

A satellite image may be recorded as a single-band panchromatic (wide color spectrum) image, or as a multi-band image with separate rasters representing distinct color bands. This Landsat image includes three of the seven bands that Landsat records: near-infrared, red and green. These bands have been re-numbered as 1, 2 and 3 respectively so that the default red-green-blue display simulates a color-IR image.

You can add each of these bands to your map as separate grayscale layers: in Add Data simply double-click on the landsat432.img icon and you'll see the three bands listed in the image subdirectory.

Give the three bandfiles nice short names in the legend, like "NIR" "red" and "green" which will make your Raster Calculator expressions simpler. Then use the Raster Calculator to create a normalized difference vegetation index (NDVI) image of the watershed. Each band has a value range of 0 to 255. The standard NDVI formula would be (NIR-red)/(NIR+red), which yields values ranging from -1 to +1.  Since vegetation absorbs visible red and reflects near-IR this ratio provides a useful index of vegetative biomass density.

Actually any cell where Red > NIR has no vegetation, so NDVI should really have a lower bound of zero, and it's much more useful as an integer rather than floating-point raster. So you can calculate NDVI with a Raster Calculator expression such as Int((NIR > Red) * 100.0 * (NIR - Red) / (NIR +  Red)).

Use the Neighborhood--Focal Statistics tool to map the "roughness" of the vegetation, i.e. the local variability of NDVI. Urban and other disturbed areas typically have high roughness; marshes, forests and agricultural fields typically have low roughness.

The inferred streams you identified in the first section are only one pixel wide, and approximate the centers of broader stream channels. You will be calculating distances from actual stream edges in the next section, so you need to include all open-water cells in the stream network. Open water features are easily identified as low-value pixels in the near-IR band, e.g., NIR <= 120. So you can combine open water pixels with your stream network with a raster calculation such as (FlowAcc >= 10000) | (NIR <= 120). Then, to eliminate the stray pixels (isolated ponds, etc) that aren't part of the stream network, use the Spatial Analyst--Generalization--Region Group tool, which gives each separate clump of cells a unique category values; use the EIGHT option (not FOUR) to group both side and corner neighbor cells in the same clumps. In the output map identify the value of the big stringy clump of cells representing the Nanticoke river system, and extract just that clump with the Raster Calculator.

3. Defining riparian buffers for runoff control

Now define appropriate stream protection buffers around the stream network and open-water features. Instead of creating uniform-width buffers (been there, done that), use the Cost-Weighted Distance utility to create variable-width buffers.

This weighted-distance algorithm calculates the accumulated pixel values from some "cost" map as it moves outward from the target features. In this case, "cost" is a misnomer: the individual cell weights are runoff abatement benefits, and the weighted distance map represents a cumulative index of runoff abatement benefits obtained as you move cell by cell away from stream edges. You could use the weighted distance map to identify riparian buffer cells within some cumulative benefit threshold.

First, since cells with dense vegetation will intercept more runoff than cells with sparse vegetation, try using a raster calculation such as weight1 = NDVI_INT + 1 as a weight surface. (Add one, because the weighted-distance tool expects cell weights greater than zero.) Once you get the cumulative weighted distance map, you can use the raster calculator to identify the riparian buffer pixels within a cumulative NDVI threshold of less than, say, 150 vegetative index units. This gives you a variable-width buffer that is wider where vegetation is sparser and narrower where it is dense.

Next, since runoff moves faster over more steeply-sloped cells, which reduces its interception by vegetation or infiltration, try using the inverse of terrain slope, e.g., weight2 = 100/(slope+1), as the weight surface (adding 1 avoids divide-by-zero errors). Define buffers that extend to where the cumulative inverse slope weights reach some threshold value. These variable-width buffers would be wider where slope is steeper, runoff is moving faster, and a longer flow distance is needed to filter the runoff. (Note that since this terrain is so flat, the integer DEM is kind of "steppy" so you may get a better result by smoothing the slope map by 3x3 or 5x5 neighbor averaging.)

Here are two examples of weighted-distance maps displayed with a customized symbology. A buffer would be based on some cumulative weight threshold value.

What other criteria would you include in designing an efficient riparian buffer strategy?

Once you have identified and mapped a suitable set of riparian buffer management areas, compare land uses and NDVI values within these buffers (excluding open water cells themselves) versus land uses and NDVI values outside of the buffers.

4.  Consultant Report: How to Manage Runoff

Get some background information on the Nanticoke to include in a brief consultant's report.  What is the current status of the Nanticoke?  What ecosystems does it support?  How serious is the runoff problem?  What are the major sources of runoff?  What are the current runoff control policies, and how effective are they?

Having completed your own analyses, what sort of strategy for controlling agricultural runoff would you recommend for the Nanticoke watershed? What regulations would you suggest? What landowner incentives? How much do you estimate your strategy would cost, and who should bear that cost?

Your report should look as professional as possible, including appropriate graphics to illustrate the steps you followed.

The basic challenge in this project is to use highly stylized GIS tools to address a messy, complex real-world problem. As you have probably figured out by now, the real limiting factor in most non-trivial GIS analyses isn't data or sofware, it's the analyst's ingenuity.



Look, Pedro, I don't know how they do things down in Juarez, but here in Idaho we have a little something called pride. Understand? Smashing in the face of a pinata that resembles Summer Wheatley is a disgrace to you, me, and the entire Gem State!