# LNRS decision-making - Luke Bentley

require(terra)
require(sf)
require(dplyr)
require(ecoservR)
require(rmapshaper)
library(combinat)
require(gtools)

# There will be tiebreakers everywhere. Where multiple habs are available, first option will be based on a tiebreaker,
# second option will also be based on a tiebreaker, and in some instances the two habitats recommended could be
# done as a mosaic. No more than two habitats. Need to give options to stakeholders. Tiebreakers may be based on a species
# there that requires habitat, or expert layer suggesting habitat is necessary, or multiple benefits or BNG distinctiveness.

# The order is important of the decisions. The first decision condition which matches for a particular pixel will be selected, so
# the most important decisions/habitats need to come first.

# The script will produce two outputs (selection one and selection two). These could be used individually, but in most cases where there
# are different habitats for the two selections, a mosaic could be created. The polygons would just need to be overlayed to see
# which habitats are the best and where they are.

# Load Local authorities to run model
LA <- st_read('C://Users/nsplben1/OneDrive - Liverpool John Moores University/LJMU_ecoservR_projects/LCR_opportunityLB/Generalisation to select important areas/data/LCR_LA.gpkg')

# Load constrained expert layers
#species_files <- list.files('decision-making/correct_constrained_expert_layers/', pattern = '.gpkg$', full.names = T)
#for (i in species_files){
#   indiv_file <- st_read(i) %>% st_geometry() %>% st_as_sf()
#   message(i)
#   name <- stringr::str_sub(basename(i), 1, -6)
#   name <- stringr::str_replace_all(name, " ", "_")
#   message(name)
#   assign(name, indiv_file)
#}

# Load basemap to aid in decision-making
#mm <- readRDS('data/Habitat_Map/Tom - basemap files/Integrated_basemap.RDS')
# Farm habitat to aid in DM
#mm_farm <- mm %>% dplyr::filter(HABCODE == 'c1') %>% st_geometry() %>% st_as_sf()
#st_geometry(mm_farm) <- 'x'

# Load flood mitigation and water quality opps to also aid in decision-making
#flood_mitig_opps <- rast('data/ecosystem_services/opportunities/flood_mitigation.tif') %>% as.polygons() %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% checkgeometry('POLYGON') %>% st_set_crs(27700)
#st_geometry(flood_mitig_opps) <- 'x'
#water_quality_opps <- rast('data/ecosystem_services/opportunities/water_quality.tif') %>% as.polygons() %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>%  checkgeometry('POLYGON') %>% st_set_crs(27700)
#st_geometry(water_quality_opps) <- 'x'
## Expert layers list
#expert_layers <- list(flood_mitig_opps, water_quality_opps, mm_farm, Buglife_Blines_LC, clippedAncient_Woodland_100m, clippedbats_100, clippedblack_poplar_100,
#                      clippedBrownfield_100m, clippedClay_Cliffs_100m, clippedCoastal_100m, clippedEstuary_100m,
#                      clippedFarmland_100m, clippedgrey_seal_100, clippedground_nesting_birds_100m, clippedharbour_porpoise_100,
#                      clippedhedgehog_100, clippedhedgerow_100m, clippednatterjack_100, clippedred_squirrel_100,
#                      clippedriver_brooks_streams_100m, clippedurban_100m, clippedwetland_100m, clippedwillow_tit_100,
#                      clippedwoodland_100m, coastal_cba_desigs, EA_FloodMapForPlanningRiversAndSeaFloodZone2, ewco_biodiversity_priority_habitat_network,
#                      farm_adjacent_water, grassland_1km, grassland_cba_desigs, heathland_cba_desigs,
#                      hedge_opps, mosaic_cba_desigs, Peat_soils_NatMa, Risk_of_Flooding_from_Rivers_and_Se,
#                      Sandy_soils_NatMa, wetland_cba_desigs, woodland_cba_desigs,
#                      WWNP_Runoff_Attenuation_Features_3_3_percent_AE)

#expert_layer_names <- c('flood_mitig_opps', 'water_quality_opps', 'mm_farm', 'Buglife_Blines_LC', 'clippedAncient_Woodland_100m', 'clippedbats_100', 'clippedblack_poplar_100',
#                        'clippedBrownfield_100m', 'clippedClay_Cliffs_100m', 'clippedCoastal_100m', 'clippedEstuary_100m',
#                        'clippedFarmland_100m', 'clippedgrey_seal_100', 'clippedground_nesting_birds_100m', 'clippedharbour_porpoise_100',
#                        'clippedhedgehog_100', 'clippedhedgerow_100m', 'clippednatterjack_100', 'clippedred_squirrel_100',
#                        'clippedriver_brooks_streams_100m', 'clippedurban_100m', 'clippedwetland_100m', 'clippedwillow_tit_100',
#                        'clippedwoodland_100m', 'coastal_cba_desigs', 'EA_FloodMapForPlanningRiversAndSeaFloodZone2', 'ewco_biodiversity_priority_habitat_network',
#                        'farm_adjacent_water', 'grassland_1km', 'grassland_cba_desigs', 'heathland_cba_desigs',
#                        'hedge_opps', 'mosaic_cba_desigs', 'Peat_soils_NatMa', 'Risk_of_Flooding_from_Rivers_and_Se',
#                        'Sandy_soils_NatMa', 'wetland_cba_desigs', 'woodland_cba_desigs',
#                        'WWNP_Runoff_Attenuation_Features_3_3_percent_AE')

#expert_layers <- setNames(expert_layers, expert_layer_names)

# Combine into one layer to make the analysis quicker. All dissolved to also make things quicker
#expert_layers <- lapply(names(expert_layers), function(name) {
#   message(1)
#   layer <- expert_layers[[name]] %>% st_union() %>% st_as_sf()
#   layer$layer_name <- name  # Add the name as a new column
#   return(layer)
#})

#combined_expert_layers <- do.call(rbind, expert_layers)
#st_write(combined_expert_layers, 'decision-making/combined_expert_layers.gpkg')

# Tile up expert layer for faster processing
#expert_layer <- st_read('decision-making/combined_expert_layers.gpkg')

#studyArea <- st_read('C://Users/nsplben1/OneDrive - Liverpool John Moores University (1)/LJMU_ecoservR_projects/LCR_NEIRF/data/boundaries/LiverpoolCityRegion.shp')

