Read data from yearly files, concatenate

Files came from John. These only have SLC WFO data. Larger area data is down below.

# read files
ffReports2021 <- read.csv("MonsoonData_fromJohn/2021_flashFloods_storm_reports.csv")
ffReports2022 <- read.csv("MonsoonData_fromJohn/2022_flashFloods_storm_reports.csv")
ffReports2023 <- read.csv("MonsoonData_fromJohn/2023_flashFloods_storm_reports.csv")

# cat into one data frame, remove other data frames
ffReports_allData <- rbind(ffReports2021, ffReports2022, ffReports2023)
rm(ffReports2021, ffReports2022, ffReports2023)

get most relevant data columns, drop rest.

good_colNames <- c("EVENT_ID", "BEGIN_DATE", "BEGIN_TIME", "BEGIN_LAT", "BEGIN_LON", 
                   "DAMAGE_PROPERTY_NUM", "INJURIES_INDIRECT", "DAMAGE_CROPS_NUM",
                   "DEATHS_INDIRECT", "END_DATE", "END_TIME", "END_LAT", "END_LON")

ffReports <- select(ffReports_allData, good_colNames)
## Warning: Using an external vector in selections was deprecated in tidyselect 1.1.0.
## ℹ Please use `all_of()` or `any_of()` instead.
##   # Was:
##   data %>% select(good_colNames)
## 
##   # Now:
##   data %>% select(all_of(good_colNames))
## 
## See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

convert data frame to spatial data shapefile. CRS? assume WGS 84 (4326)

ffReports_sf <- st_as_sf(ffReports, coords = c("END_LON", "END_LAT"))
st_crs(ffReports_sf) <- 4326

create basemap

basemap <- leaflet() %>%
  addTiles() %>%
  setView(lng = -111.6021, lat = 37.76703, zoom = 7)

basemap

Add flood end point data

ffObs <- basemap %>%
  addMarkers(data = ffReports_sf,
             label = paste(
               "Event ID: ", ffReports_sf$EVENT_ID, "<br>",
               "Begin Date: ", ffReports_sf$BEGIN_DATE, "<br>",
               "End Date: ", ffReports_sf$END_DATE, "<br>",
               "Property Damage: ", ffReports_sf$DAMAGE_PROPERTY_NUM, "<br>",
               "Crop Damage: ", ffReports_sf$DAMAGE_CROPS_NUM, "<br>",
               "Injuries: ", ffReports_sf$INJURIES_INDIRECT, "<br>",
               "Death: ", ffReports_sf$DEATHS_INDIRECT, "<br>",
               "Event Timespan: ", ffReports_sf$END_TIME - ffReports_sf$BEGIN_TIME, "<br>"
               ) %>% lapply(htmltools::HTML)
  )

ffObs

Write leaflet map

saveWidget(ffObs,
           file = "MonsoonData_fromJohn/FlashFloodReports.html",
           selfcontained = T)

write shapefile of flood observations

#st_write(ffReports_sf, "MonsoonData_fromJohn/FFpoints21_23.shp",
#         append)

Read larger area storm reports

# read file
flashfloods21_24 <- readxl::read_xlsx(path = "MonsoonData_fromJohn/FlashFloodReports_files/flashfloods_202101012015_202410011916_all.xlsx")

# format utc date
flashfloods21_24$ReportTime_UTC = strftime(flashfloods21_24$ReportTime_UTC,
                                          format = "%Y/%m/%d %H:%M",
                                          tz = "UTC", usetz = T)

Convert lat long to points, make to shapefile then display on map

ffReports_all_sf <- st_as_sf(flashfloods21_24, coords = c("Lon", "Lat"))
st_crs(ffReports_all_sf) <- 4326

#convert date back to characters
ffReports_all_sf$ReportTime_UTC <- strftime(ffReports_all_sf$ReportTime_UTC)

# create leaflet map
ffObs_all <- leaflet(ffReports_all_sf) %>%
  addTiles() %>%
#  addTitle("Flash Flood Reports for Western US States, 2021-2024 Monsoon Months") %>%
  setView(lng = -111.6021, lat = 37.76703, zoom = 5) %>%
  addCircleMarkers(radius = 5,
                   stroke = F,
                   fillOpacity = 0.7,
                   popup = paste(
                     "Report Date (UTZ): ", 
                        ffReports_all_sf$ReportTime_UTC,"<br>",
                     "Location: ", ffReports_all_sf$Location, ", ",
                        ffReports_all_sf$County, ", ",
                        ffReports_all_sf$ST, "<br>",
                     "Source: ", ffReports_all_sf$Source, "<br>"
                     ) %>% lapply(htmltools::HTML)
  )

ffObs_all

load AOI for Southern Utah and surrounding areas in CO, AZ, NM

crop flood reports to only this area

aoi <- read_sf("Shapefiles/SoUT_AOI/SoUT_AOI.shp")

aoi <- st_transform(aoi, crs = 4326)

aoi_floods_sf <- st_intersection(ffReports_all_sf, aoi)
## Warning: attribute variables are assumed to be spatially constant throughout
## all geometries

map floods in aoi

# create leaflet map
ffObs_aoi <- leaflet(aoi_floods_sf) %>%
  addTiles() %>%
#  addTitle("Flash Flood Reports for Western US States, 2021-2024 Monsoon Months") %>%
  setView(lng = -111.6021, lat = 37.76703, zoom = 5) %>%
  addCircleMarkers(radius = 5,
                   stroke = F,
                   fillOpacity = 0.7,
                   label = paste(
                     "Report Date (UTZ): ", 
                        aoi_floods_sf$ReportTime_UTC,"<br>",
                     "Location: ", aoi_floods_sf$Location, ", ",
                        aoi_floods_sf$County, " County , ", 
                        aoi_floods_sf$ST, "<br>",
                     "Source: ", aoi_floods_sf$Source, "<br>"
                     ) %>% lapply(htmltools::HTML)
  )

ffObs_aoi