From bbc65718128329c89999656c4dd0d982a644ddc9 Mon Sep 17 00:00:00 2001
From: Andy Bock <abock@usgs.gov>
Date: Tue, 16 Mar 2021 18:12:17 -0600
Subject: [PATCH] stye changes hydReg -> VPU

---
 workspace/02_NHD_navigate.Rmd | 58 +++++++++++++++++++----------------
 1 file changed, 31 insertions(+), 27 deletions(-)

diff --git a/workspace/02_NHD_navigate.Rmd b/workspace/02_NHD_navigate.Rmd
index 4c6dfb6..faed329 100644
--- a/workspace/02_NHD_navigate.Rmd
+++ b/workspace/02_NHD_navigate.Rmd
@@ -15,19 +15,17 @@ knitr::opts_chunk$set(error = TRUE)
 ```{r setup}
 #  Load data and libraries ----------------------
 
-ptm<-proc.time()
-
 library(nhdplusTools)
 library(dplyr)
 library(sf)
 library(hyRefactor)
 library(tidyr)
-#library(hyfabric)
+library(hyfabric)
 
 # Load custom functions
 source("R/utils.R")
 source("R/NHD_navigate.R")
-source("R/hyRefactor_config.R")
+source("R/hyrefactor_config.R")
 
 # Load user-defined data paths
 data_paths <- jsonlite::read_json(file.path("cache", "data_paths.json"))
@@ -35,26 +33,32 @@ data_paths <- jsonlite::read_json(file.path("cache", "data_paths.json"))
 nhdplus_path(data_paths$nhdplus_gdb)
 staged_nhd <- stage_national_data(nhdplus_data = data_paths$nhdplus_gdb,
                                   output_path  = data_paths$nhdplus_dir)
-
 ```
 
 ```{r huc12 POIs}
 #  Derive or load HUC12 POIs ----------------------
 # Still need to deal with some duplicate HUC12s
-if(needs_layer(nav_gpkg, temp_POIs) | needs_layer(nav_gpkg, nhdflowline)) {
-
-  # Subset NHD by VPU
-  nhd <- VPU_Subset(staged_nhd$flowline, VPU)
-
-  # Filter and write dendritic/non-coastal subset to gpkg
-  # This will be iterated over to produce the final network after POIs identified
-  non_dend <- unique(unlist(lapply(filter(nhd, TerminalFl == 1 & TotDASqKM < min_da_km)
-                                      %>% pull(COMID), NetworkNav, st_drop_geometry(nhd))))
+if(needs_layer(nav_gpkg, temp_POIs)) {
   
-  # Add fields to note dendritic and POI flowlines
-  nhd <- nhd %>% 
-    mutate(dend = ifelse(!COMID %in% non_dend, 1, 0),
-           poi = ifelse(!COMID %in% non_dend & TotDASqKM >= min_da_km, 1, 0))
+  if (needs_layer(nav_gpkg, nhdflowline)){
+    # Subset NHD by VPU
+    nhd <- VPU_Subset(staged_nhd$flowline, VPU) 
+    
+    # Filter and write dendritic/non-coastal subset to gpkg
+    # This will be iterated over to produce the final network after POIs identified
+    non_dend <- unique(unlist(lapply(filter(nhd, TerminalFl == 1 & TotDASqKM < min_da_km)
+                                     %>% pull(COMID), NetworkNav, st_drop_geometry(nhd))))
+      
+    # Add fields to note dendritic and POI flowlines
+    nhd <- nhd %>% 
+      mutate(dend = ifelse(!COMID %in% non_dend, 1, 0),
+             poi = ifelse(!COMID %in% non_dend & TotDASqKM >= min_da_km, 1, 0))
+      
+    write_sf(nhd, nav_gpkg, nhdflowline)
+  } else {
+     nhd <- read_sf(nav_gpkg, nhdflowline)
+     nhd <- select(nhd, -c(minNet, WB, struct_POI, struct_Net, POI_ID))
+  }
 
   # Join Dave's HUC12 outlets with NHD
   HUC12_COMIDs <- read_sf(data_paths$hu12_points_path, "hu_outlets") %>% 
@@ -69,9 +73,9 @@ if(needs_layer(nav_gpkg, temp_POIs) | needs_layer(nav_gpkg, nhdflowline)) {
   huc12_POIs <- POI_creation(st_drop_geometry(HUC12_COMIDs), filter(nhd, poi == 1), "HUC12")
 
   # Write out geopackage layer representing POIs for given theme
-  write_sf(nhd, nav_gpkg, nhdflowline)
   write_sf(huc12_POIs, nav_gpkg, temp_POIs)
   tmp_POIs <- huc12_POIs
+  
 } else {
   # Load HUC12 POIs as the tmpPOIs if they already exist
   tmp_POIs <- read_sf(nav_gpkg, temp_POIs) 
@@ -86,7 +90,7 @@ if(needs_layer(nav_gpkg, temp_POIs) | needs_layer(nav_gpkg, nhdflowline)) {
 if(all(is.na(tmp_POIs$Type_Gages))) { 
 
   # Previously identified streamgages within Gage_Selection.Rmd
-  streamgages <- read_sf("cache/Gage_info.gpkg", "Potential_Gages") %>%
+  streamgages <- read_sf("cache/Gages_info.gpkg", "Gages") %>%
     select(COMID, Gage_no) %>%
     filter(COMID %in% nhd$COMID) %>%
     st_drop_geometry() %>%
@@ -213,7 +217,7 @@ if(all(is.na(tmp_POIs$Type_WBOut))) {
     switchDiv(., nhd) %>%
     select(COMID, WBAREACOMI) 
 
-  wbin_COMIDs <- filter(nhd, WB == 1 & DnHydroseq %in% filter(nhd, WB==1)$Hydroseq) %>%
+  wbin_COMIDs <- filter(nhd, WB == 0, DnHydroseq %in% filter(nhd, WB == 1)$Hydroseq) %>%
     select(-WBAREACOMI) %>%
     switchDiv(., nhd) %>%
     inner_join(st_drop_geometry(filter(nhd, minNet == 1)) %>%
@@ -223,10 +227,10 @@ if(all(is.na(tmp_POIs$Type_WBOut))) {
     slice(n = 1)
 
   tmp_POIs <- POI_creation(filter(wbout_COMIDs, !COMID %in% wbin_COMIDs$COMID), filter(nhd, poi == 1), "WBOut") %>%
-    addType(., tmp_POIs, "WBOut", bind = FALSE)
+    addType(., tmp_POIs, "WBOut")
   
   tmp_POIs <- POI_creation(filter(wbin_COMIDs, !COMID %in% wbout_COMIDs$COMID), filter(nhd, poi == 1), "WBIn") %>%
-    addType(., tmp_POIs, "WBIn", bind = FALSE)
+    addType(., tmp_POIs, "WBIn")
 
   write_sf(nhd, nav_gpkg, nhdflowline)
   write_sf(tmp_POIs, nav_gpkg, temp_POIs)
@@ -280,11 +284,11 @@ if(needs_layer(nav_gpkg, n_segments)) {
 
   # Sort POIs by Levelpath and Hydrosequence in upstream to downstream order
   seg_POIs <-  filter(st_drop_geometry(nhd), COMID %in% tmp_POIs$COMID, COMID %in% filter(nhd, minNet == 1)$COMID) 
-  
-  # Attribute reaches that contribute locally to each POI
+  # derive incremental segments from POIs
   inc_segs <- segment_increment(filter(nhd, minNet == 1), seg_POIs) 
+  
   nhd_Final <- nhd %>%
-    left_join(select(st_drop_geometry(inc_segs), COMID, POI_ID), by = "COMID")
+    left_join(select(inc_segs, COMID, POI_ID), by = "COMID")
   
   # create and write out final dissolved segments
   nsegments_fin <- segment_creation(nhd_Final, xWalk)
@@ -326,7 +330,7 @@ if(needs_layer(pois_merge)) {
 
   # Write out geopackage layer representing POIs for given theme
   write_sf(out_HUC12$allPOIs, nav_gpkg, pois_merge)
-  write_sf(out_HUC12$FL, nav_gpkg, nhdflowline)
+  write_sf(nhd_Final, nav_gpkg, nhdflowline)
   write_sf(out_HUC12$segs, nav_gpkg, n_segments)
 } else {
   final_POIs <- read_sf(col_gpkg, pois_merge)
-- 
GitLab