#ecoservR_1_km_grid <- st_read('C://Users/nsplben1/OneDrive - Liverpool John Moores University (1)/LJMU_ecoservR_projects/00_Data_library_national/OSGB_Grids/Shapefile/OSGB_Grid_1km.shp')
#grid_tiles_covered_by_polygons_index <- st_intersects(studyArea, ecoservR_1_km_grid)
#ecoservR_1_km_grid <- ecoservR_1_km_grid[unlist(unique(grid_tiles_covered_by_polygons_index)),]

#tiled_expert <- list()
#for (i in 1:891){
#   message(i)
#   expert_layer_tile <- st_intersection(expert_layer, ecoservR_1_km_grid[i, ]$geometry) %>% st_make_valid() %>% ecoservR::checkgeometry('POLYGON')
#   name <- ecoservR_1_km_grid[i,]$PLAN_NO
#   tiled_expert[[name]] <- expert_layer_tile
#}

#saveRDS(tiled_expert, 'decision-making/tiled_expert.RDS')

# NB all expert layers will just be polygons with no habitat information (this comes from the title),
# except for the stakeholder expert layer which must have a hab column)

# Load all constrained multiple benefit layers
#multiple_benefits <- rast(list.files('C://Users/NSPLBEN1/OneDrive - Liverpool John Moores University/General - LCR_LNRS Team/decision-making/multiple_benefits/', pattern = '.tif$', full.names = TRUE))
# Mask to correct LA
for (n in c('St. Helens District (B)',
            'Sefton District (B)', 'Halton (B)')){
   message(n)
tiled_expert <- readRDS('C://Users/NSPLBEN1/OneDrive - Liverpool John Moores University/General - LCR_LNRS Team/decision-making/tiled_expert.RDS')
multiple_benefits <- rast(list.files('C://Users/NSPLBEN1/OneDrive - Liverpool John Moores University/General - LCR_LNRS Team/decision-making/multiple_benefits/', pattern = '.tif$', full.names = TRUE))
multiple_benefits <- crop(multiple_benefits, dplyr::filter(LA, Name == n)) %>% mask(dplyr::filter(LA, Name == n))
multiple_benefits <- classify(multiple_benefits, cbind(NA, 99999))

habs <- c('grassland', 'urban', 'wetland', 'woodland')
# Create dataframes with MBs and location of pixels
multiple_benefits_df <- as.data.frame(multiple_benefits)
multiple_benefits_coords <- as.data.frame(xyFromCell(multiple_benefits, 1:ncell(multiple_benefits)))
colnames(multiple_benefits_df) <- habs

# Load tiles that expert layers were split into
studyArea <- st_read('C://Users/nsplben1/OneDrive - Liverpool John Moores University/LJMU_ecoservR_projects/LCR_NEIRF/data/boundaries/LiverpoolCityRegion.shp')

ecoservR_1_km_grid <- st_read('C://Users/nsplben1/OneDrive - Liverpool John Moores University/LJMU_ecoservR_projects/00_Data_library_national/OSGB_Grids/Shapefile//OSGB_Grid_1km/OSGB_Grid_1km.shp')
grid_tiles_covered_by_polygons_index <- st_intersects(studyArea, ecoservR_1_km_grid)
ecoservR_1_km_grid <- ecoservR_1_km_grid[unlist(unique(grid_tiles_covered_by_polygons_index)),]
multiple_benefits_coords$tile_no <- NA

alluvium_soils <- st_read('C://Users/NSPLBEN1/OneDrive - Liverpool John Moores University/General - LCR_LNRS Team/decision-making/expert_layers/alluvium_soils/alluvium_soils.shp')
tiled_alluv <- list()
for (i in 1:891){
   message(i)
   alluv_tile <- st_intersection(alluvium_soils, ecoservR_1_km_grid[i, ]$geometry) %>% st_make_valid() %>% st_cast('POLYGON')
   name <- ecoservR_1_km_grid[i,]$PLAN_NO
   tiled_alluv[[name]] <- alluv_tile
}


# Add herptiles (This needs to be tiled to a 1km grid using the grid below)
herptiles <- st_read('C://Users/NSPLBEN1/OneDrive - Liverpool John Moores University/General - LCR_LNRS Team/decision-making/expert_layers/clippedherptiles 100.gpkg')
tiled_herp <- list()
for (i in 1:891){
   message(i)
   herp_tile <- st_intersection(herptiles, ecoservR_1_km_grid[i, ]$geometry) %>% st_make_valid() %>% st_cast('POLYGON')
   name <- ecoservR_1_km_grid[i,]$PLAN_NO
   tiled_herp[[name]] <- herp_tile
}

alluvium_soils <- tiled_alluv
herptiles <- tiled_herp

# Create template raster on which opportunities will be mapped
template_rasters <- lapply(1:33, function(i) rast(multiple_benefits[[1]]))
template_rasters <- rast(template_rasters)
names(template_rasters) <- c('wet_woodland_willow_tit_expertprioritysp', 'black_poplar_expertprioritysp', 'dune_natterjack_expertprioritysp', 
                             'woodland_bats_expertspassem', 'woodland_expertspassem', 'woodland_red_squirrel_expertprioritysp', 'peat_sensitive_farming_expert', 
                             'herptiles_wetland_expertspassem', 'herptiles_wet_grassland_expertspassem', 'herptiles_grassland_expertspassem', 
                             'ground_nesting_birds_farmland_expertspassem', 'ground_nesting_birds_expertspassem', 'wetland_expertspassem', 
                             'hedgerow_expertspassem', 'grassland_expertspassem', 'urban_bats_expertspassem', 'urban_hedgehog_expertspassem', 'urban_green_wall_trees_esurban', 
                             'farmland_expert', 'mosaic_expert','grassland_expert', 'woodland_expert','wetland_expert', 'hedgerow_expert', 'woodland_network', 'grassland_network', 'wetland_network',
                             'wetland_es', 'grassland_es', 'wetland_bng', 'grassland_bng', 'woodland_bng', 'woodland_es')


# Loop through every pixel to decide which habitat it should have
habitat_all <- {}
for (i in 1:nrow(multiple_benefits_coords)){
   message(paste0(i, ' of ',length(multiple_benefits_df$grassland)))
   # Get point out of raster pixel
   multbens <- multiple_benefits_df[i,]
   # Set as 99999 so that we know which are constrained regions where decision-making won't be applied and assign no habitat
   if (multbens$grassland == 99999) {habitat <- c('no_habitat', 'no_habitat')
   } else {
      # Get names of expert layers the point lies on
      point <- st_sfc(st_point(c(multiple_benefits_coords[i,]$x, multiple_benefits_coords[i,]$y)), crs = 27700) %>% st_as_sf()
      tile <- st_intersection(ecoservR_1_km_grid, point)
      tile_no <- tile$PLAN_NO
      #stakeholder_opps <- st_intersection(stakeholder_expert_layer_fake, point)
      if (nrow(tile) == 0) {
         expert_layer_opps <- NULL
         alluvium <- NULL
         herps <- NULL
         #Select correct tile first and then get intersection so process is fast.
      } else {
         expert_layer_tile <- tiled_expert[[tile_no]]
         expert_layer_opps <- st_intersection(expert_layer_tile, point)
         alluvium <- alluvium_soils[[tile_no]]
         alluvium <- st_intersection(alluvium, point)
         herps <- herptiles[[tile_no]]
         herps <- st_intersection(herps, point)
         
         # Expert layers
         expert_layer_opps <- expert_layer_opps$layer_name
         }
      # Placeholder in case no habitat gets put there
habitat <- c('no_habitat', 'no_habitat')

# If the pixel lies on a stakeholder expert polygon, make that habitat no questions asked. Need to get the stakeholder layer
# into format with polygons and habitat required called something
#if (nrow(stakeholder_opps) > 0){
#   habitat <- c(stakeholder_opps$hab, stakeholder_opps$hab)
# Not included as being done by Andrew

# Now focus on important priority species that may need habitat creation. Black poplar, hedgehog, natterjack toad, red squirrel, willow tit
# Where a species overlaps with the correct network, create habitat for that species.
# Black poplar where on flood zones or in wetland network create wet wood
# Willow tit on flood zones or wetland network
   if ('clippedwillow_tit_100' %in% expert_layer_opps  && 
              ('EA_FloodMapForPlanningRiversAndSeaFloodZone2' %in% expert_layer_opps   ||  multbens$wetland > 0)) {
      # Wet woodland on woodland network
      if (multbens$woodland > 0){
            habitat <- c('wet_woodland_willow_tit_expertprioritysp')}
       

} else if ('clippedblack_poplar_100' %in% expert_layer_opps  &&  
    ('EA_FloodMapForPlanningRiversAndSeaFloodZone2' %in% expert_layer_opps || multbens$wetland > 0) && nrow(herps) == 0 &&
    !('clippedground_nesting_birds_100m' %in% expert_layer_opps)){
   # No trees on peat
   if (!('Peat_soils_NatMa' %in% expert_layer_opps)){
   habitat <- c('black_poplar_expertprioritysp')}
# Natterjack where on sandy soil dune type habitat for Natterjack toad
} else if ('clippednatterjack_100' %in% expert_layer_opps  && 
   'Sandy_soils_NatMa' %in% expert_layer_opps){
      habitat <- c('dune_natterjack_expertprioritysp')

# Bat richness and in the woodland network create bat trees
} else if (multbens$woodland > 0 && 'clippedbats_100' %in% expert_layer_opps && !('Peat_soils_NatMa' %in% expert_layer_opps)){
   habitat <- c('woodland_bats_expertspassem')

# Red squirrel where on ewco woodland priority and woodland network create red squirrel woodland
} else if ('clippedred_squirrel_100' %in% expert_layer_opps  && 
              ('ewco_biodiversity_priority_habitat_network' %in% expert_layer_opps  ||  multbens$woodland > 0)){
      habitat <- c('woodland_red_squirrel_expertprioritysp')
      
# Natterjack toad is disjunct so don't need to worry about multiple priority species.
# Black poplar, some overlap with red squirrel
# Black poplar and red squirrel
}  else if ('clippedblack_poplar_100' %in% expert_layer_opps  &&  'clippedred_squirrel' %in% expert_layer_opps && 
            (multbens$wetland > 0 || 'EA_FloodMapForPlanningRiversAndSeaFloodZone2' %in% expert_layer_opps) && nrow(herps) == 0 &&
            !('clippedground_nesting_birds_100m' %in% expert_layer_opps) && !('Peat_soils_NatMa' %in% expert_layer_opps)){
   habitat <- c('black_poplar_expertprioritysp')

} else if ('clippedblack_poplar_100' %in% expert_layer_opps  &&  'clippedred_squirrel' %in% expert_layer_opps && 
           multbens$wetland == 0 && 'EA_FloodMapForPlanningRiversAndSeaFloodZone2' %in% expert_layer_opps &&
           !('Peat_soils_NatMa' %in% expert_layer_opps)){
   habitat <- c('woodland_red_squirrel_expertprioritysp')
# After important species, focus on peat-sensitive farming
} else if ('mm_farm' %in% expert_layer_opps && 'Peat_soils_NatMa' %in% expert_layer_opps){
   habitat <- c('peat_sensitive_farming_expert')


# Focus next on high richness regions of species assemblages where there aren't individual priority species to consider.
# Herptiles next on wetland
} else if (nrow(herps) > 0 && (multbens$wetland > 0 || 'EA_FloodMapForPlanningRiversAndSeaFloodZone2' %in% expert_layer_opps)){
   habitat <- c('herptiles_wetland_expertspassem')
   
   # On wet grassland
} else if (nrow(herps) > 0 && multbens$grassland > 0 && nrow(alluvium) > 0 && 'EA_FloodMapForPlanningRiversAndSeaFloodZone2' %in% expert_layer_opps){
   habitat <- c('herptiles_wet_grassland_expertspassem')

# On grassland
} else if (nrow(herps) > 0 && multbens$grassland > 0 && 'Sandy_soils_NatMa' %in% expert_layer_opps){
   habitat <- c('herptiles_grassland_expertspassem')

# Farmland/ground-nesting - prioritise farmland for nesting birds
} else if (('clippedFarmland_100m' %in% expert_layer_opps || 
            'clippedground_nesting_birds_100m' %in% expert_layer_opps) && 
           'mm_farm' %in% expert_layer_opps){
   habitat <- c('ground_nesting_birds_farmland_expertspassem')
   
# General protection of ground nesting birds
} else if ('clippedground_nesting_birds_100m' %in% expert_layer_opps){
   habitat <- c('ground_nesting_birds_expertspassem')
   
# Estuary or wetland - if on estuary or wetland and on the wetland network and the EA flood zones. Put wetland as the first option
# as it's easier to make. But also noting the possibility of estuary.
} else if (('clippedwetland_100m' %in% expert_layer_opps) && (multbens$wetland > 0 || 'EA_FloodMapForPlanningRiversAndSeaFloodZone2' %in% expert_layer_opps)
    ){
   habitat <- c('wetland_expertspassem')

# Hedgerow opportunities - where hedgerow species and hedgerow opportunities
} else if ('clippedhedgerow_100m' %in% expert_layer_opps && 'hedge_opps' %in% expert_layer_opps){
   habitat <- c('hedgerow_expertspassem')


# Grassland opps areas of high grassland diversity
} else if (multbens$grassland > 0 && 
    'grassland_1km' %in% expert_layer_opps && 'Sandy_soils_NatMa' %in% expert_layer_opps){
   habitat <- c('grassland_expertspassem')


# Ancient woodland richness and in the woodland network and ewco woodland regions with no other networks, create woodland
} else if (('clippedAncient_Woodland_100m' %in% expert_layer_opps ||'clippedwoodland_100m' %in% expert_layer_opps) && 
    multbens$woodland > 0 && 'ewco_biodiversity_priority_habitat_network' %in% expert_layer_opps  && 
    !('Peat_soils_NatMa' %in% expert_layer_opps)){
   habitat <- c('woodland_expertspassem')


# Focus on urban opportunities. (4 out of 4) opps and it's an opportunity. Also hedgehog opps here
} else if (multbens$urban > 0 && 'clippedbats_100' %in% expert_layer_opps){
   habitat <- c('urban_bats_expertspassem')   

} else if (multbens$urban > 0 && 'clippedhedgehog_100' %in% expert_layer_opps){
   habitat <- c('urban_hedgehog_expertspassem')   
   
   
} else if (multbens$grassland == 0 && multbens$wetland == 0 && multbens$woodland == 0 && multbens$urban > 3){
   habitat <- c('urban_green_wall_trees_esurban')


# Stop chemical runoff from farmland. Only where no species-related habitat creation
} else if ('water_quality_opps' %in% expert_layer_opps  && (multbens$wetland > 0 || 'EA_FloodMapForPlanningRiversAndSeaFloodZone2' %in% expert_layer_opps) &&
    'farm_adjacent_water' %in% expert_layer_opps){
   habitat <- c('farmland_expert')

# Add hedgerows where in the woodland network and possible hedgerow opps
} else if ('hedge_opps' %in% expert_layer_opps && multbens$woodland > 0){
   habitat <- c('hedgerow_expert')


# Wetland in runoff attenuation features as long as in wetland network or flood layer
} else if ('WWNP_Runoff_Attenuation_Features_3_3_percent_AE' %in% expert_layer_opps){
   habitat <- c('wetland_expert')


# LCR designated sites - could constrain this and map the boundaries if you want. Also useful to map to compare and see if there are any specific species that may
# there and need habitat.
# Mosaic has to be in a network.
} else if ('mosaic_cba_desigs' %in% expert_layer_opps && sum(multbens$grassland, multbens$wetland, multbens$woodland) > 0){
   habitat <- c('mosaic_expert')


# Wetland has to be in wetland network or flood zones
} else if ('wetland_cba_desigs' %in% expert_layer_opps && (multbens$wetland > 0 || 'EA_FloodMapForPlanningRiversAndSeaFloodZone2' %in% expert_layer_opps)){
   habitat <- c('wetland_expert')


# Heathland leaving out as heathland opps already covered by Andrew

# Grassland has to be in grassland network and on Sandy soils
} else if ('grassland_cba_desigs' %in% expert_layer_opps && multbens$grassland > 0  && 
    'Sandy_soils_NatMa' %in% expert_layer_opps){
   habitat <- c('grassland_expert')


# Woodland has to be in woodland network
} else if ('woodland_cba_desigs' %in% expert_layer_opps && multbens$woodland > 0 && 
    !('Peat_soils_NatMa' %in% expert_layer_opps)){
   habitat <- c('woodland_expert')


# Grassland in B-lines and within the grassland network where sandy soils
} else if ('Buglife_Blines_LC' %in% expert_layer_opps && multbens$grassland > 0){
   habitat <- c('grassland_expert')


# Create wet woodland in floodplain regions where in wetland and woodland networks
} else if ('EA_FloodMapForPlanningRiversAndSeaFloodZone2' %in% expert_layer_opps && multbens$wetland > 0 && 
    multbens$woodland > 0 && !('Peat_soils_NatMa' %in% expert_layer_opps)){
   habitat <- c('wetland_expert')


# Lastly on the rest of the networks will select habitats with highest multiple benefits. Focus on regions with high multiple benefits
# and ensure woodland doesn't dominate by deflating. 
} else if (sum(multbens$grassland, multbens$wetland, multbens$woodland) > 0){
   # If only woodland with at least four benefits make woodland
   if (multbens$woodland > 3 && sum(multbens$wetland, multbens$grassland) == 0 && !('Peat_soils_NatMa' %in% expert_layer_opps)){
      habitat <- c('woodland_network')
   # If only grassland with at least one benefit make grassland
   } else if (multbens$grassland > 0 && sum(multbens$wetland, multbens$woodland) == 0 && 'Sandy_soils_NatMa' %in% expert_layer_opps){
      habitat <- c('grassland_network')
   # If only wetland with at least one benefit make wetland
   } else if (multbens$wetland > 0 && sum(multbens$woodland, multbens$woodland) == 0 && 'EA_FloodMapForPlanningRiversAndSeaFloodZone2' %in% expert_layer_opps){
      habitat <- c('wetland_network')
   # If wetland/grassland have at least one benefit
   } else if (multbens$wetland > 0 && multbens$grassland > 0 && multbens$woodland == 0 && 'EA_FloodMapForPlanningRiversAndSeaFloodZone2' %in% expert_layer_opps  && 
              (nrow(alluvium_soils) > 0 || 'Sandy_soils_NatMa' %in% expert_layer_opps)){
      # wetland has more benefits make wetland first
      if (multbens$wetland > multbens$grassland){
         habitat <- c('wetland_es')
      # If grassland has more benefits make grassland first
      } else if (multbens$grassland > multbens$wetland){
         habitat <- c('grassland_es')
      # If equal wetland first because of higher BNG score
      } else if (multbens$grassland == multbens$wetland){
         habitat <- c('wetland_bng')
      }
   # If wetland and woodland benefits
   } else if (multbens$wetland > 0  &&  multbens$grassland == 0  &&  multbens$woodland > 3 && 'EA_FloodMapForPlanningRiversAndSeaFloodZone2' %in% expert_layer_opps  && 
              !('Peat_soils_NatMa' %in% expert_layer_opps)){
   # Both have MBs so wetland first (higher BNG score), but wet woodland definite option.
      habitat <- c('wetland_bng')
   } else if (multbens$grassland > 0 && multbens$woodland > 3 && multbens$wetland == 0 && !('Peat_soils_NatMa' %in% expert_layer_opps)  && 
              'Sandy_soils_NatMa' %in% expert_layer_opps){
   # If grassland at least one, grassland first (could also be mosaic)
      if (multbens$grassland > 0){
         habitat <- c('grassland_bng')
   # If woodland at least four, woodland first (either or mosaic)
      } else if (multbens$woodland > 3){
         habitat <- c('woodland_es')
      }
   # If all three have benefits
   } else if (multbens$grassland > 0  &&  multbens$woodland > 3  &&  multbens$wetland > 0  &&  'EA_FloodMapForPlanningRiversAndSeaFloodZone2' %in% expert_layer_opps  && 
              !('Peat_soils_NatMa' %in% expert_layer_opps)  &&  (nrow(alluvium_soils) > 0 || 'Sandy_soils_NatMa' %in% expert_layer_opps)){
      # If equal, wetland then grassland as higher BNG for those two
      if (multbens$grassland == multbens$wetland  &&  multbens$wetland == multbens$woodland){
         habitat <- c('wetland_bng')
      # Grassland at least one grassland first (or mosaic)
      } else if (grassland > 0){
         habitat <- c('grassland_bng')
      # Woodland at least four, woodland first (or mosaic)
      } else if (woodland > 3){
         habitat <- c('woodland_es')
      }
   }
   
# Plant some trees potentially where could be flooding, and no other interventions (not in network either)
} else if ('flood_mitig_opps' %in% expert_layer_opps &&  !('Peat_soils_NatMa' %in% expert_layer_opps)){
      habitat <- c('woodland_es')
}
   
   }
   
habitat_all <- rbind(habitat_all, habitat)

}


habitat_all <- data.frame(habitat_all)
colnames(habitat_all) <- c('selection_one')

write.csv(habitat_all, paste0('results/habitat_all_options_',n,'.csv'))
}
# Restart from here - creating polygons
inters <- list.files('results', pattern = '.csv', full.names = TRUE)

