Package 'lakemorpho'

Title: Lake Morphometry Metrics
Description: Lake morphometry metrics are used by limnologists to understand, among other things, the ecological processes in a lake. Traditionally, these metrics are calculated by hand, with planimeters, and increasingly with commercial GIS products. All of these methods work; however, they are either outdated, difficult to reproduce, or require expensive licenses to use. The 'lakemorpho' package provides the tools to calculate a typical suite of these metrics from an input elevation model and lake polygon. The metrics currently supported are: fetch, major axis, minor axis, major/minor axis ratio, maximum length, maximum width, mean width, maximum depth, mean depth, shoreline development, shoreline length, surface area, and volume.
Authors: Jeffrey W. Hollister [aut, cre] , Jemma Stachelek [aut]
Maintainer: Jeffrey W. Hollister <[email protected]>
License: CC0
Version: 1.3.4.9999
Built: 2024-11-25 05:39:38 UTC
Source: https://github.com/usepa/lakemorpho

Help Index


Calculate all Lake Morphometry Metrics

Description

This function is a wrapper function for all of the metrics. It calculates each metric for an input lakeMorphoClass. This returns a list of all metrics

Usage

calcLakeMetrics(
  inLakeMorpho,
  bearing,
  pointDens,
  slope_quant = 0.5,
  correctFactor = 1,
  zmax = NULL
)

Arguments

inLakeMorpho

an object of lakeMorphoClass. Output of the lakeSurroundTopo function would be appropriate as input

bearing

Numeric that indicates the bearing of the desired fetch.

pointDens

Number of points to place equidistant along shoreline for lakeMaxLength or density of lines to test for lakeMaxWidth and lakeFetch.

slope_quant

The slope quantile to use to estimate maximum depth. Defaults to the median as described in (Hollister et. al, 2011).

correctFactor

Value used to correct the predicted maximum lake depth. Defaults to 1. Corrections are simply accomplished by multiplying estimated max depth by correction factor. Correction factors can be determined empirically by regressing the predicted depth against a known maximum depth while forcing the intercept through zero. The slope of the line would then be used as the correction factor(Hollister et. al, 2011).

zmax

Maximum depth of the lake. If none entered and elevation dataset is inlcuded in inLakeMorpho, lakeMaxDepth is used to estimate a maximum depth.

Value

Returns a list with all lake metrics calculated for a given input lakemorpho object

References

Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link

Hollister, J. W., W.B. Milstead (2010). Using GIS to Estimate Lake Volume from Limited Data. Lake and Reservoir Management. 26(3)194-199. doi:10.1080/07438141.2010.504321

Hollister, J. W., W.B. Milstead, M.A. Urrutia (2011). Predicting Maximum Lake Depth from Surrounding Topography. PLoS ONE 6(9). doi:10.1371/journal.pone.0025764

Examples

data(lakes)
calcLakeMetrics(inputLM, bearing = 45, pointDens = 25)

Elevation Data for lakemorpho examples

Description

This example data is a RasterLayer of a small subset of the National Elevation Dataset named exampleElev.

Format

RasterLayer of 1094 x 1419 and 30 meter resolution


Lake Data for lakemorpho examples

Description

This example data is a SpatialPolygonsDataframe of lakes named exampleLakes. These lakes are originally from the NHDPlus V2 dataset.

Format

SpatialPolygonDataframe with 115 lakes, each with 13 variables


lakemorpho class data for lakemorpho examples

Description

This example lakemorpho class was generated using lakeSurroundTopo with the included exampleElev and exampleLake data.

Format

lakemorpho class


Function to calculate fetch along an input bearing

Description

The function calculates the maximum in lake distance of a line along an input bearing.

Usage

lakeFetch(inLakeMorpho, bearing, addLine = TRUE)

Arguments

inLakeMorpho

An object of lakeMorphoClass. Output of the lakeSurroundTopo function would be appropriate as input

bearing

Numeric that indicates the bearing of the desired fetch

addLine

Boolean to determine if the selected max length line should be added to the inLakeMorpho object. Defaults to True. Note that the line is returned in the same projection as the input data.

Value

Returns a numeric value indicating the length of the longest line in the lake along the input bearing. Units are the same as the input data.

References

Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link

Examples

data(lakes)
lakeFetch(inputLM,45)

Calculate the length of the major axis for lake

Description

Major axis length is defined as the maximum length spanning the convex hull of a lake.

Usage

lakeMajorAxisLength(inLakeMorpho, addLine = TRUE)

Arguments

inLakeMorpho

