nhdR (version 0.5.3)

terminal_reaches: Return terminal reaches from collection intersecting lake

Description

In the case of a network query, a terminal reach is a stream flowline that has no downstream reaches in-network. In the case of a point query, a terminal reach is a flowline that exits the intersecting surface waterbody.

Usage

terminal_reaches(
  lon = NA,
  lat = NA,
  buffer_dist = 0.01,
  network = NA,
  lakepoly = NA,
  lakewise = FALSE,
  lakesize_threshold = 4,
  approve_all_dl = FALSE,
  ...
)

Arguments

lon

numeric decimal degree longitude. optional. See Details section.

lat

numeric decimal degree latitude. optional. See Details section.

buffer_dist

numeric buffer around lat-lon point in dec. deg.

network

sf lines collection. optional. See Details section.

lakepoly

sf polygon. optional. See Details section.

lakewise

logical. If TRUE, return the terminal reaches of all lakes. in the stream network rather than a single terminal reach of the focal lake.

lakesize_threshold

numeric above which to count as a lake (ha).

approve_all_dl

logical blanket approval to download all missing data. Defaults to TRUE if session is non-interactive.

...

parameters passed on to sf::st_read

Details

There are multiple ways to execute terminal_reaches:

  • Only providing lon + lat arguments - this will query the corresponding lake polygon layer and find the terminal reach of the lake intersecting a buffer around the specified point.

  • Only providing a lake polygon - this is essentially the same as above except there is no preliminary lake polygon query.

  • Only providing a network of stream lines - this provides the most downstream reach irrespective of lakes.

Examples

Run this code
# NOT RUN {
library(sf)
library(mapview)

coords <- data.frame(lat = 46.32711, lon = -89.58893)
t_reach <- terminal_reaches(coords$lon, coords$lat)

coords <- data.frame(lat = 20.79722, lon = -156.47833)
# use a non-geographic (projected) buffer size
t_reach <- terminal_reaches(coords$lon, coords$lat,
        buffer_dist = units::as_units(5, "km"))

coords  <- data.frame(lat = 42.96628 , lon = -89.25264)
t_reach <- terminal_reaches(coords$lon, coords$lat)

coords  <- data.frame(lat = 41.42217, lon = -73.24189)
t_reach <- terminal_reaches(coords$lon, coords$lat)

mapview(st_as_sf(coords, coords = c("lon", "lat"), crs = 4326)) +
mapview(t_reach$geometry, color = "red")

coords <- data.frame(lat = 41.859080, lon = -71.575422)
network <- nhd_plus_query(lon = coords$lon, lat = coords$lat,
                     dsn = "NHDFlowline", buffer_dist = 0.05)$sp$NHDFlowline
t_reach      <- terminal_reaches(network = network)
t_reach_lake <- terminal_reaches(network = network, lakewise = TRUE,
                                 lakesize_threshold = 1)

mapview(network) + mapview(t_reach_lake, color = "green") +
    mapview(t_reach, color = "red")
# }

Run the code above in your browser using DataCamp Workspace