for (i in 1:6){
   names <- c('Halton (B)', 'Knowsley District (B)', 'Liverpool District (B)',
              'Sefton District (B)', 'St. Helens District (B)', 'Wirral District (B)')
   name <- names[i]
   message(name)
   habitat_all <- read.csv(inters[i])
   habitat_all$X <- NULL
   habitat_all$NA. <- NULL
   
   LA <- st_read('C://Users/nsplben1/OneDrive - Liverpool John Moores University/LJMU_ecoservR_projects/LCR_opportunityLB/Generalisation to select important areas/data/LCR_LA.gpkg')
   
   multiple_benefits <- rast(list.files('C://Users/NSPLBEN1/OneDrive - Liverpool John Moores University/General - LCR_LNRS Team/decision-making/multiple_benefits/', pattern = '.tif$', full.names = TRUE))
   multiple_benefits <- crop(multiple_benefits, dplyr::filter(LA, Name == name)) %>% mask(dplyr::filter(LA, Name == name))
   #multiple_benefits <- classify(multiple_benefits, cbind(NA, 99999))
   
   template_rasters <- lapply(1:33, function(i) rast(multiple_benefits[[1]]))
   template_rasters <- rast(template_rasters)
   names(template_rasters) <- c('wet_woodland_willow_tit_expertprioritysp', 'black_poplar_expertprioritysp', 'dune_natterjack_expertprioritysp', 
                                'woodland_bats_expertspassem', 'woodland_expertspassem', 'woodland_red_squirrel_expertprioritysp', 'peat_sensitive_farming_expert', 
                                'herptiles_wetland_expertspassem', 'herptiles_wet_grassland_expertspassem', 'herptiles_grassland_expertspassem', 
                                'ground_nesting_birds_farmland_expertspassem', 'ground_nesting_birds_expertspassem', 'wetland_expertspassem', 
                                'hedgerow_expertspassem', 'grassland_expertspassem', 'urban_bats_expertspassem', 'urban_hedgehog_expertspassem', 'urban_green_wall_trees_esurban', 
                                'farmland_expert', 'mosaic_expert','grassland_expert', 'woodland_expert','wetland_expert', 'hedgerow_expert', 'woodland_network', 'grassland_network', 'wetland_network',
                                'wetland_es', 'grassland_es', 'wetland_bng', 'grassland_bng', 'woodland_bng', 'woodland_es')
   
   
# Create zeroes and ones for the habitat type
# Define replacement vectors
replacements <- list(
   'no_habitat'                                       = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
   'wet_woodland_willow_tit_expertprioritysp'         = c(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'black_poplar_expertprioritysp'                    = c(0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'dune_natterjack_expertprioritysp'                 = c(0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'woodland_bats_expertspassem'                      = c(0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'woodland_expertspassem'                           = c(0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'woodland_red_squirrel_expertprioritysp'           = c(0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'peat_sensitive_farming_expert'                    = c(0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'herptiles_wetland_expertspassem'                  = c(0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'herptiles_wet_grassland_expertspassem'            = c(0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'herptiles_grassland_expertspassem'                = c(0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'ground_nesting_birds_farmland_expertspassem'      = c(0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'ground_nesting_birds_expertspassem'               = c(0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'wetland_expertspassem'                            = c(0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'hedgerow_expertspassem'                           = c(0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'grassland_expertspassem'                          = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'urban_bats_expertspassem'                         = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'urban_hedgehog_expertspassem'                     = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'urban_green_wall_trees_esurban'                   = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'farmland_expert'                                  = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'mosaic_expert'                                    = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0), 
   'grassland_expert'                                 = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0),
   'woodland_expert'                                  = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0),
   'wetland_expert'                                   = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0),
   'hedgerow_expert'                                  = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0),
   'woodland_network'                                 = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0), 
   'grassland_network'                                = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0), 
   'wetland_network'                                  = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0),
   'wetland_es'                                       = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0), 
   'grassland_es'                                     = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0), 
   'wetland_bng'                                      = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0), 
   'grassland_bng'                                    = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0), 
   'woodland_bng'                                     = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0), 
   'woodland_es'                                      = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1)
   
)

# Replace values with lists (selection one)
habitat_all <- habitat_all %>%
   mutate(selection_one = lapply(selection_one, function(x) {
      if (x %in% names(replacements)) {
         replacements[[x]]
      } else {
         NA  # Or handle unexpected cases
      }
   }))

# Replace values with lists (selection two)
#habitat_all <- habitat_all %>%
#   mutate(selection_two = lapply(selection_two, function(x) {
#      if (x %in% names(replacements)) {
#         replacements[[x]]
#      } else {
#         NA  # Or handle unexpected cases
#      }
#   }))

# Selection one
# Find the maximum length of the vectors
max_len <- max(sapply(habitat_all$selection_one, length))

# Fill the matrix with NA for missing values and create a matrix
habitats_selection_one <- do.call(rbind, lapply(habitat_all$selection_one, function(x) {
   c(x, rep(NA, max_len - length(x))) # Pad with NA for shorter vectors
}))

# Selection two
# Find the maximum length of the vectors
#max_len <- max(sapply(habitat_all$selection_one, length))

# Fill the matrix with NA for missing values and create a matrix
#habitats_selection_two <- do.call(rbind, lapply(habitat_all$selection_two, function(x) {
 #  c(x, rep(NA, max_len - length(x))) # Pad with NA for shorter vectors
#}))


# Selection one
habitats_selection_one[habitats_selection_one == 0] <- NA
colnames(habitats_selection_one) <- c('wet_woodland_willow_tit_expertprioritysp', 'black_poplar_expertprioritysp', 'dune_natterjack_expertprioritysp', 
                                      'woodland_bats_expertspassem', 'woodland_expertspassem', 'woodland_red_squirrel_expertprioritysp', 'peat_sensitive_farming_expert', 
                                      'herptiles_wetland_expertspassem', 'herptiles_wet_grassland_expertspassem', 'herptiles_grassland_expertspassem', 
                                      'ground_nesting_birds_farmland_expertspassem', 'ground_nesting_birds_expertspassem', 'wetland_expertspassem', 
                                      'hedgerow_expertspassem', 'grassland_expertspassem', 'urban_bats_expertspassem', 'urban_hedgehog_expertspassem', 'urban_green_wall_trees_esurban', 
                                      'farmland_expert', 'mosaic_expert','grassland_expert', 'woodland_expert','wetland_expert', 'hedgerow_expert', 'woodland_network', 'grassland_network', 'wetland_network',
                                      'wetland_es', 'grassland_es', 'wetland_bng', 'grassland_bng', 'woodland_bng', 'woodland_es')


# selection two
#habitats_selection_two[habitats_selection_two == 0] <- NA
#colnames(habitats_selection_two) <- c('wet_woodland_willow_tit', 'black_poplar', 'dune_natterjack', 
#                                      'woodland_bats', 'woodland', 'woodland_red_squirrel', 'peat_sensitive_farming', 
#                                      'herptiles_wetland', 'herptiles_wet_grassland', 'herptiles_grassland', 
#                                      'ground_nesting_birds_farmland', 'ground_nesting_birds', 'wetland', 
#                                      'hedgerow', 'grassland', 'urban_bats', 'urban_hedgehog', 'urban_green_wall_trees', 
#                                      'farmland', 'mosaic')


# Create interventions/opportunities
final_interventions_selection_one <- setValues(template_rasters, habitats_selection_one)
#final_interventions_selection_two <- setValues(template_rasters, habitats_selection_two)

# Start here when I go back to this on Friday after Grosvenor
# Converting the different habitat types into polygons
final_interventions_poly_wet_woodland_willow_tit_expertprioritysp_s1 <- as.polygons(final_interventions_selection_one$wet_woodland_willow_tit_expertprioritysp) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'wet_woodland_willow_tit_expertprioritysp')
#final_interventions_poly_wet_woodland_willow_tit_s2 <- as.polygons(final_interventions_selection_two$wet_woodland_willow_tit) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'wet_woodland_willow_tit')

final_interventions_poly_black_poplar_expertprioritysp_s1 <- as.polygons(final_interventions_selection_one$black_poplar_expertprioritysp) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'black_poplar_expertprioritysp')
#final_interventions_poly_black_poplar_s2 <- as.polygons(final_interventions_selection_two$black_poplar) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'black_poplar')

final_interventions_poly_dune_natterjack_expertprioritysp_s1 <- as.polygons(final_interventions_selection_one$dune_natterjack_expertprioritysp) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'dune_natterjack_expertprioritysp')
#final_interventions_poly_dune_natterjack_s2 <- as.polygons(final_interventions_selection_two$dune_natterjack) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'dune_natterjack')

final_interventions_poly_woodland_bats_expertspassem_expert_s1 <- as.polygons(final_interventions_selection_one$woodland_bats_expertspassem) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'woodland_bats_expertspassem')
#final_interventions_poly_woodland_bats_s2 <- as.polygons(final_interventions_selection_two$woodland_bats) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'woodland_bats')

final_interventions_poly_woodland_expertspassem_s1 <- as.polygons(final_interventions_selection_one$woodland_expertspassem) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'woodland_expertspassem')
#final_interventions_poly_woodland_s2 <- as.polygons(final_interventions_selection_two$woodland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'woodland')

