The purpose of this exercise is to show how Arcview 3.0a 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. 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 Event Mean Concentration (EMC) values of various pollutant constituents with those land uses. Then, for selected pollutants, 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).
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.
If you will be working on a PC in the LRC, the files are located in
/class/maidment/giswr/tbay, you will need to:
- Copy the .apr and .avl files to your working directory (I suggest
you use the c:\temp)
- Add the files from the /class directory to the project as you are
requested to do so. It is not necessary to copy them from the /class
directory.
All of the data needed for this exercise is also available via anonymous
ftp from ftp.crwr.utexas.edu in /pub/gisclass/tbay in the file tbay.zip.
Instructions
on how to use anonymous ftp. If you use this approach to getting the
files, you will need to:
- unzip the tbay.zip file.
- Import the .e00 files using Arc/Info or using ArcView.
For ArcView the Import function is accessed from the Start Menu outside
of ArcView and the function is called Import71
- Once you import all the files, delete the .e00 files - they
are file space hogs!
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 for LRC work! Don't use the one in the class folder.
Bayarc (arc coverage of bay segments)
Bdemfill (grid of the burned in DEM that has been filled with the Hydrology/Fill function)
Tbaylu (coverage of land use in the Tillamook Bay watershed) - you will need to import this one to your working directory for LRC work! Don't use the one in the class folder.Outfalls (point coverage of STP outfall locations)
Tbaylugr (grid representation of land use)
River.shp (shapefile of the 5 major rivers) ** there are 3 files that you need - .shx, .shp, and .dbf
Precip (grid of precipitation)stpfcgrid (grid of sewage treatment plant outfall loads)
nonpoint.apr (the project file for the exercise)
This exercise is rather memory intensive. You can use the c:\temp directory by creating a new folder under it for your work. Create a subdirectory under c:\temp called tbayex.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. Make note of the following:
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
To Be Turned In: What is the cell size of the grid? How many rows and columns does the grid have? What is the total number of cells in this grid? What land surface area is covered by this grid?
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 (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. Make a histogram of the precipitation using the histogram button in the view window with the precip theme highlighted.
Determine the mean precipitation over the basin (in.yr). You will need to convert the grids from floating point into integer values. Do this by using the Analysis/Map Calculator function and with the slider bar in the upper right corner set to Arithmetic, you'll see a button Int show up, which if pressed gives the integer value of the grid e.g. ([Precip].int). In the attribute table of this grid, you have two columns, Value and Count. To determine the mean precipitation you need to create a new field (Use Table/Edit/Add Field) which is the product (Use Field/Calculate) of the values in these two columns, find the Sum of this product using the Field/Statistics function, and divide the result by the Sum of the values in the Count field, i.e. Mean = (Sum (Value * Count) / Sum (Count)).
To be turned in: What is the range of precipitation across the basin in in/yr? What is the basin mean precipitation (in/yr)? What are the corresponding values in mm/yr? What grid cell size is used? Show the histogram of the basin precipitation.
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 three runoff grids, one for surface runoff, one for baseflow, and one for total streamflow. For this exercise, the streamflow grid is not needed, so it is not saved or displayed in the View window. 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 tbaylugr 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 tbaylugr 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 tbaylugr theme in your view. Here is what the grid should look like:
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 precip" and Analysis Cell Size to "Same As precip." Go to the drop down menu called NPS Analysis and select Flow 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 (tbaylugr). The grids are calculated, saved in the c:\temp\tbayex folder and added to the view as "baseflow" and "runoff." Both 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:
Make sure that the runoff theme is active. Use the identify tool to investigate values of surface runoff throughout the basin. Use the histogram tool to prepare a histogram of both the runoff and the baseflow. Determine the mean runoff and baseflow from the basin in the same manner as you determined the mean precipitation earlier.
To Be Turned In: What is the mean value and the range of the runoff from the basin in (cf/yr)? What are the corresponding values in in/yr (Cell size = 100ft)? What are the mean value and range of the baseflow in in/yr? What percentage of the basin precipitation is discharged as baseflow and what percentage as runoff? Prepare histograms of both the surface runoff and baseflow.
4. Connecting the Rivers and the Bay
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 NPS 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 NPS 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.
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 tbaylu land use 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 tbaylu 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.
Add in the tbaylu 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 tbaylu 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 tbaylu 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 tbaylu 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 tbaylu. 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 | 2000 |
18 Rural Residential | 100 | 8000 |
19 Rural Industrial | 100 | 10000 |
21,22,24 Various Agricultural land | 100 | 1500 |
23 CAFO (Confined Animal Feeding Operation) | 1000 | 25000 |
31- 43 Forest and range | 5 | 20 |
51 - 62 Water, wetlands | 0 | 0 |
72-75 Barren | 5 | 20 |
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 "Bacti Grid." 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 grids 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 STPs 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.
To Be Turned In: Do a units analysis for the load calculation
to 'prove' that the conversion factor of 283 leads to the correct units
for the bacteria loading (fc/yr).
Let's take a look at predicted concentrations and modeled loads to
the bay segments. We'll look at fecal coliform concentrations contributed
from runoff along the length of the Wilson River. Before we do that,
we need to calculate a grid of predicted concentrations associated with
runoff loads. And, we need an accumulated runoff grid to do this.
We'll be using the NPS Analysis/Accumulated Flow function.
The script that is invoked was written to do weighted flow accumulations
on both the runoff and baseflow grids. However, in the interest of
time, the commands applying to baseflow have been commented out, so that
the accumulation will be done for the runoff grid only. So, check
your Analysis/Properties to make sure that things are set to "Same
as bdemfill." Be sure that you have the flow direction
grid and the runoffcf grid in the view. Then go to the pull
down menu and select Accumulated Flow. The accumulated runoff
will be saved as accrunoff. Next, we will take the accumulated
runoff bacteria grid and the accumulated runoff (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. Go to
the pull down menu and select Concentration Grid. The dialog
boxes are self-explanatory. The resultant grid is saved as runoffconc.
Now we will look at how the concentration varies along the length of the Wilson River. Using the button, add in the rivers.shp shapefile. Use the identify tool to determine which river is the Wilson River. Then using the select tool , select the Wilson River line segment. Make sure that both river.shp and the runoffconc themes are active. Go to the NPS Analysis pull down menu and select "River Profile." 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. Hit OK and give the file a name (preferably somewhere in your working directory, and one that makes sense to you) to save to. The chart that comes up will be a graphical representation of loads as you travel from the headwaters of the Wilson River (at the zero point on the graph) down to the mouth. This 'canned' graphic leaves a lot to be desired, 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 accumulated bacteria) "elevation" by default. You should change this header to something more appropriate in excel.
Let's also explore the roaccbgrid at a couple of key points along the Wilson River. Using the landuse coverage and the rivers shapefile as a guide, query the roaccbgrid at the point where the landuse changes from forest to agricultural. Be sure that you are zoomed in enough that you can click on a point that is actually on the river (if you click off to the side, the value will be grossly lower than it should be). This value will substantially reflect the contribution from the forest land use since this point is still upstream of the agricultural and CAFO land. Also, pick a point down toward the bay that would represent the mouth of the river - this point should be somewhat upstream of the 'fingers' that lead from the river into the bay. This value will represent the additional load from the ag/CAFO land use. Make note of these two values (in fc/yr).
The last thing that we will do is to examine the FC load from surface runoff that is delivered to each segment of the bay. Earlier in the exercise, we connected the rivers and the bay segments by dropping a large sink at each of the bay segment centroids. At the actual centroid point, a nodata cell is created. So, we can't actually query the centroid for a value. All of the flow to the centroids goes to one of four cells (immediately and directly above, below, left, and right) before going to the centroid. So, a script was written to query each of these four cells and add up the values to determine the total value. The baymodel polygon theme attribute table is edited to add a field to which the results are written. Go to the NPS Analysis pull down menu and select Pick Bay Loads. When you are asked for a 'Value Grid' select the roaccbgrid since we are concerned with accumulated bacteria load from runoff. You may be prompted to add a field for accumulated fecal coliform - answer 'yes.' Once the script has finished running, you can open up the baymodel attribute table and see what the accumulated loads are. Pretty big numbers, aren't they?!?! This should make it quite evident that some controls need to be implemented to reduce the loads going to the bay.
To Be Turned In: An excel graph showing the Wilson River profile
of precicted fecal coliform concentration associated with surface runoff.
Make a comparison of the accumulated load at the forest/ag interface versus
at the mouth. What can you say about relative contributions from
forest versus Ag/CAFO lands? Provide a table showing the accumulated
bacteria loads to each of the 5 bay segments.
Other than that, you can pretty much delete all of the files/folders that are in your working directory.
Ok, you're done! Hope you enjoyed it!
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.