在for循环中写入栅格时出错

时间:2017-06-21 16:00:19

标签: r for-loop raster

- 我是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; 非常感谢你的帮助!

0 个答案:

没有答案