Water Quality Loading in Tillamook Bay

Center for Research in Water Resources

The University of Texas at Austin

Prepared by: Patrice Melancon and David R. Maidment
pmelancon@mail.utexas.edu
5 February 1999

Table of Contents

    1. Getting Acquainted with the Basin
    2. Using the Model
    3. Annual Precipitation in the Basin
    4. Create the Surface Runoff and Baseflow Grids
    5. Linking Land Use to Event Mean Concentration (EMC) of Pollutants
    6. Estimating Annual Loadings
    7. Accounting for BMPs
    8. Picking off Values
    9. Concentration Profiles

Goals of the Exercise

This exercise is based on an exercise written for the Corpus Christi Bay National Estuary Project by Ann Quenzer.  Tillamook Bay is also part of the EPA's National Estuary Program.  This exercise has taken the Corpus Christi Bay framework and utilized data for Tillamook Bay to calculate annual loadings of fecal coliforms and suspended sediment.  It has also incorporated further work done specific to the TBNEP goals.

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.

Computer and Data Requirements

This exercise makes use of ArcView 3.1 using the Spatial Analyst and the Hydrology Extensions.  The necessary avenue scripts are contained within the project file.

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)
landuse.avl (legend editor color scheme for land use data)
This exercise is rather memory intensive.

Assignment Procedure

Start ArcView and open the project bactimodel.apr.  The first thing that you need to do is set the work directory for the project - a message box will pop up to remind you to do this.  Go to the project window and select Project/Properties. In the box called Work Directory, set the path to your working directory.  This is very important so that the grids/coverages that you will be creating will be saved in the right place.  Also, if the project is run more than once on the same computer, you will need to either create a new working directory and set the project/properties to reflect that, or you will need to change the names of the created grids.  For each created grid, you will be presented with a default name that can be changed.  Click on File/Extensions and check that the Spatial Analyst and Hydrologic Modeling are turned on.  Also, you should save the .apr file to your local working directory now (after setting the work directory), and work from there throughout the exercise.  You may want to periodically save the project as you work just in case ArcView crashes; that way you won't have to start all over.  Also, did you remember to import the landuse and baymodel coverages?  These coverages have to be imported to your working directory because the scripts actually edit the attribute table.

1. Getting Acquainted with the Basin DEM

Go to the Project Window and Open View 1.  Add the Bdemfill grid to the view by clicking on , change the Data Source Type to Grid Data Source, highlight bdemfill, and click OK. Once the theme has been added, check the   box next to the theme to view the DEM of the area. The Bdemfill grid is a specially modified DEM of the region that has the land surface cells not on the stream raised by 2000 ft from their original elevation so that the cells on the stream will be clearly defined and coincident with the mapped streams of the Tillamook Bay basin.  This has the effect of "burning in" the stream paths into the DEM.  In this case, the stream paths have included the bay segments in the burn in process.  Refer to the project report on Modeling the Hydrology of Tillamook Bay for more detail.

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

2.  Using the Project File

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.

3. Annual Precipitation in the Basin

Tillamook Bay is located on the coast of Oregon in the rainy Pacific Northwest.  The basin has quite a lot of mountainous land.  The basin averages between 90 inches/yr of rain in the flat, lowlands and upwards of 150 inches/yr of rain in the forested areas at higher elevations.  The USDA Natural Resources Conservation Service and Oregon State University are publishing annual and monthly precipitation grids of the United States, developed using an interpolation process called PRISM, and verified by consultation with State climatologists. The grid is an annual long term average of precipitation and is based on data from 1961-1990.  The original precipitation data are presented in mm/yr.  The data presented in this exercise have been converted to in/yr.  In this exercise, you will use the portion of this annual precipitation grid for the Tillamook Bay basin.

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.

4. Create the Surface Runoff and Baseflow Grids

Mathematical relationships have been determined between average precipitation and baseflow and surface runoff in the basin.  These relationships are based on a calculated longterm average precipitation  grid, daily rainfall data at the Tillamook 1W raingage (near the city of Tillamook), and daily flow data from the Wilson River USGS flow gage which is located up from the bay in the forested area.  For details on how these relationships were derived, please see the report "Modeling the Hydrology of Tillamook Bay."

The rainfall/discharge relationships are:

Q(r) = 0.3763(P) – 15.478 For Surface Runoff (in/yr)

Q(b) = 0.5188(P) + 1.857 For Baseflow (in/yr)

Q = Q(r) + Q(b)

Where Q = total runoff (in/yr) and P = average precipitation (in/yr)

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
 
Notice that the numbers are higher for runoff than for baseflow and that by far the highest numbers are for runoff from CAFO Dairy Lands.  These values have been taken from the literature and are concentration values.  Now we'll multiply them by the volume of water flow to get pollutant loads.

6.  Estimating Annual Loadings

We will now use the land use coverage to create per cell load grids as well as accumulated grids of fecal coliform bacteria in baseflow and surface runoff.  The script that does this also incorporates a point source grid of Sewage Treatment Plant outfalls.  So, you will need to create the point source grid theme first.

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

Load = Flow * Concentration For bacteria loads, concentration is in fc/100ml and flow is in cf/yr. Once these grids are calculated, the user is prompted for whether or not flow accumulations should be calculated.  Go ahead and select yes.  These flow accumulations are actually weighted flow accumulations.  Rather than just counting the number of cells upstream of a particular point, a weighted flow accumulation will add up the values in the designated weight grid for all cells upstream of any given point.  The accumulated load grids are named baccbgrid (for baseflow) and raccbgrid (for runoff).  Both grids will be added to the view.  If you had selected not to accomplish flow accumulations, the per cell load grids would have been added to the view.   Again, this step takes a little while to run, so it's time for another leg stretch.  There is also a tool in the Misc Tools drop down menu that is a generic weighted flow accumulation tool.  This tool can be used to calculate a weighted flow accumulation on any grid of interest.

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.

7.  Accounting for BMPs

There a 4 non-located BMPs that will be accounted for in the model.  They are as follows:

Make sure that you still have the bfbactigrid, robactigrid, lulccomposite, and flow direction grids in the View.  Under the NPS Analysis menu bar, select "BMP Effects."  You will be prompted with input boxes to identify the required grids, and then you will be presented an input box to enter vales for the effectiveness and level of implementation of the CAFO related BMPs.  Next, you will be presented with an input box for the percent of septic systems that are estimated to be failing.  After naming the resultant grid (the default is bmpbactiload), you will be asked if you would like to conduct a weighted flow accumulation of the new runoff load grid.  Go ahead and do this.  The default name for the new accumulated grid is accbmpbacti.  You will also be offered the option to flow accumulate the baseflow load grid if you haven't already done that.

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:

Go to the pull down menu and select Concentration Grid.  The dialog boxes are self-explanatory.  The user will be prompted for a name for the resultant grid.

8.  Picking off values

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.

9.  Concentration Profiles

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.