在R中发布同名的马赛克图像

问题描述

你好,我有4个包含modis图像的文件夹,每个文件夹都有以相同方式命名的时间序列图像,例如:

Folder 1 :
MCD19A2_Optical_Depth_047_2019_032.tif
MCD19A2_Optical_Depth_047_2019_033.tif
MCD19A2_Optical_Depth_047_2019_034.tif
MCD19A2_Optical_Depth_047_2019_035.tif
MCD19A2_Optical_Depth_047_2019_036.tif
MCD19A2_Optical_Depth_047_2019_037.tif
...

Folder 2 :
MCD19A2_Optical_Depth_047_2019_032.tif
MCD19A2_Optical_Depth_047_2019_033.tif
MCD19A2_Optical_Depth_047_2019_034.tif
MCD19A2_Optical_Depth_047_2019_035.tif
MCD19A2_Optical_Depth_047_2019_036.tif
MCD19A2_Optical_Depth_047_2019_037.tif
...

Folder 3 :
MCD19A2_Optical_Depth_047_2019_032.tif
MCD19A2_Optical_Depth_047_2019_033.tif
MCD19A2_Optical_Depth_047_2019_034.tif
MCD19A2_Optical_Depth_047_2019_035.tif
MCD19A2_Optical_Depth_047_2019_036.tif
MCD19A2_Optical_Depth_047_2019_037.tif
...

Folder 4 :
MCD19A2_Optical_Depth_047_2019_032.tif
MCD19A2_Optical_Depth_047_2019_033.tif
MCD19A2_Optical_Depth_047_2019_034.tif
MCD19A2_Optical_Depth_047_2019_035.tif
MCD19A2_Optical_Depth_047_2019_036.tif
MCD19A2_Optical_Depth_047_2019_037.tif
...

我想知道如何在R中将4个Modis图像MCD19A2_Optical_Depth_047_2019_032.tif以及4个MCD19A2_Optical_Depth_047_2019_033.tif一起拼接...

在公历中,其公历日期与上述公历日期不同

解决方法

最好张贴一些您尝试过的代码,以便提出更好的建议。我认为您可以尝试以下方法:

dirNames <- c(paste('Folder',1:4))
filesNames <- c("MCD19A2_Optical_Depth_047_2019_032.tif","MCD19A2_Optical_Depth_047_2019_033.tif","MCD19A2_Optical_Depth_047_2019_034.tif","MCD19A2_Optical_Depth_047_2019_035.tif","MCD19A2_Optical_Depth_047_2019_036.tif","MCD19A2_Optical_Depth_047_2019_037.tif","MCD19A2_Optical_Depth_047_2019_038.tif")

filesRast <- stringr::str_c(rep(dirNames,length(filesNames)),'/',filesNames)

filesFolders <-lapply(dirNames,function(x) {
                        y <- filesRast[stringr::str_detect(pattern = x,string = filesRast)]
                        y <- sort(y)
                        })

for(i in 1:length(dirNames)){
  name <- lapply(filesFolders,function(x) x[i])
  dateOrig <- gsub('_','',gsub(paste0('.*MCD19A2_Optical_Depth_047_|.tif'),name[1]))
  dateGreg <- as.Date(dateOrig,"%y%j")
  r <- raster::raster(name[1])
  for(j in 2:length(name)){
    r <- raster::mosaic(r,raster::raster(name[i]))
  }
  raster::writeRaster(r,paste0('out/folder/','MCD19A2_mosaic_',dateGreg,'.tif'))
}

请注意,filesNames是我从您的示例中复制的字符向量。购买时,您应该使用类似list.files('/folder/where/tif/are',pattern='.tif$')的名称来提取文件夹中的所有名称。