final_interventions_poly_woodland_red_squirrel_expertprioritysp_s1 <- as.polygons(final_interventions_selection_one$woodland_red_squirrel_expertprioritysp) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'woodland_red_squirrel_expertprioritysp')
#final_interventions_poly_woodland_red_squirrel_s2 <- as.polygons(final_interventions_selection_two$woodland_red_squirrel) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'woodland_red_squirrel')

final_interventions_poly_peat_sensitive_farming_expert_s1 <- as.polygons(final_interventions_selection_one$peat_sensitive_farming_expert) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'peat_sensitive_farming_expert')
#final_interventions_poly_peat_sensitive_farming_s2 <- as.polygons(final_interventions_selection_two$peat_sensitive_farming) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'peat_sensitive_farming')

final_interventions_poly_herptiles_wetland_expertspassem_s1 <- as.polygons(final_interventions_selection_one$herptiles_wetland_expertspassem) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'herptiles_wetland_expertspassem')
#final_interventions_poly_herptiles_wetland_s2 <- as.polygons(final_interventions_selection_two$herptiles_wetland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'herptiles_wetland')

final_interventions_poly_herptiles_wet_grassland_expertspassem_s1 <- as.polygons(final_interventions_selection_one$herptiles_wet_grassland_expertspassem) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'herptiles_wet_grassland_expertspassem')
#final_interventions_poly_herptiles_wet_grassland_s2 <- as.polygons(final_interventions_selection_two$herptiles_wet_grassland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'herptiles_wet_grassland')

