I have rasters of different vegetation measurements (i.e., canopy height, veg density). I want to stack the layers and use dplyr
to extract values and assign to different columns. How can I do this? Sample code below. Sorry for not having a reproducible example.
Instead of this:
RSF_df.sf <- RSF_df.sf %>%
mutate(can_cover5m = raster::extract(can_cover5m, RSF_df.sf),
veg_density1mheight_5m = raster::extract(veg_density1mheight_5m, RSF_df.sf),
veg_density2mheight_5m = raster::extract(veg_density2mheight_5m, RSF_df.sf),
veg_density3mheight_5m = raster::extract(veg_density3mheight_5m, RSF_df.sf),
veg_density4mheight_5m = raster::extract(veg_density4mheight_5m, RSF_df.sf),
veg_density5mheight_5m = raster::extract(veg_density5mheight_5m, RSF_df.sf),
veg_density_over5mheight_5m = raster::extract(veg_density_over5mheight_5m, RSF_df.sf))
summary(RSF_df.sf)
I want this, but with each veg. measurement in a separate column:
all_land_data<-addLayer(can_cover5m,veg_density1mheight_5m,veg_density2mheight_5m,veg_density3mheight_5m,
veg_density4mheight_5m,veg_density5mheight_5m,veg_density_over5mheight_5m)
del <- RSF_df.sf %>%
mutate(all_land_data = raster::extract(raster stack, RSF_df.sf)) #I need values for each veg. measurment in seperate columns
summary(del)
Unless I misunderstood, I think you are making this more complicated than necessary. If you use the terra
package, and read all rasters in together, a SpatRaster stack is created. Then, using terra::extract
to extract values for each feature in a terra::vect
object will produce a data.frame with columns for each raster layer in the stack.
i.e.
library(terra)
veg_stk <- c(rast(veg_density1mheight_5m), rast(veg_density2mheight_5m), rast(veg_density3mheight_5m), rast(can_cover5m)
RSF_vect <- vect(RSF_df.sf)
del <- terra::extract(veg_stk, RSF_vect, fun = mean) # returns a DF