6  Landscape Covariates

Purpose: Derive landscape/basin-level covariates to use in gG framework.

6.1 Site info

Code
# site information and locations
siteinfo <- read_csv("C:/Users/jbaldock/OneDrive - DOI/Documents/USGS/EcoDrought/EcoDrought Working/Data/EcoDrought_SiteInformation.csv")
siteinfo_sp <- st_as_sf(siteinfo, coords = c("long", "lat"), crs = 4326)
mapview(siteinfo_sp, zcol = "designation")

6.2 Spatial data

6.2.1 Watersheds

Code
sheds_list <- list()
myfiles <- list.files(path = "C:/Users/jbaldock/OneDrive - DOI/Documents/USGS/EcoDrought/EcoDrought Working/EcoDrought-Analysis/Watershed Delineation/Watersheds/", pattern = ".shp")
for (i in 1:length(myfiles)) {
  sheds_list[[i]] <- vect(paste("C:/Users/jbaldock/OneDrive - DOI/Documents/USGS/EcoDrought/EcoDrought Working/EcoDrought-Analysis/Watershed Delineation/Watersheds/", myfiles[i], sep = ""))
}
sheds <- do.call(rbind, sheds_list) %>% left_join(siteinfo)
mapview(st_as_sf(sheds), alpha.regions = 0.2)

6.2.2 Flowlines

Code
streams_list <- list()
myfiles <- list.files(path = "C:/Users/jbaldock/OneDrive - DOI/Documents/USGS/EcoDrought/EcoDrought Working/EcoDrought-Analysis/Watershed Delineation/Streams/", pattern = ".shp")
sheds_basins <- sheds[sheds$site_id %in% c("NFF",      # Flathead
                                           "WBR",      # West Brook
                                           "DBF",      # Donner Blitzen
                                           "PI_10FL",  # Shen, Piney River
                                           "SR_10FL",  # Shen, Staunton River
                                           "PA_10FL",  # Shen, Paine Run
                                           "SRS",      # Shields River
                                           "DU01",     # Duck Creek
                                           "SP11"),]   # Spread Creek
myctr <- c(1,2,3,4,4,4,5,5,6)
for (i in 1:length(myctr)) {
  streams_list[[i]] <- crop(vect(paste("C:/Users/jbaldock/OneDrive - DOI/Documents/USGS/EcoDrought/EcoDrought Working/EcoDrought-Analysis/Watershed Delineation/Streams/", myfiles[myctr[i]], sep = "")), sheds_basins[i])
  crs(streams_list[[i]]) <- crs(sheds)
}
streams <- do.call(rbind, streams_list)
mapview(st_as_sf(streams)) + mapview(siteinfo_sp, zcol = "designation")

6.3 Define G-g clusters/sub-basins

Code
siteinfo2 <- siteinfo %>% 
  filter(!site_name %in% c("WoundedBuckCreek", "Brackett Creek", "South River Conway NWIS", 
                           "Shields River nr Livingston NWIS", "North Fork Flathead River NWIS", 
                           "Pacific Creek at Moran NWIS")) %>%
  mutate(designation = ifelse(site_name %in% c("Donner Blitzen River nr Frenchglen NWIS", 
                                               "BigCreekLower", "CoalCreekLower", "McGeeCreekLower", 
                                               "West Brook NWIS", "West Brook 0", 
                                               "Paine Run 10", "Staunton River 10", "Piney River 10", 
                                               "Shields River Valley Ranch", "Shields River ab Smith NWIS", 
                                               "EF Duck Creek be HF",
                                               "Spread Creek Dam"), "big", "little"))
