Skip to content
Snippets Groups Projects
Commit 4ffc304a authored by Blodgett, David L.'s avatar Blodgett, David L.
Browse files

add rpu_vpu_out table. fixes #155

parent 4cc570bd
No related branches found
No related tags found
1 merge request!183Refactor - progress
......@@ -482,9 +482,76 @@ prepare_vpu_base_layers <- function(ref_gpkg, nav_gpkg, vpu, full_cat_table, rpu
write_sf(catchments, out_refac_gpkg, nhd_catchment)
rpu_list[[rpu_code]] <- list(flowline = nhd, catchment = catchments)
rpu_list[[rpu_code]] <- list(flowline = nhd_sub, catchment = catchments)
}
return(list(vpu = vpu, flowline = nhd, catchment = cats, catchment_network = cat_network, waterbodies = waterbodies, rpus = rpu_list))
}
#' prepare rpu vpu output list
#' @param vpu_base list of data as output from prepare_vpu_base_layers
#' @param rpu_vpu data.frame ontaining all rpu-vpu pairs
#' @returns list of outputs from a vpu and rpus that make it up
prep_rpu_vpu_out_list <- function(vpu_base, rpu_vpu) {
nhd <- vpu_base$flowline
vpu <- vpu_base$vpu
out_vpu <- nhd %>%
st_drop_geometry() %>%
select(COMID, toCOMID) %>%
filter(!toCOMID %in% COMID & !toCOMID == 0)
rpus <- rpu_vpu[rpu_vpu$vpuid == vpu,]$rpuid
rpu_list <- setNames(rep(list(list()), length(rpus)), rpus)
for(rpu_code in rpus) {
nhd_sub <- vpu_base$rpus[[rpu_code]]$flowline
rpu_list[[rpu_code]] <- nhd_sub %>%
st_drop_geometry() %>%
select(COMID, toCOMID) %>%
filter(!toCOMID %in% COMID & !toCOMID == 0)
}
return(list(vpu = vpu, vpu_out = out_vpu, rpu_out = rpu_list))
}
#' prepare rpu vpu out
#' @param rpu_vpu_out_list list of rpu vpu outlets
#' @param fline reference flowlines
#' @returns table of flowlines that are rpu and/or vpu outlets
prep_rpu_vpu_out <- function(rpu_vpu_out_list, fline) {
make_df <- function(x, d, n) {
y <- d[[x]]
nr <- nrow(y)
na <- names(d)[x]
o <- data.frame(d = rep(na, nr),
COMID = d[[x]]$COMID,
toCOMID = d[[x]]$toCOMID)
names(o) <- c(n, "COMID", "toCOMID")
o
}
out_rpu <- unlist(lapply(unname(rpu_vpu_out_list), \(x) x$rpu_out), recursive = FALSE)
out_vpu <- lapply(rpu_vpu_out_list, \(x) x$vpu_out)
names(out_vpu) <- sapply(rpu_vpu_out_list, \(x) x$vpu)
rpu <- do.call(rbind, lapply(1:length(out_rpu), make_df, d = out_rpu, n = "rpu"))
vpu <- do.call(rbind, lapply(1:length(out_vpu), make_df, d = out_vpu, n = "vpu"))
out_rpu_vpu <- left_join(rpu, vpu, by = "COMID")
out_rpu_vpu <- select(out_rpu_vpu, RPUID = rpu, VPUID = vpu, COMID = COMID, toCOMID = toCOMID.x)
out_rpu_vpu <- left_join(out_rpu_vpu, select(sf::st_drop_geometry(fline), COMID, toRPUID = RPUID, toVPUID = VPUID),
by = c("toCOMID" = "COMID"))
out_rpu_vpu
}
# rpu_vpu <- readr::read_csv(system.file("extdata/rpu_vpu.csv", package = "hyfabric"),
# show_col_types = FALSE)
# rpu_vpu_out <- readr::read_csv("cache/rpu_vpu_out.csv",
# rpu_vpu_out <- readr::read_csv("cache/rpu_vpu_out.csv",
# col_types = c("c", "c", "i" , "i"), show_col_types = FALSE)
# # The below deals with various ways to get / set rpu and vpu codes
......
......@@ -81,5 +81,8 @@ list(
# ~1GB of memory
tar_target(vpu_base, prepare_vpu_base_layers(ref_gpkg, nav_gpkg, vpu_codes, full_cat_table, rpu_vpu),
pattern = map(ref_gpkg, nav_gpkg, vpu_codes), deployment = "worker")
pattern = map(ref_gpkg, nav_gpkg, vpu_codes), deployment = "worker"),
tar_target(rpu_vpu_out_list, prep_rpu_vpu_out_list(vpu_base, rpu_vpu), pattern = map(vpu_base),
deployment = "worker", iteration = "list"),
tar_target(rpu_vpu_out, prep_rpu_vpu_out(rpu_vpu_out_list, reference_flowlines))
)
\ No newline at end of file
......@@ -38,7 +38,8 @@ if(FALSE) { # this won't run if you just bang through this file
# run branches for a given target in parallel if you have enough memory
# note this will only work for targets with 'deployment = "worker"'
tar_make_future(vpu_base, workers = 8)
tar_make_future(rpu_vpu_out_list, workers = 8)
tar_make(rpu_vpu_out)
# to run all, just do:
tar_make()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment