View source: R/ch_catchment_hyps.R
ch_catchment_hyps | R Documentation |
Finds the hypsometric curve, which is the total fraction of the area below vs. elevation, for a given basin.
ch_catchment_hyps( catchment, dem, z_levels = NULL, n_levels = 10, zmin = NULL, zmax = NULL, quantiles = NULL, hypso_plot = FALSE, z_units = "m", col = "red", type = "o", xlab = "Fraction of catchment below given elevation", ylab = paste0("Elevation (", z_units, ")"), add_grid = FALSE, ... )
catchment |
A sf object containing the catchment divide. |
dem |
A raster object of the Digital Elevation Model. |
z_levels |
Vector of elevation levels for the hypsometry. If specified,
then no other elevation parameters are required. Default is |
n_levels |
If specified, sets number of elevation intervals.
Can be used with |
zmin |
Minimum elevation for hypsometry. If not specified, minimum
catchment elevation is used. Default is |
zmax |
Maximum elevation for hypsometry. If not specified, maximum
catchment elevation is used. Default is |
quantiles |
Vector of elevation quantiles. Default is |
hypso_plot |
if |
z_units |
Elevation units for plot. Default is m. |
col |
Colour for plot. Default is red. |
type |
Type of plot. Defailt is o (lines with overplotted points). |
xlab |
Plot x-axis label. |
ylab |
Plot y-axis label. |
add_grid |
If |
... |
Other parameters for the graph |
The elevations may be passed as a vector of elevations, or of elevation quantiles, or as minimum and maximum elevations and the number of elevation intervals. A plot of the curve may also be created.
Returns a data frame of elevations and catchment fractions below.
Dan Moore
## note: example tagged as 'donttest' as it is very slow to execute due to the downloading library(raster) # change the following line to specify a directory to hold the data dir_name <- tempdir(check = FALSE) # create directory to store data sets if (!dir.exists(dir_name)) { dir.create(dir_name, recursive = TRUE) } # get 25-m dem dem_fn <- file.path(dir_name, "gs_dem25.tif") dem_url <- "https://zenodo.org/record/4781469/files/gs_dem25.tif" dem_upc <- ch_get_url_data(dem_url, dem_fn) dem_upc # get catchment boundaries cb_fn <- file.path(dir_name, "gs_catchments.GeoJSON") cb_url <- "https://zenodo.org/record/4781469/files/gs_catchments.GeoJSON" cb <- ch_get_url_data(cb_url, cb_fn) # quick check plot - all catchments raster::plot(dem_upc) plot(cb, add = TRUE, col = NA) # subset 240 catchment cb_240 <- cb %>% dplyr::filter(wsc_name == "240") plot(cb_240, col = NA) ## test function # test different combinations of arguments ch_catchment_hyps(cb_240, dem_upc, quantiles = seq(0, 1, 0.1)) ch_catchment_hyps(cb_240, dem_upc, z_levels = seq(1600, 2050, 50)) ch_catchment_hyps(cb_240, dem_upc, n_levels = 6) ch_catchment_hyps(cb_240, dem_upc) ch_catchment_hyps(cb_240, dem_upc, zmin = 1600, zmax = 2050) ch_catchment_hyps(cb_240, dem_upc, zmin = 1600, zmax = 2050, n_levels = 6) # generate a graph ch_catchment_hyps(cb_240, dem_upc, hypso_plot = TRUE) ch_catchment_hyps(cb_240, dem_upc, hypso_plot = TRUE, col = "blue", type = "l", ylim = c(1500, 2200)) ch_catchment_hyps(cb_240, dem_upc, hypso_plot = TRUE, add_grid = TRUE, quantiles = seq(0, 1, 0.1)) ch_catchment_hyps(cb_240, dem_upc, hypso_plot = TRUE, ylab = expression("z ("*10^{-3} ~ "km)")) # extract specific quantiles (e.g., median and 90%) ch_catchment_hyps(cb_240, dem_upc, quantiles = c(0.5,0.9))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.