siteinfo2 %>% arrange(region, basin, subbasin, designation) %>% kable()
site_id site_name lat long station_no designation basin region subbasin source area_sqmi elev_ft
BIG_001 BigCreekLower 48.60295 -114.18700 NA big Flathead Flat Big Creek ECOD 81.2083617 3428.6560
BIG_004 BigCreekMiddle 48.59770 -114.22500 NA little Flathead Flat Big Creek ECOD 73.5768438 3528.9551
BIG_005 BigCreekUpper 48.57493 -114.31700 NA little Flathead Flat Big Creek ECOD 53.1555778 3913.1550
BIG_006 HallowattCreekLower 48.57427 -114.31700 NA little Flathead Flat Big Creek ECOD 28.1074377 3916.4062
BIG_002 LangfordCreekLower 48.60369 -114.18700 NA little Flathead Flat Big Creek ECOD 3.9917383 3431.6910
BIG_003 LangfordCreekUpper 48.61350 -114.20200 NA little Flathead Flat Big Creek ECOD 2.8629722 3594.2884
BIG_008 NicolaCreek 48.55442 -114.37500 NA little Flathead Flat Big Creek ECOD 3.3459243 4958.1863
BIG_007 SkookoleelCreek 48.57092 -114.31200 NA little Flathead Flat Big Creek ECOD 8.5886199 3965.1819
BIG_009 WernerCreek 48.59324 -114.36800 NA little Flathead Flat Big Creek ECOD 3.9795282 4284.3249
HAL Hallowat Creek NWIS 48.61005 -114.38193 12355342 little Flathead Flat Big Creek NWIS 10.0317552 4453.6190
BIG Big Creek NWIS 48.59769 -114.22472 12355347 little Flathead Flat Big Creek NWIS 73.5899716 3528.2743
COA_001 CoalCreekLower 48.66182 -114.24200 NA big Flathead Flat Coal Creek ECOD 59.9694259 3658.9180
COA_009 CoalCreekHeadwaters 48.70570 -114.45500 NA little Flathead Flat Coal Creek ECOD 12.4254748 4595.6775
COA_006 CoalCreekMiddle 48.67442 -114.31700 NA little Flathead Flat Coal Creek ECOD 45.3748041 3874.4946
COA_003 CycloneCreekLower 48.66582 -114.24500 NA little Flathead Flat Coal Creek ECOD 12.6353670 3701.7687
COA_004 CycloneCreekMiddle 48.66871 -114.26700 NA little Flathead Flat Coal Creek ECOD 11.2380763 3853.7423
COA_005 CycloneCreekUpper 48.69030 -114.27600 NA little Flathead Flat Coal Creek ECOD 9.8960331 4039.1350
COA_002 MeadowCreek 48.65865 -114.23600 NA little Flathead Flat Coal Creek ECOD 5.7153134 3684.4886
COA_008 CoalCreekNorth 48.69130 -114.37600 NA little Flathead Flat Coal Creek ECOD 20.8457145 4154.4794
MCG_002 McGeeCreekLower 48.61789 -114.06700 NA big Flathead Flat McGee Creek ECOD 7.4164591 3711.2340
MCG_001 McGeeCreekTrib 48.62212 -114.07400 NA little Flathead Flat McGee Creek ECOD 1.2240208 3697.0725
MCG_003 McGeeCreekUpper 48.59827 -114.04000 NA little Flathead Flat McGee Creek ECOD 3.3382493 3866.2909
WM West Brook 0 42.41434 -72.62929 01171100 big West Brook Mass West Brook ECOD 11.3860459 154.5905
WBR West Brook NWIS 42.41437 -72.62876 01171100 big West Brook Mass West Brook NWIS 11.3929050 154.1473
AB Avery Brook 42.44981 -72.69402 01171000 little West Brook Mass West Brook ECOD 2.8322503 699.2518
JB Jimmy Brook 42.43485 -72.67102 01171040 little West Brook Mass West Brook ECOD 0.9743054 452.0916
MB Mitchell Brook 42.43355 -72.66819 01171080 little West Brook Mass West Brook ECOD 0.3514676 437.5512
OL Obear Brook Lower 42.43429 -72.67154 01171070 little West Brook Mass West Brook ECOD 0.5654137 465.1764
SD Sanderson Brook 42.43635 -72.68685 01171010 little West Brook Mass West Brook ECOD 1.7567871 640.4320
WL West Brook Lower 42.43187 -72.66423 01171090 little West Brook Mass West Brook ECOD 8.5098116 401.9724
WU West Brook Upper 42.43749 -72.67602 01171030 little West Brook Mass West Brook ECOD 6.3540403 516.3184
WR West Brook Reservoir 42.43738 -72.68166 01171020 little West Brook Mass West Brook ECOD 6.2101754 568.7790
WW West Whately Brook 42.45678 -72.68820 01171005 little West Brook Mass West Brook ECOD 0.4928159 686.2488
AVB Avery Brook NWIS 42.44991 -72.69355 01171000 little West Brook Mass West Brook NWIS 2.8334885 696.2354
DBF Donner Blitzen River nr Frenchglen NWIS 42.79083 -118.86750 10396000 big Donner Blitzen Oreg Donner Blitzen NWIS 204.9669881 4262.8244
DBI Donner Blitzen ab Indian NWIS 42.63743 -118.76077 423815118453900 little Donner Blitzen Oreg Donner Blitzen NWIS 60.6960528 5097.0236
IND Indian Creek NWIS 42.64180 -118.75899 423830118453200 little Donner Blitzen Oreg Donner Blitzen NWIS 19.0189031 5095.5474
LBL Little Blizten River NWIS 42.66755 -118.76015 424003118453700 little Donner Blitzen Oreg Donner Blitzen NWIS 18.5136726 5069.1385
DBB Donner Blitzen nr Burnt Car NWIS 42.72374 -118.83307 424325118495900 little Donner Blitzen Oreg Donner Blitzen NWIS 163.5486547 4514.4190
DBA Donner Blitzen ab Fish NWIS 42.76296 -118.84311 424547118503500 little Donner Blitzen Oreg Donner Blitzen NWIS 175.4902236 4340.9354
FSH Fish Creek NWIS 42.76407 -118.84232 424551118503200 little Donner Blitzen Oreg Donner Blitzen NWIS 22.2913828 4344.7481
PA_10FL Paine Run 10 38.19860 -78.79310 01627400 big Paine Run Shen Paine Run ECOD 4.8965855 1400.3952
PA_01FL Paine Run 01 38.20920 -78.75270 0162732260 little Paine Run Shen Paine Run ECOD 0.6700740 1840.9670
PA_02FL Paine Run 02 38.20730 -78.75700 0162732518 little Paine Run Shen Paine Run ECOD 0.9912138 1770.2417
PA_03FL Paine Run 03 38.20520 -78.76120 0162732782 little Paine Run Shen Paine Run ECOD 1.2384319 1708.7624
PA_04FL Paine Run 04 38.20030 -78.76560 0162733238 little Paine Run Shen Paine Run ECOD 1.5651468 1634.2663
PA_05FL Paine Run 05 38.19710 -78.76870 0162734220 little Paine Run Shen Paine Run ECOD 2.3149357 1587.6120
PA_06FL Paine Run 06 38.19740 -78.77370 01627352 little Paine Run Shen Paine Run ECOD 2.8534416 1552.5478
PA_07FL Paine Run 07 38.19560 -78.77800 01627358 little Paine Run Shen Paine Run ECOD 3.0594680 1520.2334
PA_08FL Paine Run 08 38.19420 -78.78370 0162737249 little Paine Run Shen Paine Run ECOD 3.5932435 1474.8519
PA_09FL Paine Run 09 38.19650 -78.78860 01627380 little Paine Run Shen Paine Run ECOD 4.0467174 1433.8870
PI_10FL Piney River 10 38.70130 -78.26740 0166236713 big Piney River Shen Piney River ECOD 4.8079952 1183.1180
PI_01FL Piney River 01 38.74550 -78.28180 0166235777 little Piney River Shen Piney River ECOD 0.5466476 2501.9557
PI_02FL Piney River 02 38.74250 -78.28550 0166235998 little Piney River Shen Piney River ECOD 1.1006113 2369.7393
PI_03FL Piney River 03 38.73840 -78.28930 0166236114 little Piney River Shen Piney River ECOD 1.4355099 2162.4096
PI_04FL Piney River 04 38.73410 -78.29160 0166236168 little Piney River Shen Piney River ECOD 1.8095900 2024.9685
PI_05FL Piney River 05 38.72800 -78.29160 0166236224 little Piney River Shen Piney River ECOD 2.3054298 1874.3122
PI_06FL Piney River 06 38.72570 -78.28360 0166236285 little Piney River Shen Piney River ECOD 2.6988937 1603.3088
PI_08FL Piney River 08 38.71190 -78.27720 0166236472 little Piney River Shen Piney River ECOD 3.6105641 1354.6080
PI_09FL Piney River 09 38.70450 -78.27040 0166236559 little Piney River Shen Piney River ECOD 4.2830953 1238.9199
SR_10FL Staunton River 10 38.44450 -78.37070 0166526910 big Staunton River Shen Staunton River ECOD 4.1061151 996.5581
SR_01FL Staunton River 01 38.46700 -78.41770 0166526050 little Staunton River Shen Staunton River ECOD 0.4772281 2940.0147
SR_02FL Staunton River 02 38.46300 -78.41010 0166526110 little Staunton River Shen Staunton River ECOD 0.8271327 2487.8920
SR_03FL Staunton River 03 38.45940 -78.40360 0166526165 little Staunton River Shen Staunton River ECOD 1.2444908 2199.2577
SR_04FL Staunton River 04 38.45840 -78.39950 0166526303 little Staunton River Shen Staunton River ECOD 1.9000379 2053.1192
SR_05FL Staunton River 05 38.45920 -78.38720 0166526399 little Staunton River Shen Staunton River ECOD 2.4754040 1710.9466
SR_06FL Staunton River 06 38.45650 -78.38090 0166526453 little Staunton River Shen Staunton River ECOD 2.8062837 1524.8785
SR_07FL Staunton River 07 38.45350 -78.37900 0166526484 little Staunton River Shen Staunton River ECOD 2.9037810 1432.0669
SR_08FL Staunton River 08 38.44870 -78.37820 0166526535 little Staunton River Shen Staunton River ECOD 3.1630527 1265.5245
SR_09FL Staunton River 09 38.44640 -78.37590 0166526567 little Staunton River Shen Staunton River ECOD 3.2551121 1154.3350
DU01 EF Duck Creek be HF 45.87142 -110.24438 NA big Duck Creek Shields Duck Creek ECOD 9.4495375 5342.4715
DU02 EF Duck Creek ab HF 45.87570 -110.24775 NA little Duck Creek Shields Duck Creek ECOD 5.4605992 5429.5483
DU03 Henrys Fork 45.90132 -110.24998 NA little Duck Creek Shields Duck Creek ECOD 1.6960835 5926.9079
SH07 Shields River Valley Ranch 46.16716 -110.55429 NA big Shields River Shields Shields River ECOD 53.4215153 5744.1457
SRS Shields River ab Smith NWIS 46.16716 -110.55429 06192980 big Shields River Shields Shields River NWIS 53.4215153 5744.1457
SH02 Buck Creek 46.18374 -110.38463 NA little Shields River Shields Shields River ECOD 4.4298623 6493.8012
SH03 Crandall Creek 46.18454 -110.40734 NA little Shields River Shields Shields River ECOD 2.5338355 6361.7450
SH04 Deep Creek 46.17037 -110.45686 NA little Shields River Shields Shields River ECOD 6.1986519 6142.5211
SH05 Dugout Creek 46.18431 -110.37980 NA little Shields River Shields Shields River ECOD 2.3945376 6496.1053
SH06 Lodgepole Creek 46.18146 -110.35920 NA little Shields River Shields Shields River ECOD 1.3590115 6610.3856
SH08 Shields River ab Dugout 46.18407 -110.37945 NA little Shields River Shields Shields River ECOD 8.6790373 6497.0348
DUG Dugout Creek NWIS 46.18481 -110.37964 06192900 little Shields River Shields Shields River NWIS 2.3849317 6505.1692
SP11 Spread Creek Dam 43.77230 -110.48040 NA big Snake River Snake Snake River ECOD 97.4926478 7130.2353
SP01 Grizzly Creek 43.77399 -110.23554 NA little Snake River Snake Snake River ECOD 12.6823126 8339.7503
SP02 Grouse Creek 43.74895 -110.31903 NA little Snake River Snake Snake River ECOD 5.1508608 7869.5257
SP03 Leidy Creek Lower 43.73347 -110.31434 NA little Snake River Snake Snake River ECOD 5.1718308 7958.3398
SP04 Leidy Creek Upper 43.72041 -110.37030 NA little Snake River Snake Snake River ECOD 2.1816563 8706.8560
SP05 Leidy Creek Mouth 43.73165 -110.31526 NA little Snake River Snake Snake River ECOD 5.1585521 7979.3625
SP06 NF Spread Creek Lower 43.76467 -110.32339 NA little Snake River Snake Snake River ECOD 27.9304796 7788.5460
SP07 NF Spread Creek Upper 43.77413 -110.23535 NA little Snake River Snake Snake River ECOD 3.6804425 8340.2053
SP08 Rock Creek 43.76640 -110.44859 NA little Snake River Snake Snake River ECOD 4.7413085 7285.9575
SP09 SF Spread Creek Lower 43.76430 -110.32384 NA little Snake River Snake Snake River ECOD 44.2556218 7785.6007
SP10 SF Spread Creek Upper 43.73664 -110.31387 NA little Snake River Snake Snake River ECOD 35.0605919 7937.8850
LEI Leidy Creek Mouth NWIS 43.73311 -110.31456 13012465 little Snake River Snake Snake River NWIS 5.1689622 7960.3743
SFS SF Spread Creek Lower NWIS 43.76348 -110.32379 13012475 little Snake River Snake Snake River NWIS 44.2420544 7789.9333

6.4 Basin overlap

Calculate area and proportional overlap between big and little g basin pairs. Proportional overlap is generally entirely correlated with absolute and relative difference in basin size (the exception being the few sites that are not nested within a Big G basin: Coal Creek and McGee Creek sites).

Code
mysubbasins <- unique(siteinfo2$subbasin)
tib_list1 <- list()
tib_list2 <- list()
tib_list3 <- list()

for (i in 1:length(mysubbasins)) {
  sites_big <- siteinfo2 %>% filter(subbasin == mysubbasins[i], designation == "big")
  sites_little <- siteinfo2 %>% filter(subbasin == mysubbasins[i], designation == "little")
  for (j in 1:length(unique(sites_big$site_name))) {
    basin_big <- sheds[sheds$site_name == unique(sites_big$site_name)[j]]
    for (k in 1:length(unique(sites_little$site_name))) {
      basin_little <- sheds[sheds$site_name == unique(sites_little$site_name)[k]]
      intersection <- expanse(intersect(basin_big, basin_little), unit = "km")
      shared_area_km2 <- ifelse(length(intersection) == 0, 0, intersection)
      shared_area_prop <- shared_area_km2 / expanse(basin_big, unit = "km")
      tib_list3[[k]] <- tibble(subbasin = mysubbasins[i],
                               site_name_big = unique(sites_big$site_name)[j], 
                               site_name_little = unique(sites_little$site_name)[k],
                               shared_area_km2 = shared_area_km2, shared_area_prop = shared_area_prop)
    }
    tib_list2[[j]] <- do.call(rbind, tib_list3)
    tib_list3 <- list()
  }
  tib_list1[[i]] <- do.call(rbind, tib_list2)
  tib_list2 <- list()
}
overlap_tib <- do.call(rbind, tib_list1)
head(overlap_tib)
# A tibble: 6 × 5
  subbasin   site_name_big site_name_little  shared_area_km2 shared_area_prop
  <chr>      <chr>         <chr>                       <dbl>            <dbl>
