diff --git a/workspace/R/03_refactor_functions.R b/workspace/R/03_refactor_functions.R index e4c227d6d7372f2402a914757f85845c4bafb259..ffea5fa2b9008eda9c88bcc649c555b1d0eacb07 100644 --- a/workspace/R/03_refactor_functions.R +++ b/workspace/R/03_refactor_functions.R @@ -5,9 +5,26 @@ #' @param pois_data attributes for POIs #' @return list with all events, outlets and comids to exclude create_refactor_input <- function(flowline, refactor_event_table, pois, pois_data) { - - events_refactor <- filter(refactor_event_table, hy_id %in% flowline$COMID) %>% - rename(COMID = hy_id) %>% + + # TODO: #157 will fix the need for this filter! + + events_refactor <- rename(refactor_event_table, COMID = hy_id) |> + inner_join(select(sf::st_drop_geometry(flowline), COMID, LENGTHKM, FromMeas, ToMeas), by = "COMID") + + if(nrow(events_refactor) > 0) { + events_refactor$comid_meas <- sapply(seq_len(nrow(events_refactor)), \(i) { + hydroloom::rescale_measures(events_refactor$REACH_meas[i], + events_refactor$FromMeas[i], + events_refactor$ToMeas[i]) + }) + + events_refactor$length_up <- events_refactor$LENGTHKM * events_refactor$comid_meas / 100 + events_refactor$length_dn <- events_refactor$LENGTHKM - events_refactor$length_up + + events_refactor <- filter(events_refactor, length_dn > 0.15 & length_up > 0.15) |> + select(-LENGTHKM, FromMeas, ToMeas, comid_meas, length_up, length_dn) + } + events_refactor <- events_refactor|> distinct(COMID, REACHCODE, REACH_meas, poi_id, geom) %>% arrange(poi_id) %>% diff --git a/workspace/_targets/03_refactor_targets.R b/workspace/_targets/03_refactor_targets.R index c7c417facdca28f15f3496c4750205a7c3bce9c9..e0012206d56529359b778380afa227d5aaad6f8c 100644 --- a/workspace/_targets/03_refactor_targets.R +++ b/workspace/_targets/03_refactor_targets.R @@ -2,7 +2,7 @@ library(targets) # "dplyr", , "hyfabric", "hydroloom", "nhdplusTools" tar_option_set(packages = c("hyRefactor", "dplyr", "sf"), - memory = "transient", garbage_collection = TRUE, error = "stop", + memory = "transient", garbage_collection = TRUE, error = "null", storage = "worker", retrieval = "worker", deployment = "main") library(future) @@ -34,6 +34,7 @@ list(tar_target(data_paths_file, "cache/data_paths.json", format = "file"), pattern = map(vpu_gpkg), deployment = "worker"), tar_target(pois_data, sf::read_sf(vpu_gpkg, poi_data_table), pattern = map(vpu_gpkg), deployment = "worker"), + tar_target(refactor_event_table, sf::read_sf(vpu_gpkg, event_geometry_table), pattern = map(vpu_gpkg), deployment = "worker"), @@ -46,11 +47,20 @@ list(tar_target(data_paths_file, "cache/data_paths.json", format = "file"), rpu_codes, proj_crs), pattern = map(flowline, refactor_input, rpu_codes), deployment = "worker"), + tar_target(refactor_lookup, create_refactor_lookup(refactored_network, flowline, refactor_input$events_refactor, refactor_input$outlets), pattern = map(refactored_network, flowline, refactor_input), deployment = "worker"), + tar_target(out_refactor, { + sf::write_sf(refactored_network$refactored, rpu_gpkg, refactored_layer) + sf::write_sf(refactored_network$reconciled, rpu_gpkg, reconciled_layer) + sf::write_sf(refactor_lookup$outlets, rpu_gpkg, outlets_layer) + sf::write_sf(refactor_lookup$lookup, rpu_gpkg, lookup_table_refactor) + try(sf::write_sf(refactor_lookup$dups, rpu_gpkg, dup_pois)) + }, pattern = map(refactored_network, refactor_lookup, rpu_gpkg), deployment = "worker"), + tar_target(fdr_fac, list(fdr = data_paths$fdr[[paste0("rpu_", rpu_codes)]], fac = data_paths$fac[[paste0("rpu_", rpu_codes)]]), pattern = rpu_codes, iteration = "list"),