- 我是R的初学者,我制作了一个脚本,我将.grd文件转换为for循环中的.tif文件(我有很多应该转换的.grd文件)。该脚本如下所示。
# Set your work directory
setwd("xxx")
library(rgdal)
library(sp)
library(raster)
# Data: .grd files in order to reproduce the code below
g1 <- raster(ncol=10, nrow=10)
vals <- 1:100
g1 <- setValues(g1, vals)
writeRaster(g1, filename="TEST_G1.grd", overwrite=TRUE)
g2 <- raster(ncol=50, nrow=50)
vals <- 1
g2 <- setValues(g2, vals)
writeRaster(g2, filename="TEST_G2.grd", overwrite=TRUE)
# Convert .grd to geotif in a for loop
rlist <- list.files(pattern=".grd$")
for (i in rlist)
{
#Read raster
x <- raster(rlist[i])
#make new file name
filename <- rlist[i]
n <- unlist(strsplit(filename, split='.', fixed=TRUE))[1]
name <- paste(n, ".tif", sep="")
#write the raster as GTiff
writeRaster(x, filename=name, format="GTiff", overwrite=TRUE)
}
我已分别在脚本中运行所有句子并设法获取geotif文件。但是,当我运行波瓣时,我收到以下错误:
.local(.Object,...)中的错误:
.rasterObjectFromFile中的错误(x,band = band,objecttype =&#34; RasterLayer&#34;,: 无法从此文件创建RasterLayer对象。 (文件不存在)
文件确实存在,当我单独运行最后一行时,tif文件被创建...所以我不明白循环有什么问题。 如果我写&#34; for(i in 1:2)&#34;代替&#34; for(i in rlist)&#34;有用。但我不想计算每个目录中的文件数量,这就是我试图使用&#34; for(i in rlist)&#34; 非常感谢你的帮助!