1 West Brook West Brook 0  Avery Brook                 7.35            0.249 
2 West Brook West Brook 0  Jimmy Brook                 2.53            0.0856
3 West Brook West Brook 0  Mitchell Brook              0.912           0.0309
4 West Brook West Brook 0  Obear Brook Lower           1.47            0.0497
5 West Brook West Brook 0  Sanderson Brook             4.56            0.154 
6 West Brook West Brook 0  West Brook Lower           22.1             0.747 

6.5 Basin size and elevation

Calculate absolute and relative difference in basin size and elevation between big and little g pairs.

Code
sites_big <- siteinfo2 %>% filter(designation == "big") %>% select(subbasin, site_name, area_sqmi, elev_ft) %>% rename(site_name_big = site_name, area_sqmi_big = area_sqmi, elev_ft_big = elev_ft)
sites_little <- siteinfo2 %>% filter(designation == "little") %>% select(subbasin, site_name, area_sqmi, elev_ft) %>% rename(site_name_little = site_name, area_sqmi_little = area_sqmi, elev_ft_little = elev_ft)
areaelev_tib <- sites_little %>% left_join(sites_big) %>% 
  mutate(area_sqmi_diff = (area_sqmi_little - area_sqmi_big),
         area_sqmi_reldiff = (area_sqmi_little - area_sqmi_big) / area_sqmi_little,
         elev_ft_diff = (elev_ft_little - elev_ft_big),
         elev_ft_reldiff = (elev_ft_little - elev_ft_big) / elev_ft_little) %>% 
  select(subbasin, site_name_big, site_name_little, 
         area_sqmi_big, area_sqmi_little, elev_ft_big, elev_ft_little,
         area_sqmi_diff, area_sqmi_reldiff, elev_ft_diff, elev_ft_reldiff)
dim(areaelev_tib)
[1] 99 11
Code
head(areaelev_tib)
# A tibble: 6 × 11
  subbasin   site_name_big   site_name_little area_sqmi_big area_sqmi_little
  <chr>      <chr>           <chr>                    <dbl>            <dbl>
1 West Brook West Brook 0    Avery Brook               11.4            2.83 
2 West Brook West Brook NWIS Avery Brook               11.4            2.83 
3 West Brook West Brook 0    Jimmy Brook               11.4            0.974
4 West Brook West Brook NWIS Jimmy Brook               11.4            0.974
5 West Brook West Brook 0    Mitchell Brook            11.4            0.351
6 West Brook West Brook NWIS Mitchell Brook            11.4            0.351
# ℹ 6 more variables: elev_ft_big <dbl>, elev_ft_little <dbl>,
#   area_sqmi_diff <dbl>, area_sqmi_reldiff <dbl>, elev_ft_diff <dbl>,
#   elev_ft_reldiff <dbl>

6.6 River distance

Get subbasins

Code
mysubbasins <- unique(siteinfo2$subbasin)
mysubbasins
 [1] "West Brook"     "Paine Run"      "Piney River"    "Staunton River"
 [5] "Big Creek"      "Coal Creek"     "McGee Creek"    "Duck Creek"    
 [9] "Shields River"  "Snake River"    "Donner Blitzen"

Convert flowline objects

Code
nfflat <- line2network(sf = st_transform(st_as_sf(streams_list[[1]]), "+proj=utm +zone=11 +ellps=GRS80 +datum=NAD83"))

 Units: metre 

 Removed 36 segments with lengths shorter than the connectivity tolerance. 
Code
wesbro <- line2network(sf = st_transform(st_as_sf(streams_list[[2]]), "+proj=utm +zone=18 +ellps=GRS80 +datum=NAD83"))

 Units: metre 

 Removed 2 segments with lengths shorter than the connectivity tolerance. 
Code
donblit <- line2network(sf = st_transform(st_as_sf(streams_list[[3]]), "+proj=utm +zone=11 +ellps=GRS80 +datum=NAD83"))

 Units: metre 

 Removed 4 segments with lengths shorter than the connectivity tolerance. 
Code
paine <- line2network(sf = st_transform(st_as_sf(streams_list[[4]]), "+proj=utm +zone=17 +ellps=GRS80 +datum=NAD83"))

 Units: metre 

 Removed 1 segments with lengths shorter than the connectivity tolerance. 
Code
piney <- line2network(sf = st_transform(st_as_sf(streams_list[[5]]), "+proj=utm +zone=17 +ellps=GRS80 +datum=NAD83"))

 Units: metre 

 Removed 1 segments with lengths shorter than the connectivity tolerance. 
Code
staunt <- line2network(sf = st_transform(st_as_sf(streams_list[[6]]), "+proj=utm +zone=17 +ellps=GRS80 +datum=NAD83"))

 Units: metre 
Code
duck <- line2network(sf = st_transform(st_as_sf(streams_list[[7]]), "+proj=utm +zone=12 +ellps=GRS80 +datum=NAD83"))

 Units: metre 
Code
shield <- line2network(sf = st_transform(st_as_sf(streams_list[[8]]), "+proj=utm +zone=12 +ellps=GRS80 +datum=NAD83"))

 Units: metre 

 Removed 2 segments with lengths shorter than the connectivity tolerance. 
Code
spread <- line2network(sf = st_transform(st_as_sf(streams_list[[9]]), "+proj=utm +zone=12 +ellps=GRS80 +datum=NAD83"))

 Units: metre 

 Removed 4 segments with lengths shorter than the connectivity tolerance. 
Code
flow_list <- list(wesbro, paine, piney, staunt, nfflat, nfflat, nfflat, duck, shield, spread, donblit)

Calulate river distance between big and little g pairs in loop

Code
tib_list1 <- list()
tib_list2 <- list()
tib_list3 <- list()

