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 |
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
calcLakeMetrics( inLakeMorpho, bearing, pointDens, slope_quant = 0.5, correctFactor = 1, zmax = NULL )
calcLakeMetrics( inLakeMorpho, bearing, pointDens, slope_quant = 0.5, correctFactor = 1, zmax = NULL )
inLakeMorpho |
an object of |
bearing |
Numeric that indicates the bearing of the desired fetch. |
pointDens |
Number of points to place equidistant along shoreline for
|
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, |
Returns a list with all lake metrics calculated for a given input lakemorpho object
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
data(lakes) calcLakeMetrics(inputLM, bearing = 45, pointDens = 25)
data(lakes) calcLakeMetrics(inputLM, bearing = 45, pointDens = 25)
lakemorpho
examplesThis example data is a RasterLayer of a small subset of the National Elevation Dataset named exampleElev.
RasterLayer of 1094 x 1419 and 30 meter resolution
lakemorpho
examplesThis example data is a SpatialPolygonsDataframe of lakes named exampleLakes. These lakes are originally from the NHDPlus V2 dataset.
SpatialPolygonDataframe with 115 lakes, each with 13 variables
lakemorpho
examplesThis example lakemorpho class was generated using lakeSurroundTopo with the included exampleElev and exampleLake data.
lakemorpho class
The function calculates the maximum in lake distance of a line along an input bearing.
lakeFetch(inLakeMorpho, bearing, addLine = TRUE)
lakeFetch(inLakeMorpho, bearing, addLine = TRUE)
inLakeMorpho |
An object of |
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. |
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.
Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link
data(lakes) lakeFetch(inputLM,45)
data(lakes) lakeFetch(inputLM,45)
Major axis length is defined as the maximum length spanning the convex hull of a lake.
lakeMajorAxisLength(inLakeMorpho, addLine = TRUE)
lakeMajorAxisLength(inLakeMorpho, addLine = TRUE)
inLakeMorpho |
An object of |
addLine |
Boolean to determine if the selected major axis line should be added to the inLakeMorpho object. Defaults to True |
This returns a numeric value indicating the length of the major axis in the lake. Units are the same as the input data.
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.
data(lakes) lakeMajorAxisLength(inputLM)
data(lakes) lakeMajorAxisLength(inputLM)
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).
lakeMaxDepth(inLakeMorpho, slope_quant = 0.5, correctFactor = 1)
lakeMaxDepth(inLakeMorpho, slope_quant = 0.5, correctFactor = 1)
inLakeMorpho |
An object of |
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). |
Returns a numeric value of the predicted maximum depth
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
data(lakes) lakeMaxDepth(inputLM)
data(lakes) lakeMaxDepth(inputLM)
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.
lakeMaxLength(inLakeMorpho, pointDens, addLine = TRUE)
lakeMaxLength(inLakeMorpho, pointDens, addLine = TRUE)
inLakeMorpho |
An object of |
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 |
This returns a numeric value indicating the length of the longest line possible in the lake. Units are the same as the input data.
Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link
library(lakemorpho) data(lakes) lakeMaxLength(inputLM,25)
library(lakemorpho) data(lakes) lakeMaxLength(inputLM,25)
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 pointDens
number of times and returns the longest
of those lines.
lakeMaxWidth(inLakeMorpho, pointDens, intersect = FALSE, addLine = TRUE)
lakeMaxWidth(inLakeMorpho, pointDens, intersect = FALSE, addLine = TRUE)
inLakeMorpho |
An object of |
pointDens |
Number of points to place equidistant along the
|
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 |
Returns a numeric value indicating the length of the longest line perpndicular to the maximum length line.
Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link
library(lakemorpho) data(lakes) lakeMaxWidth(inputLM,25)
library(lakemorpho) data(lakes) lakeMaxWidth(inputLM,25)
Calculates average depth of lake as a mean of lake volume divided by lake surface area
lakeMeanDepth(inLakeMorpho, zmax = NULL, slope_quant = 0.5, correctFactor = 1)
lakeMeanDepth(inLakeMorpho, zmax = NULL, slope_quant = 0.5, correctFactor = 1)
inLakeMorpho |
An object of |
zmax |
Maximum depth of the lake. If none entered and elevation dataset
is inlcuded in inLakeMorpho, |
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 |
Returns a numerica value for the mean depth of the lake
Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link
data(lakes) lakeMeanDepth(inputLM)
data(lakes) lakeMeanDepth(inputLM)
Mean lake width is the result of lake surface area divded by the maximum length.
lakeMeanWidth(inLakeMorpho)
lakeMeanWidth(inLakeMorpho)
inLakeMorpho |
An object of |
Returns a numeric value for the mean width of the lake
Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link
data(lakes) lakeMaxLength(inputLM, 25) lakeMeanWidth(inputLM)
data(lakes) lakeMaxLength(inputLM, 25) lakeMeanWidth(inputLM)
Minor axis length is defined as the minimum length spanning the convex hull of a lake.
lakeMinorAxisLength(inLakeMorpho, addLine = TRUE)
lakeMinorAxisLength(inLakeMorpho, addLine = TRUE)
inLakeMorpho |
An object of |
addLine |
Boolean to determine if the selected minor axis line should be added to the inLakeMorpho object. Defaults to True |
This returns a numeric value indicating the length of the minor axis in the lake. Units are the same as the input data.
data(lakes) lakeMinorAxisLength(inputLM)
data(lakes) lakeMinorAxisLength(inputLM)
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.
lakeMinorMajorRatio(inLakeMorpho, addLine = TRUE)
lakeMinorMajorRatio(inLakeMorpho, addLine = TRUE)
inLakeMorpho |
An object of |
addLine |
Boolean to determine if the selected major and minor axis lines should be added to the inLakeMorpho object. Defaults to True |
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.
data(lakes) lakeMinorMajorRatio(inputLM)
data(lakes) lakeMinorMajorRatio(inputLM)
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.
This development version of this package is available at https://github.com/USEPA/lakemorpho/
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
This is a helper function that creates a lakeMorpho class object
lakeMorphoClass( inLake, inElev = NULL, inCatch = NULL, inLakeDist = NULL, lakeOnEdge = F )
lakeMorphoClass( inLake, inElev = NULL, inCatch = NULL, inLakeDist = NULL, lakeOnEdge = F )
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 |
Returns an object of class 'lakeMorpho'
lakeSurroundTopo
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.
lakeShorelineDevelopment(inLakeMorpho)
lakeShorelineDevelopment(inLakeMorpho)
inLakeMorpho |
An object of |
Returns a numeric value for the shoreline development of the lake
Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link
data(lakes) lakeShorelineDevelopment(inputLM)
data(lakes) lakeShorelineDevelopment(inputLM)
This function returns the length of the shoreline of the lake and is simply the perimeter of the input lake polyogn.
lakeShorelineLength(inLakeMorpho)
lakeShorelineLength(inLakeMorpho)
inLakeMorpho |
An object of |
Returns a numeric value for the length of the lake shoreline
Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link
data(lakes) lakeShorelineLength(inputLM)
data(lakes) lakeShorelineLength(inputLM)
This function simply retruns the area of the lake SpatialPolygons that is part
of the lakeMorphoClass
class.
lakeSurfaceArea(inLakeMorpho)
lakeSurfaceArea(inLakeMorpho)
inLakeMorpho |
an object of |
Returns a numeric value for the total surface area of the lake
Florida LAKEWATCH (2001). A Beginner's guide to water management - Lake Morphometry (2nd ed.). Gainesville: Florida LAKEWATCH, Department of Fisheries and Aquatic Sciences. Link
data(lakes) lakeSurfaceArea(inputLM)
data(lakes) lakeSurfaceArea(inputLM)
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.
lakeSurroundTopo( inLake, inElev = NULL, inCatch = NULL, reso = ifelse(!is.null(inElev), res(inElev)[1], 10) )
lakeSurroundTopo( inLake, inElev = NULL, inCatch = NULL, reso = ifelse(!is.null(inElev), res(inElev)[1], 10) )
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 |
Returns an object of class 'lakemorpho' that includes the surrounding topography of the lake.
data(lakes) inputLM<-lakeSurroundTopo(exampleLake,exampleElev) inputLM
data(lakes) inputLM<-lakeSurroundTopo(exampleLake,exampleElev) inputLM
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.
lakeVolume( inLakeMorpho, zmax = NULL, slope_quant = 0.5, correctFactor = 1, addBathy = FALSE )
lakeVolume( inLakeMorpho, zmax = NULL, slope_quant = 0.5, correctFactor = 1, addBathy = FALSE )
inLakeMorpho |
An object of |
zmax |
Maximum depth of the lake. If none entered and elevation dataset
is inlcuded in inLakeMorpho, |
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 |
addBathy |
Logical to include a depth raster on the input
|
Returns a numeric value for the total volume of the lake
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
data(lakes) lakeVolume(inputLM, addBathy = TRUE)
data(lakes) lakeVolume(inputLM, addBathy = TRUE)
Plots the lakeMorpho class object showing the lake, surrounding topography, and in-lake distance
## S3 method for class 'lakeMorpho' plot(x, dist = FALSE, length = TRUE, width = TRUE, fetch = FALSE, ...)
## S3 method for class 'lakeMorpho' plot(x, dist = FALSE, length = TRUE, width = TRUE, fetch = FALSE, ...)
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 |
data(lakes) plot(inputLM)
data(lakes) plot(inputLM)