如何将栅格堆栈的值提取到单独的列中?

How to extract values of a raster stack into separate columns?

我有不同植被测量值的栅格(即冠层高度、植物密度)。我想堆叠图层并使用 dplyr 提取值并分配给不同的列。我怎样才能做到这一点?下面的示例代码。很抱歉没有可重现的例子。

而不是这个:

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)

我想要这个,但是每个蔬菜都要。在单独的列中测量:

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)

除非我误解了,否则我认为你把它弄得比必要的更复杂了。如果您使用 terra 包,并一起读取所有栅格,则会创建一个 SpatRaster 堆栈。然后,使用 terra::extractterra::vect 对象中的每个要素提取值将生成一个 data.frame,其中包含堆栈中每个栅格图层的列。

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