utmzones <- c(18, 17, 17, 17, 11, 11, 11, 12, 12, 12, 11)

for (k in 1:length(mysubbasins)) {
  # select sites
  sites_big <- st_transform(st_as_sf(siteinfo2, coords = c("long", "lat"), crs = 4326) %>% filter(subbasin == mysubbasins[k], designation == "big"), paste("+proj=utm +zone=", utmzones[k], " +ellps=GRS80 +datum=NAD83", sep = ""))
  sites_little <- st_transform(st_as_sf(siteinfo2, coords = c("long", "lat"), crs = 4326) %>% filter(subbasin == mysubbasins[k], designation == "little"), paste("+proj=utm +zone=", utmzones[k], " +ellps=GRS80 +datum=NAD83", sep = ""))
  # convert sites
  sites_big_riv <- xy2segvert(x = st_coordinates(sites_big)[,1], y = st_coordinates(sites_big)[,2], rivers = flow_list[[k]])
  sites_little_riv <- xy2segvert(x = st_coordinates(sites_little)[,1], y = st_coordinates(sites_little)[,2], rivers = flow_list[[k]])
  # compute river distance in loop
  for (i in 1:dim(sites_big)[1]) {
    for (j in 1:dim(sites_little)[1]) {
      tib_list3[[j]] <- tibble(site_name_big = sites_big$site_name[i],
                               site_name_little = sites_little$site_name[j],
                               riverdist_km = riverdistance(startseg = sites_big_riv$seg[i], startvert = sites_big_riv$vert[i],
                                                            endseg = sites_little_riv$seg[j], endvert = sites_little_riv$vert[j], 
                                                            rivers = flow_list[[k]]) / 1000)
      }
    tib_list2[[i]] <- do.call(rbind, tib_list3)
    tib_list3 <- list()
  }
  tib_list1[[k]] <- do.call(rbind, tib_list2)
  tib_list2 <- list()
}
rivdist_tib <- do.call(rbind, tib_list1)
head(rivdist_tib)
# A tibble: 6 × 3
  site_name_big site_name_little  riverdist_km
  <chr>         <chr>                    <dbl>
1 West Brook 0  Avery Brook               9.35
2 West Brook 0  Jimmy Brook               5.52
3 West Brook 0  Mitchell Brook            5.22
4 West Brook 0  Obear Brook Lower         5.58
5 West Brook 0  Sanderson Brook           7.38
6 West Brook 0  West Brook Lower          4.77

6.7 Landcover

Load 2020 NLCD raster files for each region

Code
nlcd_list <- list()
nlcd_files <- list.files("C:/Users/jbaldock/OneDrive - DOI/Documents/USGS/EcoDrought/EcoDrought Working/Data/Spatial data/NLCD/NLCD_2020")
for (i in 1:length(nlcd_files)) {
  nlcd_list[[i]] <- rast(paste("C:/Users/jbaldock/OneDrive - DOI/Documents/USGS/EcoDrought/EcoDrought Working/Data/Spatial data/NLCD/NLCD_2020/", nlcd_files[i], sep = ""))
}
nlcd <- do.call(merge, nlcd_list)

|---------|---------|---------|---------|
=========================
                                          
Code
names(nlcd) <- c("lccode")

Reproject watershed polygons to match NLCD (Albers equal area) and trim to focal big g little g sites.

Code
sheds_aea <- project(sheds, nlcd)

View NLCD rasters for each big G

Code
mysites <- c("West Brook NWIS", "Paine Run 10", "Piney River 10", "Staunton River 10", "BigCreekLower", "CoalCreekLower", "McGeeCreekLower", "EF Duck Creek be HF", "Shields River ab Smith NWIS", "Spread Creek Dam", "Donner Blitzen River nr Frenchglen NWIS")
nlcd_big_list <- list()
for (i in 1:length(mysites)) { nlcd_big_list[[i]] <- crop(nlcd, sheds_aea %>% filter(site_name == mysites[i]), mask = TRUE) }

Calculate proportional cover by each landcover class for each watershed.