final_interventions_poly_herptiles_grassland_expertspassem_s1 <- as.polygons(final_interventions_selection_one$herptiles_grassland_expertspassem) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'herptiles_grassland_expertspassem')
#final_interventions_poly_herptiles_grassland_s2 <- as.polygons(final_interventions_selection_two$herptiles_grassland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'herptiles_grassland')

final_interventions_poly_ground_nesting_birds_farmland_expertspassem_s1 <- as.polygons(final_interventions_selection_one$ground_nesting_birds_farmland_expertspassem) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'ground_nesting_birds_farmland_expertspassem')
#final_interventions_poly_ground_nesting_birds_farmland_s2 <- as.polygons(final_interventions_selection_two$ground_nesting_birds_farmland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'ground_nesting_birds_farmland')

final_interventions_poly_ground_nesting_birds_expertspassem_s1 <- as.polygons(final_interventions_selection_one$ground_nesting_birds_expertspassem) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'ground_nesting_birds_expertspassem')
#final_interventions_poly_ground_nesting_birds_s2 <- as.polygons(final_interventions_selection_two$ground_nesting_birds) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'ground_nesting_birds')

final_interventions_poly_wetland_expertspassem_s1 <- as.polygons(final_interventions_selection_one$wetland_expertspassem) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'wetland_expertspassem')
#final_interventions_poly_wetland_s2 <- as.polygons(final_interventions_selection_two$wetland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'wetland')

