在 R 中发布具有相同名称的镶嵌图像
issue mosaicing images with the same name in 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 拼接在一起 ...
名字中的正常公历日期不是上面的儒略日
如果您 post 一些您尝试过的代码会更好,这样可以提出更好的建议。我想你可以尝试这样的事情:
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
是我从您的示例中复制的字符向量。 Buy 你应该使用 list.files('/folder/where/tif/are', pattern='.tif$')
之类的东西来提取文件夹中的所有名称。
你好,我有 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 拼接在一起 ...
名字中的正常公历日期不是上面的儒略日
如果您 post 一些您尝试过的代码会更好,这样可以提出更好的建议。我想你可以尝试这样的事情:
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
是我从您的示例中复制的字符向量。 Buy 你应该使用 list.files('/folder/where/tif/are', pattern='.tif$')
之类的东西来提取文件夹中的所有名称。