Code
mysites <- siteinfo2$site_name
tiblist <- list()
for (i in 1:length(mysites)) {
  bclc <- crop(nlcd, sheds_aea %>% filter(site_name == mysites[i]), mask = TRUE)
  #plot(bclc, main = mysites[i])
  bclc_tab <- table(values(bclc)[!is.na(values(bclc))]) / sum(!is.na(values(bclc)))
  names(bclc_tab) <- paste("nlcd_", names(bclc_tab), sep = "")
  tiblist[[i]] <- tibble(as.data.frame(bclc_tab)) %>% 
    rename(class = Var1, prop_cover = Freq) %>% 
    mutate(site_name = mysites[i]) %>% 
    select(site_name, class, prop_cover)
}
nlcd_cover <- do.call(rbind, tiblist)

Join big G proportional dominant cover to little g’s by subbasin and calculate difference.

Code
nlcd_cover <- nlcd_cover %>% left_join(siteinfo2 %>% select(site_name, subbasin, designation))
nlcd_cover_big <- nlcd_cover %>% filter(designation == "big") %>% group_by(subbasin, site_name) %>% filter(prop_cover == max(prop_cover)) %>% rename(site_name_big = site_name, prop_cover_big = prop_cover) %>% select(-designation)

nlcd_cover_join <- nlcd_cover %>% filter(designation == "little") %>% rename(site_name_little = site_name, prop_cover_little = prop_cover) %>% select(-designation) %>% left_join(nlcd_cover_big) %>% filter(!is.na(site_name_big)) %>% mutate(prop_cover_diff = prop_cover_little - prop_cover_big)

head(nlcd_cover_join)
# A tibble: 6 × 7
  site_name_little class prop_cover_little subbasin site_name_big prop_cover_big
  <chr>            <fct>             <dbl> <chr>    <chr>                  <dbl>
1 Avery Brook      nlcd…             0.562 West Br… West Brook 0           0.519
2 Avery Brook      nlcd…             0.562 West Br… West Brook N…          0.519
3 Jimmy Brook      nlcd…             0.495 West Br… West Brook 0           0.519
4 Jimmy Brook      nlcd…             0.495 West Br… West Brook N…          0.519
5 Mitchell Brook   nlcd…             0.710 West Br… West Brook 0           0.519
6 Mitchell Brook   nlcd…             0.710 West Br… West Brook N…          0.519
# ℹ 1 more variable: prop_cover_diff <dbl>

6.8 Join covariate data

Join covariate data

Code
covariates <- overlap_tib %>% left_join(areaelev_tib) %>% left_join(rivdist_tib) %>% left_join(nlcd_cover_join)
covariates
# A tibble: 99 × 18
   subbasin   site_name_big site_name_little    shared_area_km2 shared_area_prop
   <chr>      <chr>         <chr>                         <dbl>            <dbl>
 1 West Brook West Brook 0  Avery Brook                   7.35            0.249 
 2 West Brook West Brook 0  Jimmy Brook                   2.53            0.0856
 3 West Brook West Brook 0  Mitchell Brook                0.912           0.0309
 4 West Brook West Brook 0  Obear Brook Lower             1.47            0.0497
 5 West Brook West Brook 0  Sanderson Brook               4.56            0.154 
 6 West Brook West Brook 0  West Brook Lower             22.1             0.747 
 7 West Brook West Brook 0  West Brook Upper             16.5             0.558 
 8 West Brook West Brook 0  West Brook Reservo…          16.1             0.545 
 9 West Brook West Brook 0  West Whately Brook            1.28            0.0433
10 West Brook West Brook 0  Avery Brook NWIS              7.35            0.249 
# ℹ 89 more rows
# ℹ 13 more variables: area_sqmi_big <dbl>, area_sqmi_little <dbl>,
#   elev_ft_big <dbl>, elev_ft_little <dbl>, area_sqmi_diff <dbl>,
#   area_sqmi_reldiff <dbl>, elev_ft_diff <dbl>, elev_ft_reldiff <dbl>,
#   riverdist_km <dbl>, class <fct>, prop_cover_little <dbl>,
#   prop_cover_big <dbl>, prop_cover_diff <dbl>

View pairs plot

Code
ggpairs(covariates %>% select(shared_area_prop, area_sqmi_reldiff, elev_ft_reldiff, riverdist_km, prop_cover_diff))

Write data file

Code
write_csv(covariates, "C:/Users/jbaldock/OneDrive - DOI/Documents/USGS/EcoDrought/EcoDrought Working/EcoDrought-Analysis/Covariates/EcoDrought_LandscapeCovariates.csv")