An object of lakeMorphoClass. Output of the lakeSurroundTopo function would be appropriate as input

addLine

Boolean to determine if the selected major axis line should be added to the inLakeMorpho object. Defaults to True

Value

This returns a numeric value indicating the length of the major axis in the lake. Units are the same as the input data.

References

Wikipedia

Kirillin, G., Engelhardt, C., Golosov, S. and Hintze, T., 2009. Basin-scale internal waves in the bottom boundary layer of ice-covered Lake Mueggelsee, Germany. Aquatic ecology, 43(3), pp.641-651.

Examples

data(lakes)
lakeMajorAxisLength(inputLM)

Estimate maximum lake depth

Description

This function uses slope and distance to estimate max depth. This is based on the assumption that the slope of the surrounding topography is similar to the bathymetry of the lake (Hollister et. al 2011).

Usage

lakeMaxDepth(inLakeMorpho, slope_quant = 0.5, correctFactor = 1)

Arguments

inLakeMorpho

An object of lakeMorphoClass. Output of the lakeSurroundTopo function would be appropriate as input

slope_quant

The slope quantile to use to estimate maximum depth. Defaults to the median as described in (Hollister et. al, 2011).

correctFactor

Value used to correct the predicted maximum lake depth. Defaults to 1. Corrections are simply accomplished by multiplying estimated max depth by correction factor. Correction factors can be determined empirically by regressing the predicted depth against a known maximum depth while forcing the intercept through zero. The slope of the line would then be used as the correction factor(Hollister et. al, 2011).

Value

Returns a numeric value of the predicted maximum depth

References

Hollister, J. W., W.B. Milstead, M.A. Urrutia (2011). Predicting Maximum Lake Depth from Surrounding Topography. PLoS ONE 6(9). doi:10.1371/journal.pone.0025764

Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link

Examples

data(lakes)
lakeMaxDepth(inputLM)

Calculate maximum lake length

Description

Maximum lake length is defined as the longest open water distance of a lake. This function determines the maximum lake length of lake by comparing the lengths of a user defined number of lines. The user specifies a number of points to distribute along the lake shoreline and the point to point line lengths are checked for multiple intersections (i.e. line not just open water),starting with the longest line first. Function is currently very sensitive to pointDens and slows down considerably for larger values. Small values of point dens are acceptable for lakes withtout complex shorelines. Care needs to be taken in selecting an approriate pointDens and multiple values should be checked to ensure stability in the estimates.

Usage

lakeMaxLength(inLakeMorpho, pointDens, addLine = TRUE)

Arguments

inLakeMorpho

An object of lakeMorphoClass. Output of the lakeSurroundTopo function would be appropriate as input

pointDens

Number of points to place equidistant along shoreline. The maximum point to point distance that does not also intersect the shoreline is used. To total of n*(n-1)/2 comparisons is possible, but in practice is usually significant less.

addLine

Boolean to determine if the selected max length line should be added to the inLakeMorpho object. Defaults to True

Value

This returns a numeric value indicating the length of the longest line possible in the lake. Units are the same as the input data.

References

Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link

Examples

library(lakemorpho)
data(lakes)
lakeMaxLength(inputLM,25)

Function to find line representing maximum lake Width

Description

Maximum lake width is defined as the maximum in lake distance that is perpendicular to the maximum lake length. As no definition specifies whether or not the maximum lake width should intersect the line of maximum legnth, this function assumes that it does not, but may be forced to find the maximum width line the is perpendicular to and intersects with the maximum lake length line. This function calculates the equation of the perpendicular line and repeats that line pointDensnumber of times and returns the longest of those lines.

Usage

lakeMaxWidth(inLakeMorpho, pointDens, intersect = FALSE, addLine = TRUE)

Arguments

inLakeMorpho

An object of lakeMorphoClass. Output of the lakeSurroundTopo function would be appropriate as input

pointDens

Number of points to place equidistant along the lakeMaxLength. A line that crosses at that point and extends from shore to shore is calcuated.

intersect

Boolean to force max width to intersect the max length line. for many lakes this will return the same line.

addLine

Boolean to determine if the selected max length line should be added to the inLakeMorpho object. Defaults to True

Value

Returns a numeric value indicating the length of the longest line perpndicular to the maximum length line.

References

Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link

Examples

library(lakemorpho)
data(lakes)
lakeMaxWidth(inputLM,25)

Function to return lake Mean Depth

Description

Calculates average depth of lake as a mean of lake volume divided by lake surface area

Usage

lakeMeanDepth(inLakeMorpho, zmax = NULL, slope_quant = 0.5, correctFactor = 1)

