我有一个多频段 tif 图像的文件夹,我已经循环创建了多个不同变量的栅格砖,每个频段对应一个给定年份。我能够从栅格砖创建一个数据框架,但一次只能创建一个栅格。我怎样才能修改这个功能,使其在我的目录中循环浏览所有栅格砖,以输出一个包含x,y坐标、年份的数据帧,该数据帧对应于每个波段和每个变量。最终数据帧? 谢谢你
fs <- list.files(path=".../WinterTmin", pattern = "tif$", full.names = TRUE)
s <- brick(fs)
date <- seq(as.Date('2000-01-01'),as.Date('2017-01-01'), 'year')
s <- setZ(s, date)
rast <- rasterToPoints(s)
dd <- data.frame(Layer = names(s), dttm = as.Date(getZ(s)))
wtavg <- rast %>%
as_data_frame() %>%
rename(lon = x, lat = y) %>%
gather(Layer, wintavg, -lon, -lat) %>%
left_join(dd, by = "Layer") %>%
dplyr::select(lon, lat, dttm, wintavg)
请总是包括一个自成一体的可复制的例子。
library(raster)
f <- system.file("external/rlogo.grd", package="raster")
ff <- c(f, f, f)
你可以做一些类似这样的事情
x <- lapply(ff, function(i) {
b <- brick(i)
data.frame(rasterToPoints(b))
})
y <- do.call(cbind, x)
colnames(y) <- as.Date('2000-01-01') + 0:(ncol(y)-1)
y <- cbind(coordinates(brick(ff[1])), y)
y[1:2, 1:5]
# x y 2000-01-01 2000-01-02 2000-01-03
#1 0.5 76.5 0.5 76.5 255
#2 1.5 76.5 1.5 76.5 255