The purpose of this exercise is to show how Arcview 3.1 with Spatial Analyst (v 1.1) and the Hydrology Extensions can be used to provide estimates of nonpoint source pollutant loads to a receiving body of water. This exercise also incorporates point sources. For this exercise, the receiving water is Tillamook Bay on the northern coast of Oregon. The Miami, Kilchis, Wilson, Trask, and Tillamook are the five major rivers that drain into Tillamook Bay.
You will use a coverage of land uses in the Tillamook Bay watershed and associate Estimated Mean Concentration (EMC) values of various pollutant constituents with those land uses. These EMC values describe average concentration of pollutants in baseflow and surface runoff for a given land use. Then you will create an EMC grid and multiply it by a grid of average annual total flow in the basin. The result will be the annual loading of the constituent to each grid cell in the basin, i.e. Load = Flow * Concentration, or L (Mass/Time) = Q (Volume/Time) * C (Mass/Volume).
Best Management Practices (BMPs) are incorporated and accounted for in the model. There are 3 non-located BMPs that apply to CAFO dairy lands and one BMP that applies to rural residential lands. In addition, there is a tool that will allow the user to determine the effect of a located BMP placed in the watershed.
Finally, you'll perform a flow accumulation on the cell-based loads to determine average annual loads to the rivers and the bay. You will also explore how those loads change as you follow a river from it's headwaters to the mouth to the bay.
Note that the landuse coverage and baymodel coverage cannot be used directly from the CDROM - they will need to be imported (from the landuse.e00 and baymodel.e00 export files) to your workspace.
Be sure to get or import all of the following files:
Baymodel (polygon coverage of bay segments) - you will need to import this one to your working directory! Don't use the one on the CDROM.
Bayarc (arc coverage of bay segments)
Bdemfill (grid of the burned in DEM that has been filled with the Hydrology/Fill function)
Landuse (coverage of land use in the Tillamook Bay watershed) - you will need to import this one to your working directory! Don't use the one on the CDROM.Outfalls (point coverage of point source outfall locations)
Mouth (point coverage of the river mouths)
Ensstormpts (point coverage of monitoring points)
Lulccomposite (grid representation of land use)
Profriver.shp (shapefile of the 5 major rivers) ** there are 3 files that you need - .shx, .shp, and .dbf
Precip (grid of precipitation)
bactimodel.apr (the project file for the exercise)
This exercise is rather memory intensive.landuse.avl (legend editor color scheme for land use data)
At any time in the exercise you may hide the legend of any theme by making the theme active and going to Theme/Hide/Show Legend.
Take a look at the DEM. Zoom in to the area around the bay on the center left region of the grid. Let's take a look at some of the cell elevations within the grid. Make the Bdemfill theme active by clicking on its display in the Legend bar of the View window. Click on the identify tool .
Go to the view and click on some points on the grid. Remember that most of the cell elevations have been artificially raised as part of the burning in process. These values are land surface elevations in feet above mean sea level.
Let's take a look at the properties of this grid. With the grid bdemfill
theme active, choose Theme/Properties. Information is presented
on grid cell-size, number of rows and number of columns. The parameters
of this projection are defined by the Oregon Lambert projection; units
are feet. For further details about the parameters of this projection,
see http://osu.orst.edu/dept/tbaynep/maps.html
There are 3 Menu Bar groups that will be used. They are "Discharge Analysis," "NPS Analysis," and "Misc Tools." You will work through these in a sequential fashion.
Let's start with the Discharge Analysis group.
You should already have the bdemfill grid in the View. In a later part of this exercise, we will be determining pollutant loads and conducting weighted flow accumulations to collect these loads in the rivers and subsequently into the bay. To be able to do this, we need to connect the rivers and the bay segments hydrologically in the model. This is accomplished by altering the bdemfill grid. This grid currently reflects the fact that the elevations of the land in the bay are below sea level, and thus lower than the surrounding land. However, in order to model the accumulation of pollutants into the 5 different segments of the bay, we need to artificially create a large sink in each of the bay segments at the segment's centroid. If we did not create these sinks, the flow would follow the naturally developed channels from the uppermost segment out to the ocean. For this exercise, we will not look at flow within the bay or between bay segments; we will merely focus on what is delivered to each bay segment.
Add the bayarc theme and the baymodel (polygon) theme - Remember to add baymodel from your working directory. Go to Analysis/Properties and check that the Analysis Extent and Cell Size are set to "Same as bdemfill." Go to the Discharge Analysis pull down menu and select "Connect Bay/Rivers." Once the program is running, it will ask you to specify the bay polygon theme, the bay arc theme, and the filled DEM. It will also ask if you would like to save the temporary data sets. Do not save these files - they are not needed and they take up a lot of file space. This step takes a while to run, so please be patient. Get up and stretch your legs for a minute, say hello to your neighbor! A new grid is calculated called connectsink.
Next a flow direction must be computed on the connectsink grid. Make the connectsink theme active. Go to Analysis/Properties and check that the Analysis Extent and Cell Size are set to "Same as bdemfill." Go to the Discharge Analysis pull down menu and select "Flow Direction." This will compute the flow direction grid that will be used later on in the exercise. This flow direction grid is a temporary grid, so if you want to keep it, use Theme/Save Dataset and give it a name (maybe flowdir). Each bay segment has a centroid identified by the black dot. The flow directions are set so that the water and pollutant loads, once they enter a bay segment, migrate to the centroid where they can be measured easily. Next, go the the Discharge Analysis menu and select "Flow Accumulation." This step will create a grid that describes the number of cells upstream of any given cell.
The segments of Tillamook Bay shown in this exercise were set in order to manage the oyster fisheries in the bay. In the most inland segments, no oyster fishing is permitted because the runoff waters into the bay are too polluted by bacteria from dairy waste and other runoff. In the segments nearer the ocean, oyster fishing is permitted except when the Tillamook rivers are in flood, in which case oyster fishing is prohibited. One of the objectives of the research on which this exercise is based is to examine more precisely how large the bacteria loads are and how they can be reduced by better waste management.
The next step in the Discharge Analysis menu is the "Create Baseflow and Runoff Grids." You will actually do that step in a bit. First, let's examine the model representation of precipitation.
Using the button, add the grid precip (remember to change to grid data source). When the theme shows up in the legend of the view, double click on the precip symbol to bring up the Legend Editor window. In the Legend Editor, change the color scheme to get a ramped effect. Click on the arrow next to the Color Ramps box, scroll down, and select the Precipitation color scheme or another color scheme to your liking (you may want to make the NoData cells transparent). When you are finished, select in the Legend Editor window and then close the Legend Editor. Finally, select for the precip theme in the View Legend. You should be able to easily see the distribution of average precipitation in the Tillamook Bay Basin.
Save your project so that if ArcView crashes, you won't have to recreate everything.
Use the identify tool to check out some values of precipitation in the basin. Note that the units of these values are in in/yr. With the precip theme highlighted, use Theme/Properties to check out cell size, number of cells, etc.
The rainfall/discharge relationships are:
An Avenue script has been written to calculate the two components of streamflow and convert them to units of cubic feet/yr for the Tillamook Bay Basin. The script inserts the precip grid into the rainfall/discharge equations to calculate discharge grids, one for surface runoff and one for baseflow. This script looks at a grid of the land use and checks the value of that grid to determine which parcels of land are water. For areas that are water, there is no baseflow component, so Q(b) is set to zero, and all of the precipitation is transformed into surface runoff, so Q(r) = P. So, before we can run the script, we need to add in the grid of the land use for the basin. Using the button, add the lulccomposite grid (remember to change to grid data source). This grid was created from a larger land use/land cover coverage that can be downloaded from an EPA website or a USGS website. This is discussed in more detail in Section 5 of this exercise.
There is a pre-prepared color scheme that was developed for land use that we will use for this grid. Double click on the lulccomposite symbol to bring up the Legend Editor, click on load, and select landuse.avl. A dialog box will pop up and ask for a Field - select "value." Now select the button to turn on the lulccomposite theme in your view.
You are now going to calculate the flow grids. Before you do this, go to Analysis/Properties and set the Analysis Extent to "Same as bdemfill" and Analysis Cell Size to "Same As bdemfill." Go to the drop down menu called Discharge Analysis and select "Create Baseflow and Runoff Grids". You will be asked to select the theme within the view which will be used as the precipitation input (precip) and the land use grid (lulccomposite). The grids are calculated, saved in the working directory and added to the view as "baseflowcf" and "runoffcf." You are also given the option to run weighted flow accumulations on both grids now. These accumulated flow grids will be required later on, so they will need to be calculated eventually. However, if you decide not to run the weighted flow accumulations at the current time, they can be run later on using Discharge Analysis/Accumulate Flows. The flow grids will be displayed in the view. Feel free the change the color scheme using the Legend Editor. Here is what the surface runoff grid should look like:
5. Linking Land Use to Estimated Mean
Concentration (EMC) of Pollutants
Now you are going to associate EMC values of various pollutant constituents
to the land use types. For this exercise, we will focus on fecal coliform
bacteria. This method of determining pollutant concentrations based
on the land use type is fairly common in nopoint source pollution control.
The expected levels of bacteria for various land use types have been taken
from various literature sources or from monitoring data. The
fecal coliform concentration associated with diary operations (land use
# 23 - CAFO) has been based on information found in a 1983 ASAE publication
on Bacterial Pollution (Crane, et al, 1983).
The landuse coverage uses the Anderson Land Use Code classification system, in which major land use types are broken out into 9 categories. Seven of these 9 categories show up in the Tillamook Bay land use coverage. The landuse coverage was created from a larger land use/land cover coverage. Files for the state of Oregon based on 1:250,000 map sheet names can be downloaded from the USGS Land Use/Land Cover site. The Vancouver dataset is the one used in this study. These files are in UTM coordinates and have been converted to the Oregon Lambert Projection. Land Use data are also available from the EPA Geographic Information Retrieval and Analysis System (GIRAS) ftp site: ftp.epa.gov:/pub/EPAGIRAS/wgiras. You can access this site using any FTP program. The file ‘lva45122.e00.gz’ is the quad sheet that contains Tillamook County. The file was in Albers projection and was re-projected to the Oregon Lambert projection. The larger coverage was converted to a grid and clipped down to the extent of the study area. The clipped land use/land cover coverage was modified to incorporate two non-standard land use classifications (rural residential and rural industrial) that the TBNEP office is using. The clipped land use grid was also modified based on additional data from a more detailed representation of land use and development in the lowland areas.
Add in the landuse coverage (remember to add from your working directory) by using the button (remember to set the data source type to 'feature data source'). Again, use the pre-developed color scheme for the landuse data. Double click on the landuse symbol to bring up the Legend Editor, click on load, and select landuse.avl. When it asks for Field, select "grid code." Click on the button and then close the Legend Editor. Now select for the landuse theme in your view and note where all the different land use categories in the basin are. Open the attribute table using the table button . Notice there are no concentration values here yet.
A script has been written to allow the user to either accept default concentration values or update them to reflect more current data. The EMC values for fecal coliform are in units of fc/100ml. Extra fields are written to the attribute table of the landuse coverage and populated based on the land use code (grid code). Go to the NPS Analysis pull down menu and select "Set EMCs." The script will ask you to select the land use coverage - select landuse. You may also be prompted to add fields for baseflow and runoff fecal coliform concentrations. If you are prompted, select "yes" in both cases. Use "Gridcode" as the attribute field which indicates land use type. Once the script has finished running, it will pull up a table that you can examine to see the EMC values.
Here are the EMC values for Fecal Coliform in number of bacteria
per 100ml:
Land Use Type | Baseflow | Runoff |
11-17 Urban | 100 | 10000 |
18 Rural Residential | 100 | 10000 |
19 Rural Industrial | 100 | 10000 |
21,22,24 Various Agricultural land | 100 | 1500 |
23 CAFO Dairy Lands | 1000 | 30000 |
31- 43 Forest and range | 5 | 20 |
51 - 62 Water, wetlands | 0 | 0 |
72-75 Barren | 5 | 20 |
Using the button, add in the outfalls coverage. If you open the attribute table with the button, you will see fields for annual FC load and annual SS (for sediment) load. Go to the NPS Analysis pull down menu and select "Create Pt Src FC Grid." You will be prompted with input boxes to identify the point source point coverage and the load field. The script will run and will add the grid to the view. If you turn on the ptsrcfcgrid grid, you will basically see a large square that is all one color with a value of zero. This is because the each of the 6 outfall loads have been assigned to one individual grid cell with all of the rest being assigned a value of zero. This point source grid is added to the runoff load. If you add in the outfalls coverage, you can see where to zoom in to see the individual grid cells that actually have a value other than zero. Note that these values are *10^7 fc/yr. Yes, that is a quirky unit to use, but that's what was needed to be able to convert the point coverage into a grid. The script that is invoked takes the units into account, so you don't have to worry about that.
Be sure that you still have the flow direction grid, baseflowcf grid, and runoffcf grids in the view. Go to Analysis/Properties and check that the Analysis Extent and Cell Size are set to "Same as bdemfill." Then go to the NPS Analysis pull down menu and select "Create Non-Pt Src FC Grids." There will be a series of dialog boxes to fill in - they are self explanatory. Remember that the average flow grids are the per cell grids (baseflowcf and runoffcf) that were created in the Flow Grids step. The bactigrid.ave script takes the land use coverage and creates two virtual grids (these are temporary grids that don't ever actually get saved) from the attribute table - one is a grid that has the baseflow EMC numbers as the cell value; the other grid has the runoff EMC numbers as the cell value. These grids are multiplied by the baseflowcf and runoffcf flow grids, respectively, employing a conversion factor of 283 to get load grids in fecal coliform per year (fc/yr). The contribution from the point sources is added in to the runoff load grid. These per cell load grids are named bfbactigrid (for baseflow) and robactigrid (for runoff).
In effect, for each cell, the load is computed as
The accumulated grid of bacteria associated with surface runoff should look like this:
This is not a very exciting graphic to look at, but if you will notice the darker areas that indicate the larger loads correspond to the locations of the rivers.
There a 4 non-located BMPs that will be accounted for in the model. They are as follows:
Let's take a look at predicted concentrations and modeled loads to the bay segments. We'll look at fecal coliform concentrations along the length of the Wilson River. Before we do that, we need to calculate a grid of predicted concentration. And, we need accumulated flow grids to do this. If you didn't accumulate the flow grids earlier, you will need to do that now using the Discharge Analysis/Accumulate Flows function. So, check your Analysis/Properties to make sure that things are set to "Same as bdemfill." Next, we will take the load grids and the flow grids and divide the two with an appropriate conversion factor to come up with a grid of predicted concentrations in fc/100ml for the entire basin. This step requires quite a number of input grids:
The other two menu items on the NPS Analysis menu are both for picking values off of grids. The first one, Pick Point Values, allows the user to specify a point coverage of interest and then query grids to get the accumulated load and flow as well as resultant concentration for runoff and baseflow. This item requires that the user identify the accumulated load grids (for runoff and baseflow) as well as the accumulated flow grids (again, runoff and baseflow). You will also be asked to select an identifier from the point coverage attribute table that will be carried over to the results table which is written to a separate .dfb file.
The second one, Pick Bay Values, allows you to pick off values for each of the 5 bay segments. This item requires the baymodel coverage and the grid that you are interested in querying. This grid of interest should be an accumulated grid (ie, baccbgrid or accrunoff). You will be prompted for a new field name where the results will be stored, as well as two identifiers to be carried over to the results table which is written to a separate .dbf file.
Now we will look at how the concentration varies along the length of
the Wilson River. We will also determine the concentration at a couple
of reference points using the ensstormpts point coverage.
Using the button, add in the
profrivers.shp shapefile and the ensstormpts coverage.
Using the select tool , select
the Wilson River line segment and the points from ensstormpts that
are on the Wilson River (use the shift key to select more than one theme
. The point theme should be above the line theme which is above the
concentration grid. Make sure that the point theme, the profriver.shp,
and the concnetration grid themes are active. Go to the Misc
Tools pull down menu and select "Profiler with Points."
A dialog box will give you the total length in units (which are actually
feet in our case) and ask you for the number of segments that you would
like the length divided into for the analysis. You can divide it
into as many segments as you feel is appropriate to get a feel for how
the concentration changes - probably about 100. Hit OK and
give the file a name (preferably somewhere in your working directory, and
one that makes sense to you) to save to. You will get a message saying
that there are too many segments to plot in ArcView, so take the .dbf file
that you saved and open it in excel and create a nice graphic of how concentration
changes along the length of the river. If you look at the headings
of the columns in excel, you will see that the profile script named the
value of interest (in our case, the predicted concentration) "elevation"
by default. You should change this header to something more appropriate
in excel. Also, you will notice that the points from the selected
point coverage are singled out as feature values - these can be used for
reference comparison with monitoring data.
References:
[1] Crane, S.R., Moore, J.A., Grismer, M.E., and Miner, J.R.
1983. "Bacterial Pollution from Agricultural Sources: A Review."
Transactions of the ASAE. pp. 858-872.
Go to Patrice's
Homepage.