Arguments

inLakeMorpho

An object of lakeMorphoClass. Output of the lakeSurroundTopo function would be appropriate as input

zmax

Maximum depth of the lake. If none entered and elevation dataset is inlcuded in inLakeMorpho, lakeMaxDepth is used to estimate a maximum depth.

slope_quant

The slope quantile to use to estimate maximum depth. Defaults to the median as described in (Hollister et. al, 2011).

correctFactor

This a factor used by lakeMaxDepth to correct the predicted maximum lake depth. Defaults to 1.

Value

Returns a numerica value for the mean depth of the lake

References

Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link

Examples

data(lakes)
lakeMeanDepth(inputLM)

Function to return lake Mean Width

Description

Mean lake width is the result of lake surface area divded by the maximum length.

Usage

lakeMeanWidth(inLakeMorpho)

Arguments

inLakeMorpho

An object of lakeMorphoClass. Output of the lakeSurroundTopo function would be appropriate as input

Value

Returns a numeric value for the mean width of the lake

References

Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link

Examples

data(lakes)
lakeMaxLength(inputLM, 25)
lakeMeanWidth(inputLM)

Calculate the length of the minor axis for lake

Description

Minor axis length is defined as the minimum length spanning the convex hull of a lake.

Usage

lakeMinorAxisLength(inLakeMorpho, addLine = TRUE)

Arguments

inLakeMorpho

An object of lakeMorphoClass. Output of the lakeSurroundTopo function would be appropriate as input

addLine

Boolean to determine if the selected minor axis line should be added to the inLakeMorpho object. Defaults to True

Value

This returns a numeric value indicating the length of the minor axis in the lake. Units are the same as the input data.

References

Wikipedia

Examples

data(lakes)
lakeMinorAxisLength(inputLM)

Calculate the ratio of the minor axis length to major axis length

Description

Major axis length is defined as the maximum length spanning the convex hull of a lake. Minor axis length is defined as the minimum length spanning the convex hull of a lake.

Usage

lakeMinorMajorRatio(inLakeMorpho, addLine = TRUE)

Arguments

inLakeMorpho

An object of lakeMorphoClass. Output of the lakeSurroundTopo function would be appropriate as input

addLine

Boolean to determine if the selected major and minor axis lines should be added to the inLakeMorpho object. Defaults to True

Value

This returns a vector of numeric values indicating the length of the major and minor axes of the lake. Units are the same as the input data.

References

Link

Examples

data(lakes)
lakeMinorMajorRatio(inputLM)

Lake Morphometry in R

Description

Lakemorpho provides a number of functions to calculate a standard suite of lake morphometry metrics. Most of the metrics are measurements of the shape of the lake. Metrics that rely on depth have traditionally been calculated with bathymetry data. In the absence of bathymetry data it is possible to estimate maximum depth from surrounding topography. Lakemorpho uses this approach to also estimate maximum depth, mean depth, and volume.

Details

This development version of this package is available at https://github.com/USEPA/lakemorpho/

References

Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link

Hollister, J. W., W.B. Milstead (2010). Using GIS to Estimate Lake Volume from Limited Data. Lake and Reservoir Management. 26(3)194-199. doi:10.1080/07438141.2010.504321

Hollister, J. W., W.B. Milstead, M.A. Urrutia (2011). Predicting Maximum Lake Depth from Surrounding Topography. PLoS ONE 6(9). doi:10.1371/journal.pone.0025764


Function to create a lakeMorpho class - this is input to all other methods

Description

This is a helper function that creates a lakeMorpho class object

Usage

lakeMorphoClass(
  inLake,
  inElev = NULL,
  inCatch = NULL,
  inLakeDist = NULL,
  lakeOnEdge = F
)

Arguments

inLake

input lake SpatialPolygons object. Required.

inElev

input elevation model raster object

inCatch

input catchement SpatialPolygons object, can be buffer around lake

inLakeDist

input euclidean distance raster that measures distance from shore to any pixel in the lake

lakeOnEdge

Boolean indicating if inCatch (or lake Buffer) extends beyond extent of elevation data

Value

Returns an object of class 'lakeMorpho'

See Also

lakeSurroundTopo


Function to calculate shoreline development

Description

Shoreline development is a measure of the complexity of the lake shoreline. It is simply the ratio of the shoreline length (i.e. perimeter) to the perimeter of an equally sized circle.

Usage

lakeShorelineDevelopment(inLakeMorpho)

Arguments

inLakeMorpho

An object of lakeMorphoClass. Output of the lakeSurroundTopo function would be appropriate as input

