From 2511baaa7668eb375532ffe27389b68f828147da Mon Sep 17 00:00:00 2001
From: Bock <abock@usgs.gov>
Date: Wed, 10 Apr 2024 16:30:44 -0600
Subject: [PATCH] Moved POI collapse out of navigate to a sourced function

---
 workspace/R/poi_move.R | 117 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 117 insertions(+)
 create mode 100644 workspace/R/poi_move.R

diff --git a/workspace/R/poi_move.R b/workspace/R/poi_move.R
new file mode 100644
index 0000000..3edcde7
--- /dev/null
+++ b/workspace/R/poi_move.R
@@ -0,0 +1,117 @@
+#  Load data
+if(collapse){
+  
+  # Move HUC12 to other POIs
+  moved_pois <- poi_move(final_POIs_prec, "Type_HUC12", poi_dar_move, 
+                         poi_distance_move) 
+  
+  if(!is.data.frame(moved_pois)){
+    final_POIs <- moved_pois$final_pois
+    moved_pois_table <- moved_pois$moved_points %>%
+      mutate(move_type = "huc12 to other")
+  } else {
+    final_POIs <- moved_POIs
+  }
+  
+  # Gages to confluences, terminals
+  moved_pois <- poi_move(final_POIs, "Type_Gages", poi_dar_move, 
+                         poi_distance_move, c("Type_Conf", "Type_Term"))
+  if(!is.data.frame(moved_pois)){
+    final_POIs <- moved_pois$final_pois
+    moved_pois_table <- moved_pois_table %>%
+      rbind(moved_pois$moved_points %>%
+              mutate(move_type = "gages to conf"))
+  } else {
+    final_POIs <- moved_POIs
+  }
+  
+  # Gages to waterbody inlets
+  moved_pois <- poi_move(final_POIs, "Type_Gages", poi_dar_move, 
+                         poi_distance_move, c("Type_WBIn", "Type_WBOut")) 
+  if(!is.data.frame(moved_pois)){
+    final_POIs <- moved_pois$final_pois
+    moved_pois_table <- moved_pois_table %>%
+      rbind(moved_pois$moved_points %>%
+              mutate(move_type = "gages to wbin"))
+  } else {
+    final_POIs <- moved_pois
+  }
+  
+  # Waterbody inlet to confluence
+  moved_pois <- poi_move(final_POIs, "Type_WBIn", poi_dar_move/2, 
+                         poi_distance_move*0.4, "Type_Conf")
+  if(!is.data.frame(moved_pois)){
+    final_POIs <- moved_pois$final_pois
+    moved_pois_table <- moved_pois_table %>%
+      rbind(moved_pois$moved_points %>%
+              mutate(move_type = "gages to term"))
+  } else {
+    final_POIs <- moved_pois
+  }
+  
+  # # Waterbody inlet to confluence
+  # moved_pois <- poi_move(final_POIs, "Type_WBOut", poi_dar_move/2, 
+  #                        poi_distance_move*0.4, "Type_WBIn")
+  # if(!is.data.frame(moved_pois)){
+  #   final_POIs <- moved_pois$final_pois
+  #   moved_pois_table <- moved_pois_table %>%
+  #     rbind(moved_pois$moved_points %>%
+  #             mutate(move_type = "gages to term"))
+  # } else {
+  #   final_POIs <- moved_pois
+  # }
+  
+  # Waterbody inlet to confluence
+  moved_pois <- poi_move(final_POIs, c("Type_WBIn", "Type_HUC12"), poi_dar_move/2, 
+                         poi_distance_move*0.4, "Type_Conf")
+  if(!is.data.frame(moved_pois)){
+    final_POIs <- moved_pois$final_pois
+    moved_pois_table <- moved_pois_table %>%
+      rbind(moved_pois$moved_points %>%
+              mutate(move_type = "gages to term"))
+  } else {
+    final_POIs <- moved_pois
+  }
+  
+  # NID to waterbody outlet
+  moved_pois <- poi_move(final_POIs, "Type_hilarri", poi_dar_move/2, 
+                         poi_distance_move * 0.4, c("Type_WBOut", "Type_TE"))
+  if(!is.data.frame(moved_pois)){
+    final_POIs <- moved_pois$final_pois
+    moved_pois_table <- moved_pois_table %>%
+      rbind(moved_pois$moved_points %>%
+              mutate(move_type = "nid to wb_out"))
+  } else {
+    final_POIs <- moved_pois
+  }
+  
+  # NID to waterbody outlet
+  moved_pois <- poi_move(final_POIs, "Type_DA", poi_dar_move, 
+                         poi_distance_move)
+  if(!is.data.frame(moved_pois)){
+    final_POIs <- moved_pois$final_pois
+    moved_pois_table <- moved_pois_table %>%
+      rbind(moved_pois$moved_points %>%
+              mutate(move_type = "nid to wb_out"))
+  } else {
+    final_POIs <- moved_pois
+  }
+  
+  if("Type_elev" %in% names(final_POIs)){
+    # NID to waterbody outlet
+    moved_pois <- poi_move(final_POIs, "Type_elev", poi_dar_move, 
+                           poi_distance_move)
+    if(!is.data.frame(moved_pois)){
+      final_POIs <- moved_pois$final_pois
+      moved_pois_table <- moved_pois_table %>%
+        rbind(moved_pois$moved_points %>%
+                mutate(move_type = "nid to wb_out"))
+    } else {
+      final_POIs <- moved_pois
+    }
+  }
+
+  
+  write_sf(final_POIs, nav_gpkg, pois_all_layer)
+  write_sf(moved_pois_table, temp_gpkg, "pois_collapsed")
+} 
\ No newline at end of file
-- 
GitLab