Introduction

Prairie Rivers of Iowa and its partners have wrapped up another year of monitoring in streams around Story County.

Grant Creek (and most other streams) were covered with thick ice in December.

# 2022-03-22 Started over with 2022 data
# Import csv file provided by City of Ames
# Skip unneeded columns for tidy format
library(tidyverse)
library(readr)
library(lubridate)
ameslab2022 <- read_csv("data/ameslab2022.csv", na = "NULL",
                        col_types = cols(CollectionDate = col_date(format = "%m/%d/%Y"), 
                                         CollectionTime = col_skip(), Comment = col_skip(), 
                                         MRL = col_skip(), LabID = col_integer(),
                                         Method = col_skip(), Note = col_skip(), 
                                         Symbol = col_skip(), Unit = col_skip()))
# renames a column for clarity
ameslab2022 <- rename(ameslab2022, site = Description)
View(ameslab2022)

# Tidy the data, so each analyte is in a column
ames_tidy<- ameslab2022 %>%
pivot_wider( names_from = Analyte, values_from = Result) %>%
    mutate(Year = year(CollectionDate), Month = month(CollectionDate, label = TRUE), 
           Day = day(CollectionDate))
  # Adds a column from a lookup table to allow ordering sites from upstream to downstream
library(readr)
lookup_US_DS <- read_csv("data/lookup_US_DS.csv")
ames_tidy <- left_join(ames_tidy, lookup_US_DS, by = "site")

If you see a car stopped by a bridge in Story County with someone pulling up a milk jug of water on a rope, there’s a good chance it’s me or volunteer Rick Dietz, doing our monthly monitoring route. We collect water samples from 10 sites, and City of Ames staff cover another five. Laboratory Services for City of Ames Water and Pollution Control tests the samples for nitrate, total phosphorus, total suspended solids, and E. coli bacteria.

Weather and flow conditions

Flows in the South Skunk River below Ioway Creek were at or above normal from late March thru July, but Story County entered a drought in late summer.

Ballard Creek dried up in August, at least in this stretch near Cambridge.

Bear Creek was out of its banks in Roland.

Meltwater at Ballard Creek

Under high flow conditions, agricultural runoff can have a big influence on water quality. Under low flow conditions, effluent from wastewater treatment plants and industry (regulated point sources of pollution) have a greater influence.

E. coli bacteria

The support of a certified lab provides a backstop for volunteer monitoring and allows us to make direct comparisons with laboratory data from DNR and other agencies. It also allows us to test for E. coli bacteria, an indicator of fecal contamination from human waste, livestock, pets, or wildlife.

Stagnant water in West Indian Creek last year. I sampled a ways downstream of this pool where the water was flowing. E. coli exceeded the secondary contact standard.

Single samples are evaluated using a threshold of 235 colonies per 100 mL in waters designated for primary contact recreation and children’s play, and a threshold of 2,880 colonies per 100mL is used for waters designated for secondary contact recreation.

The standards apply from March 15-November 15, when people are more likely to enter the water. This is also the period when most wastewater treatment plants run their disinfection equipment.

On November 16, 5/12 samples met the primary contact standard, but with snow on the ground, no one is likely to be in the water. June results were unusually high at all sites due to flash flooding.

ggplot(data = ames_tidy) +
  geom_col(mapping = aes(x= US_DS_order, y = `E. coli`, fill = Month), position = "dodge2") +
  geom_hline(yintercept = 235, color = 'red') +
  scale_y_log10() +
  annotate("text", x = 4, y = 200, color = 'red', label = "Primary contact standard") +
  geom_hline(yintercept = 2880, color = 'brown')+
    annotate("text", x = 4, y = 2500, color = 'brown', label = "Secondary contact standard") +
  theme_light() +
  theme(axis.text.x = element_text(angle = 90))+
  labs(x = "Sites, arranged upstream to downstream", y = "E. coli (MPN/100mL), plotted on log scale", title = "E. coli in Story County streams, single samples") +
   annotation_logticks(sides = "l")

In rainy weather, manure can be washed off the land surface. Under low flow conditions, E. coli could be from animals that are actually entering the water, or it could be from leaking septic and sewer systems. Wastewater treatment plants do a good job of removing solids, ammonia, and other nasty stuff, but some of the bacteria make it through, and smaller systems have only recently begun to install UV disinfection systems.

Phosphorus

Phosphorus is an essential plant nutrient that contributes to algae blooms when it gets to the water. Total phosphorus includes forms of phosphorus that are bound to sediment, so phosphorus concentrations are usually highest shortly after heavy rains when runoff can wash sediment into rivers or high flows can erode streambanks. Phosphorus levels above 0.5 mg/L were seen in Ballard Creek and Grant Creek on May 18, the morning after a rainstorm. Phosphorus could not be tested in June.

Algae growth in West Indian Creek.

However, effluent from wastewater treatment plants (WWTPs) can have a large influence on phosphorus concentrations when streamflow is low and effluent is less diluted. In October, total phosphorus in West Indian Creek reached 6 mg/L, downstream from the Nevada WWTP.

ggplot(data = ames_tidy) +
  geom_col(mapping = aes(x= US_DS_order, y = `Total Phosphorus as P`, fill = Month), position = position_dodge(0.5), width = 0.5) +
    theme_light() +
  theme(axis.text.x = element_text(angle = 90))+
  labs(x = "Sites, arranged upstream to downstream", y = "Total Phosphorus (mg/L)", title = "Lab results from Story County monitoring route")

Total Suspended Solids

Total suspended solids (TSS) are a measure of water clarity that involves weighing the material that settles out the water. The material is usually sediment (mud) but can also include algae and other organic solids. More sediment can be carried when flows are high. Normally, TSS at our sites is less than 20 mg/L but during flash flooding on June 16, all sites exceeded 100 mg/L and five sites exceeded 1000 mg/L. In order to show this wide range, the graph is shown on a log scale–each tick mark is a ten-fold increased.

ggplot(data = ames_tidy) +
  geom_col(mapping = aes(x= US_DS_order, y = `Total Suspended Solids`, fill = Month), position = "dodge2") +
  scale_y_log10() +
  annotation_logticks(sides = "l") +
  theme_light() +
    theme(axis.text.x = element_text(angle = 90))+
  labs(x = "Sites, arranged upstream to downstream", y = "Total Suspended Solids (mg/L)", title = "Lab results from Story County monitoring route")

Nitrogen

Nitrogen is a major contributor to the “dead zone” in the Gulf of Mexico. Nitrogen losses are usually highest in watersheds with a lot of tile-drained agriculture, and during times when tile lines are flowing. Read here to see this in action.

In May, nitrate concentrations exceeded 10 mg/L at thirteen of fifteen sites, but dropped off in late summer as water levels dropped and denitifying bacteria became more active.

In November, nitrate exceeded 10 mg/L in West Indian Creek downstream from the Nevada WWTP and in Ballard Creek downstream from the Huxley WWTP, but was low at all other sites. In December, nitrate at the sites that could be sampled was up from previous months.

ggplot(data = ames_tidy) +
  geom_col(mapping = aes(x= US_DS_order, y = `Nitrate Nitrogen as N`, fill = Month), position = "dodge2") +
    geom_hline(yintercept = 10, color = 'coral')+
    theme_light() +
  theme(axis.text.x = element_text(angle = 90))+
  labs(x = "Sites, arranged upstream to downstream", y = "Nitrate-N (mg/L)", title = "Lab results from Story County monitoring route")