我正在处理一些总共有60个文件的GeoTiff栅格(可能更多),这些栅格相对较大:分辨率在30m res时大约为7800 x 7700,总文件大小约为120MB(Landsat 8图像)。我试图在六个这样的图像的堆栈上进行简单的数学方程式计算(请参见代码的结尾):
# create some artificial data
# this is used within a loop with all files (~60) in the directory
r <- raster(nrows=7801, ncols=7711)
r[] <- runif(ncell(r),0,65000)
s.dn <- stack(r,r,r,r,r,r)
# Define calibration factors
rad.mult.fact <- c(0.012852, 0.013161, 0.012128,
0.010227, 0.006258, 0.001556)
rad.add.fact <- c(-64.2618, -65.8048, -60.6386,
-51.1339, -31.2914)
#convert DN to TOA radiance
s.rad <- (s.dn * rad.mult.fact) + rad.add.fact
#write file
writeRaster(s.rad, filename='teste.tif', format="GTiff", overwrite=TRUE)
计算速度非常慢,在我的双核系统上使用8GB RAM大约需要10分钟。在计算过程中,我的临时目录上写有三个2.8GB的文件。最后,到最后我收到一个警告:
Warning message:
In (s.dn * rad.mult.fact) + rad.add.fact :
number of items to replace is not a multiple of replacement length
我想知道是否有办法优化该脚本?为什么在我的情况下计算速度如此之慢?是什么导致警告信息以及如何解决?
非常感谢!