【问题标题】:calcul of the mean of every 6 rasters layer and name of this files计算每 6 个栅格图层的平均值和此文件的名称
【发布时间】:2018-07-23 03:50:10
【问题描述】:

我在一个文件夹中合并了 28 个栅格文件。我想做 3 个第一个栅格的平均值,然后是其他 3 个栅格的平均值,等等。然后,我应该获得 9 个栅格。我想按月份命名它们。我希望我的第一个栅格图层命名为 Tmin-2010-01-15,我的第二个栅格图层命名为“Tmin-2010-02-15”,...,最后一个和九个栅格图层命名为“Tmin-2010-09-15” '。我写了下面的代码。我没有任何错误信息但我看不到任何结果所以我不知道代码的逻辑是否良好以及如何处理。

感谢您的帮助!

setwd("/Users/lisemontefiore/Documents/Data/Climate Data/test2") 

我堆叠了我的栅格

bands <-list.files(path="xxx",pattern="*.tif",full.names=TRUE)
data_stack <- stack(bands) 

我定义了参数 n=栅格层数,m=我想要收集的栅格数来做平均值

n<- 28
m<-3
groupn=function(n,m){rep(1:m,rep(n/m,m))}
group3=groupn(28, 3)
f=function(v){tapply(v, group3, mean)}
b=calc(data_stack, f)

我定义了由函数创建的文件的名称并编写栅格

    months<- seq(from=as.Date("2010-01-15"),
                 to= as.Date("2010-09-15"),
                 by='month')
    for (i in seq_along(months))
         {writeRaster <- file.path("b", 
                                   paste('Tmin',months[i], sep=''),
                                   "GTiff")

【问题讨论】:

    标签: r bash file loops raster


    【解决方案1】:

    您可以执行以下操作,而不是计算:

     b <- stackApply(b, group3, mean)
    

    但是没有输出,因为你没有调用 writeRaster 你需要这样的东西:

    months <- seq(from=as.Date("2010-01-15"), to= as.Date("2010-09-15"), by='month')
    ff <- paste0('Tmin', months, '.tif')
    
    for (i in seq_along(months)) {
        writeRaster(b[[i]]], ff[[i]])
    }   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 2021-03-03
      • 2018-07-27
      • 2019-11-15
      • 2020-11-21
      • 2014-12-08
      相关资源
      最近更新 更多