final_interventions_poly_hedgerow_expertspassem_s1 <- as.polygons(final_interventions_selection_one$hedgerow_expertspassem) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'hedgerow_expertspassem')
#final_interventions_poly_hedgerow_s2 <- as.polygons(final_interventions_selection_two$hedgerow) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'hedgerow')

final_interventions_poly_grassland_expertspassem_s1 <- as.polygons(final_interventions_selection_one$grassland_expertspassem) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'grassland_expertspassem')
#final_interventions_poly_grassland_s2 <- as.polygons(final_interventions_selection_two$grassland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'grassland')

final_interventions_poly_urban_bats_expertspassem_s1 <- as.polygons(final_interventions_selection_one$urban_bats_expertspassem) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'urban_bats_expertspassem')
#final_interventions_poly_urban_bats_s2 <- as.polygons(final_interventions_selection_two$urban_bats) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'urban_bats')

final_interventions_poly_urban_hedgehog_expertspassem_s1 <- as.polygons(final_interventions_selection_one$urban_hedgehog_expertspassem) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'urban_hedgehog_expertspassem')
#final_interventions_poly_urban_hedgehog_s2 <- as.polygons(final_interventions_selection_two$urban_hedgehog) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'urban_hedgehog')

final_interventions_poly_urban_green_wall_trees_esurban_s1 <- as.polygons(final_interventions_selection_one$urban_green_wall_trees_esurban) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'urban_green_wall_trees_esurban')
#final_interventions_poly_urban_green_wall_trees_s2 <- as.polygons(final_interventions_selection_two$urban_green_wall_trees) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'urban_green_wall_trees')

final_interventions_poly_farmland_expert_s1 <- as.polygons(final_interventions_selection_one$farmland_expert) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'farmland_expert')
#final_interventions_poly_farmland_s2 <- as.polygons(final_interventions_selection_two$farmland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'farmland')

final_interventions_poly_mosaic_expert_s1 <- as.polygons(final_interventions_selection_one$mosaic_expert) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic_expert')
#final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')

final_interventions_poly_grassland_expert_s1 <- as.polygons(final_interventions_selection_one$grassland_expert) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'grassland_expert')
final_interventions_poly_woodland_expert_s1 <- as.polygons(final_interventions_selection_one$woodland_expert) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'woodland_expert')
final_interventions_poly_wetland_expert_s1 <- as.polygons(final_interventions_selection_one$wetland_expert) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'wetland_expert')
final_interventions_poly_hedgerow_expert_s1 <- as.polygons(final_interventions_selection_one$hedgerow_expert) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'hedgerow_expert')

final_interventions_poly_woodland_network_s1 <- as.polygons(final_interventions_selection_one$woodland_network) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'woodland_network')
#final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')

final_interventions_poly_grassland_network_s1 <- as.polygons(final_interventions_selection_one$grassland_network) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'grassland_network')
#final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')

final_interventions_poly_wetland_network_s1 <- as.polygons(final_interventions_selection_one$wetland_network) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'wetland_network')
#final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')

final_interventions_poly_wetland_es_s1 <- as.polygons(final_interventions_selection_one$wetland_es) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'wetland_es')
#final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')

final_interventions_poly_grassland_es_s1 <- as.polygons(final_interventions_selection_one$grassland_es) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'grassland_es')
#final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')

final_interventions_poly_woodland_es_s1 <- as.polygons(final_interventions_selection_one$woodland_es) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'woodland_es')
#final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')

final_interventions_poly_woodland_bng_s1 <- as.polygons(final_interventions_selection_one$woodland_bng) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'woodland_bng')
#final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')

final_interventions_poly_grassland_bng_s1 <- as.polygons(final_interventions_selection_one$grassland_bng) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'grassland_bng')
#final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')

final_interventions_poly_wetland_bng_s1 <- as.polygons(final_interventions_selection_one$grassland_bng) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'grassland_bng')
#final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')


