创建一个循环以从多个栅格中提取数据

Create a loop to extract data from multiple raster

我有 8 个栅格,我厌倦了使用一组点堆叠和提取数据。但它没有成功,因为栅格有不同的范围。

我真的很不擅长创建循环。如何在 R studio 中编写一个循环函数,我可以在其中循环提取函数并从每个栅格中提取数据并将数据导出到 table。下面是我当前的脚本。

  H1 <- readOGR(dsn = ".", layer = "Shapefile")
  L1= raster('raster.tiff')
  L2= raster('raster.tiff')
  L3= raster('raster.tiff')
  L4= raster('raster.tiff')
  L5= raster('raster.tiff')
  L6= raster('raster.tiff')
  L7= raster('raster.tiff')
  L8= raster('raster.tiff')

   files<- list()
   files[[1]] <- L1
   files[[2]] <- L2
   files[[3]] <- L3
   files[[4]] <- L4
   files[[5]] <- L5
   files[[6]] <- L6
   files[[7]] <- L7
   files[[8]] <- L8

我假设你指的是函数 raster::extract。另外,您的示例不完整,因此我无法提供完整的解决方案。

此外,我假设您有一组要提取的点定义为名为 coord 的矩阵。

如果我的假设是正确的,你可以使用

d <- lapply(files, extract, y = coord)

第三个参数被转发给 extract,所以你实际上是在循环

extract(files[[1]], y = coord)
extract(files[[2]], y = coord)
...

您得到一个列表,每个元素一个元素 files。然后你需要将它们合并在一起,例如 with

library(dplyr)
output <- bind_rows(d, .id = "raster")