Value

Returns a numeric value for the shoreline development of the lake

References

Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link

Examples

data(lakes)
lakeShorelineDevelopment(inputLM)

Function to calculate shoreline length

Description

This function returns the length of the shoreline of the lake and is simply the perimeter of the input lake polyogn.

Usage

lakeShorelineLength(inLakeMorpho)

Arguments

inLakeMorpho

An object of lakeMorphoClass. Output of the lakeSurroundTopo function would be appropriate as input

Value

Returns a numeric value for the length of the lake shoreline

References

Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link

Examples

data(lakes)
lakeShorelineLength(inputLM)

Return lake surface area

Description

This function simply retruns the area of the lake SpatialPolygons that is part of the lakeMorphoClass class.

Usage

lakeSurfaceArea(inLakeMorpho)

Arguments

inLakeMorpho

an object of lakeMorphoClass. Output of the lakeSurroundTopo function would be appropriate as input

Value

Returns a numeric value for the total surface area of the lake

References

Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link

Examples

data(lakes)
lakeSurfaceArea(inputLM)

Calculate surrounding topography for lake

Description

This function combines all input datasets into a lakeMorphoClass. As a part of this combination, the surrounding topography is also determined. If no input catchments are used, it is assumed that a buffer equal to the maximum in lake distance is used. If an input catchement is used, then the surrounding topography is the land area represented by the catchements that intersect the lake. This function (and all of lakemorpho) expect clean polygons. No internal checking (e.g. for proper encoding of holes, etc.) is done.

Usage

lakeSurroundTopo(
  inLake,
  inElev = NULL,
  inCatch = NULL,
  reso = ifelse(!is.null(inElev), res(inElev)[1], 10)
)

Arguments

inLake

a SpatialPolygons or SpatialPolygonsDataFrame representing the input lake. Required.

inElev

a RasterLayer representing the elevation around the lake. Required.

inCatch

Optional SpatialPolygons or SpatialPolygonsDataFrame defining the Surrounding Topography. Default is NULL which uses a buffer equal to the maximum in lake distance.

reso

Optional resolution for raster output (e.g. lake distance). Defaults to the resolution of inElev

Value

Returns an object of class 'lakemorpho' that includes the surrounding topography of the lake.

Examples

data(lakes)
inputLM<-lakeSurroundTopo(exampleLake,exampleElev)
inputLM

Calculates Lake Volume in R

Description

This function returns lake volume for the input lake. The volume is calculated using maximum lake depth and maximum distance ratio to transform all pixels and thus, distances, to an estimated depth. These depths are multiplied by the area of the pixel and summed.

Usage

lakeVolume(
  inLakeMorpho,
  zmax = NULL,
  slope_quant = 0.5,
  correctFactor = 1,
  addBathy = FALSE
)

Arguments

inLakeMorpho

An object of lakeMorphoClass. Output of the lakeSurroundTopo function would be appropriate as input

zmax

Maximum depth of the lake. If none entered and elevation dataset is inlcuded in inLakeMorpho, lakeMaxDepth is used to estimate a maximum depth.

slope_quant

The slope quantile to use to estimate maximum depth. Defaults to the median as described in (Hollister et. al, 2011).

correctFactor

This a factor used by lakeMaxDepth to correct the predicted maximum lake depth. Defaults to 1.

addBathy

Logical to include a depth raster on the input lakeMorphoClass object. This is labelled as 'pseudoBathy' in the output. It is depth estimated using the maximum lake depth and maximum distance ratio. Might be useful for some applications but shouldn't be considered a replacement for a bathymetric survey.

Value

Returns a numeric value for the total volume of the lake

References

Hollister, J. W., W.B. Milstead (2010). Using GIS to Estimate Lake Volume from Limited Data. Lake and Reservoir Management. 26(3)194-199. doi:10.1080/07438141.2010.504321

Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link

Examples

data(lakes)
lakeVolume(inputLM, addBathy = TRUE)

Default plotting of a lakeMorpho object

Description

Plots the lakeMorpho class object showing the lake, surrounding topography, and in-lake distance

Usage

## S3 method for class 'lakeMorpho'
plot(x, dist = FALSE, length = TRUE, width = TRUE, fetch = FALSE, ...)

Arguments

x

input lakeMorpho class to plot

dist

Boolean to control plotting of in lake distance

length

Boolean to control plotting of max lake length line

width

Boolean to control plotting of max lake width line

fetch

Boolean to control plotting of fetch lines

...

allows for passing of other plot parameters

Examples

data(lakes)
plot(inputLM)