# Combining all polygons 
final_interventions_poly_s1 <- rbind(final_interventions_poly_wet_woodland_willow_tit_expertprioritysp_s1,
                                     #final_interventions_poly_wet_woodland_willow_tit_s2 <- as.polygons(final_interventions_selection_two$wet_woodland_willow_tit) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'wet_woodland_willow_tit')
                                     
                                     final_interventions_poly_black_poplar_expertprioritysp_s1,
                                     #final_interventions_poly_black_poplar_s2 <- as.polygons(final_interventions_selection_two$black_poplar) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'black_poplar')
                                     
                                     final_interventions_poly_dune_natterjack_expertprioritysp_s1,
                                     #final_interventions_poly_dune_natterjack_s2 <- as.polygons(final_interventions_selection_two$dune_natterjack) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'dune_natterjack')
                                     
                                     final_interventions_poly_woodland_bats_expertspassem_expert_s1,
                                     #final_interventions_poly_woodland_bats_s2 <- as.polygons(final_interventions_selection_two$woodland_bats) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'woodland_bats')
                                     
                                     final_interventions_poly_woodland_expertspassem_s1,
                                     #final_interventions_poly_woodland_s2 <- as.polygons(final_interventions_selection_two$woodland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'woodland')
                                     
                                     final_interventions_poly_woodland_red_squirrel_expertprioritysp_s1,
                                     #final_interventions_poly_woodland_red_squirrel_s2 <- as.polygons(final_interventions_selection_two$woodland_red_squirrel) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'woodland_red_squirrel')
                                     
                                     final_interventions_poly_peat_sensitive_farming_expert_s1,
                                     #final_interventions_poly_peat_sensitive_farming_s2 <- as.polygons(final_interventions_selection_two$peat_sensitive_farming) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'peat_sensitive_farming')
                                     
                                     final_interventions_poly_herptiles_wetland_expertspassem_s1,
                                     #final_interventions_poly_herptiles_wetland_s2 <- as.polygons(final_interventions_selection_two$herptiles_wetland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'herptiles_wetland')
                                     
                                     final_interventions_poly_herptiles_wet_grassland_expertspassem_s1,
                                     #final_interventions_poly_herptiles_wet_grassland_s2 <- as.polygons(final_interventions_selection_two$herptiles_wet_grassland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'herptiles_wet_grassland')
                                     
                                     final_interventions_poly_herptiles_grassland_expertspassem_s1,
                                     #final_interventions_poly_herptiles_grassland_s2 <- as.polygons(final_interventions_selection_two$herptiles_grassland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'herptiles_grassland')
                                     
                                     final_interventions_poly_ground_nesting_birds_farmland_expertspassem_s1,
                                     #final_interventions_poly_ground_nesting_birds_farmland_s2 <- as.polygons(final_interventions_selection_two$ground_nesting_birds_farmland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'ground_nesting_birds_farmland')
                                     
                                     final_interventions_poly_ground_nesting_birds_expertspassem_s1,                                     #final_interventions_poly_ground_nesting_birds_s2 <- as.polygons(final_interventions_selection_two$ground_nesting_birds) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'ground_nesting_birds')
                                     
                                     final_interventions_poly_wetland_expertspassem_s1,
                                     #final_interventions_poly_wetland_s2 <- as.polygons(final_interventions_selection_two$wetland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'wetland')
                                     
                                     final_interventions_poly_hedgerow_expertspassem_s1,
                                     #final_interventions_poly_hedgerow_s2 <- as.polygons(final_interventions_selection_two$hedgerow) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'hedgerow')
                                     
                                     final_interventions_poly_grassland_expertspassem_s1,
                                     #final_interventions_poly_grassland_s2 <- as.polygons(final_interventions_selection_two$grassland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'grassland')
                                     
                                     final_interventions_poly_urban_bats_expertspassem_s1,
                                     #final_interventions_poly_urban_bats_s2 <- as.polygons(final_interventions_selection_two$urban_bats) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'urban_bats')
                                     
                                     final_interventions_poly_urban_hedgehog_expertspassem_s1,
                                     #final_interventions_poly_urban_hedgehog_s2 <- as.polygons(final_interventions_selection_two$urban_hedgehog) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'urban_hedgehog')
                                     
                                     final_interventions_poly_urban_green_wall_trees_esurban_s1,
                                     #final_interventions_poly_urban_green_wall_trees_s2 <- as.polygons(final_interventions_selection_two$urban_green_wall_trees) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'urban_green_wall_trees')
                                     
                                     final_interventions_poly_farmland_expert_s1,
                                     #final_interventions_poly_farmland_s2 <- as.polygons(final_interventions_selection_two$farmland) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'farmland')
                                     
                                     final_interventions_poly_mosaic_expert_s1,
                                     #final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')
                                     
                                     final_interventions_poly_grassland_expert_s1,
                                     final_interventions_poly_woodland_expert_s1,
                                     final_interventions_poly_wetland_expert_s1,
                                     final_interventions_poly_hedgerow_expert_s1,
                                     
                                     final_interventions_poly_woodland_network_s1,
                                     #final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')
                                     
                                     final_interventions_poly_grassland_network_s1,
                                     #final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')
                                     
                                     final_interventions_poly_wetland_network_s1,
                                     #final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')
                                     
                                     final_interventions_poly_wetland_es_s1,
                                     #final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')
                                     
                                     final_interventions_poly_grassland_es_s1,
                                     #final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')
                                     
                                     final_interventions_poly_woodland_es_s1,
                                     #final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')
                                     
                                     final_interventions_poly_woodland_bng_s1,
                                     #final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')
                                     
                                     final_interventions_poly_grassland_bng_s1,
                                     #final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')
                                     
                                     final_interventions_poly_wetland_bng_s1
                                     #final_interventions_poly_mosaic_s2 <- as.polygons(final_interventions_selection_two$mosaic) %>% st_as_sf() %>% st_geometry() %>% st_as_sf() %>% mutate(hab_type = 'mosaic')
                                     
                                 ) %>% st_set_crs(27700)
#final_interventions_poly_s2 <- rbind(final_interventions_poly_wet_woodland_willow_tit_s2,
#                                     final_interventions_poly_black_poplar_s2,
#                                     final_interventions_poly_dune_natterjack_s2,
#                                     final_interventions_poly_woodland_bats_s2,
 #                                    final_interventions_poly_woodland_s2,
 ##                                    final_interventions_poly_woodland_red_squirrel_s2,
  #                                   final_interventions_poly_peat_sensitive_farming_s2,
 ##                                    final_interventions_poly_herptiles_wetland_s2,
 #                                    final_interventions_poly_herptiles_wet_grassland_s2,
#                                     final_interventions_poly_herptiles_grassland_s2,
#                                     final_interventions_poly_ground_nesting_birds_farmland_s2,
#                                     final_interventions_poly_ground_nesting_birds_s2,
#                                     final_interventions_poly_wetland_s2,
 ##                                    final_interventions_poly_hedgerow_s2,
 #                                    final_interventions_poly_grassland_s2,
  #                                   final_interventions_poly_urban_bats_s2,
  #                                   final_interventions_poly_urban_hedgehog_s2,
  #                                   final_interventions_poly_urban_green_wall_trees_s2,
#                                     final_interventions_poly_farmland_s2,
#                                     final_interventions_poly_mosaic_s2) %>% st_set_crs(27700)
#

# Add type column to the selection
final_interventions_poly_s1 <- final_interventions_poly_s1 %>%
   dplyr::mutate(type = stringr::str_extract(hab_type, "[^_]+$"))


# Saving separately for s1 and s2
st_write(final_interventions_poly_s1, paste0('C://Users/NSPLBEN1/OneDrive - Liverpool John Moores University/Documents - Natural Capital Lab at LJMU Team/Decision tool paper/results/',name,'_poly.gpkg'), append = F)
#st_write(final_interventions_poly_s2, paste0('decision-making/outputs/final_interventions_LNRS_s2.gpkg'), append = F)


}



