This repository holds code to model bathymetry and thermocline depth in Wisconsin lakes to determine the potential impact of restrictions on wake boat operations. There are two types of restrictions included: water depth and distance from shore. This analysis and its accompanying figures are used in Wake Boats and Lakes: Physical, Ecological, and Policy Implications, Ortiz, Blackburn, et al. 2026.
It is set up as an automated pipeline using the targets R package in order to orchestrate a modular workflow where dependency tracking determines which components need to be built. See the "Running Pipeline" section below for steps.
Most lakes in Wisconsin do not have digitized bathymetry. The Wisconsin Department of Natural Resources does, however, have a maximum depth and GIS polygons for almost every lake. Using these limited data to model bathymetry requires us to make some unrealistic assumptions about lake bathymetry:
- The maximum depth of a lake is found at the point farthest from shore.
- Lake depth increases linearly from shore to the deepest point.
- Every point on the lake that is the same distance from shore will have the same depth.
Similarly, modeling thermocline depth in absence of temperature measurements requires us to make some additional broad assumptions. Thermocline depth has been estimated to be 4 time the square root of the fetch of the lake (Ragotzie, 1978). In absence of known fetch distances for lakes in this analysis, we modeled fetch distances to be the maximum length of the basin of each lake, regardless of orientation.
_targets.Rconfigures the pipeline, including setting the minimum boatable area as well as shoreline distance and depth restrictions.R/contains the pipeline code, split into two files:process.Rhas the analysis andfigures.Rhas the figures.data/has lake data from the WI DNR: a spreadsheet of lake information and a shapefile of lake polygons.
After downloading and opening the repository, run the following snippet:
# install required packages
install.packages(c("targets", "tidyverse", "sf", "furrr"))
# build datasets
targets::tar_make()Individual targets can be read into your R environment with tar_read(<target name>).
Allow at least 5 hours for pipeline to run (could be more than 10 hours), the vast majority of which is spent estimating fetch for each lake.
If you would like to save off a copy of the figures generated by this pipeline, run the following snippet after the pipeline has finished running:
# Histogram of stratified lakes' thermocline depths
ggsave(tar_read(tcl_hist), file = "tcl_hist.png", width = 10, height = 7, units = "in", dpi = 400)
# Histogram of lakes meeting boatable area criterion
ggsave(tar_read(lake_hist), file = "lakecounts.png", width = 6, height = 6, units = "in", dpi = 400)
# Scatterplot of lakes that are predicted to be stratified
ggsave(tar_read(lake_strat_scatter), file = "lake_thermal_state.png", width = 6, height = 4, units = "in", dpi = 400)
If you have questions about this pipeline, please get in touch!