【发布时间】:2019-04-15 07:41:42
【问题描述】:
我正在尝试通过划分为文件夹的 GeoTIFF 文件从 R 程序 Raster 应用一个简单的函数。
我的文件组织在一个名为“GeoTIFFs”的文件夹中,其中包含名为“a1”、“a2”...等的子文件夹。我的目标是遍历每个文件,并将 GeoTIFFs 文件夹中每个 .tif 文件的所有栅格值 3 更改为值 1。
这是我迄今为止编写的一些代码。它有很多问题。
我知道我应该提供示例数据,但我不知道如何在文件夹中模拟光栅文件,这是我的问题的本质。
library(raster)
files = dir('./GeoTIFFs', pattern = '.tif', recursive = TRUE, full.names = TRUE))
nr <- vector("list", length(files))
names(nr) <- files
for (i in 1:length(files)) {
tmp <- raster(files[i])
df <- data.frame(id=3, v=1)
nr[[i]] <- subs(tmp, df, subsWithNA=FALSE)}
此代码成功导入我的所有文件 (n=370),但它立即在 for 循环处停止并出现此错误:
Error in .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer", :
Cannot create a RasterLayer object from this file. (file does not exist)
我很确定这是因为 R 认为文件名是 'a1/geotiff_example.tif' 而不是 'geotiff_example.tif'。我还认为其余的代码可能不起作用(替换函数除外,它应该),所以我喜欢关于如何执行这个(可以说非常简单)任务的建议。非常感谢。
【问题讨论】: