-1

我有大约 2000 个来自世界不同地区的光栅文件。其中一些来自同一天,另一些来自不同的日子。我想镶嵌/合并同一天的所有文件以按天创建“图片”(栅格)。

所有文件的名称都以“MOD13A3.A2000”开头,然后是捕获图像的年份,然后是其他不重要的内容。我想做的事情是把所有以相同名称开头的文件合并起来。

例如,我会在这里取前 4 个文件,因为它们以MOD13A3.A2000032...开头,合并它们并只有一个名为MOD13A3.A2000032的文件。然后获取其他 4 个以下文件,因为它们以MOD13A3.A2000061...开头,将它们合并并有另一个名为MOD13A3.A2000061的文件。

MOD13A3.A2000 032 .h12v13.006.2015138123528 //

MOD13A3.A2000 032 .h13v13.006.2015138123527 //

MOD13A3.A2000 032 .h13v14.006.2015138123528 //

MOD13A3.A2000 032 .h14v14.006.2015138123526 //

MOD13A3.A2000 061 .h12v13.006.2015136111214 //

MOD13A3.A2000 061 .h13v13.006.2015136111225 //

MOD13A3.A2000 061 .h13v14.006.2015136111218 //

MOD13A3.A2000 061 .h14v14.006.2015136111220 //

...

我一直在寻找其他论坛,但由于我对 R 编程完全陌生,所以我不太了解发布的代码。我曾考虑过创建一个 for 循环来更改文件名的开头,例如“MOD13A3.A2000”+i,但我不明白它的语法。我也找不到清楚的例子来说明如何像这样更改文件名。

如果有人可以解释代码,我会非常感激!

4

1 回答 1

0

我将从terra包开始:

library(terra)

r <- list.files(path = "rasters", pattern = "MOD13A3.A2000061.*", full.names = TRUE)
r <- lapply(r, rast)
r <- do.call(merge, r)

第一行创建具有特定模式的光栅文件列表,第二行将rast()功能应用于它们,第三行执行merge

填充自由以在文件名中为模式创建循环:list.files读取文件,然后获取substr()文件名并查找所有unique()字符串。

于 2022-02-23T21:11:28.330 回答