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

时间:2019-12-03 20:04:47

标签: r loops extract raster

我有8个栅格,我厌倦了使用一组点来堆叠和提取数据。但是,由于栅格的范围不同,因此无法解决问题。

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

  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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

第三个参数被转发到extract,因此您可以有效地循环播放

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

files中,您将获得一个列表,其中每个元素一个元素。然后,您需要将它们合并在一起,例如使用

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