我在工作目录中有Tiff格式的数百个卫星图像,首先必须乘以2,然后转换为IMG(ERDAS)格式,但与输入文件同名
例如:
输入:
MOD11A1_2009-04-01.LST_Day_1km.tiff
输出:
MOD11A1_2009-04-01.LST_Day_1km.img
所以,第一步是乘以2 然后将图像从tiff转换为IMG格式。
如果R编程专家可以帮助我这样做,我将非常感激。
提前致谢。
答案 0 :(得分:4)
您可以使用raster
包
library(raster)
input <- "MOD11A1_2009-04-01.LST_Day_1km.tif"
output <- gsub("tif", "img", input)
r <- raster(input)
r <- r * 2
writeRaster(r, output, format = "HFA")
您还可以使用循环处理所有百个文件
修改强>
正如@RobertH所指出的,我们可以使用filename
函数的calc
参数来简化此代码。
library(raster)
input <- "MOD11A1_2009-04-01.LST_Day_1km.tif"
output <- gsub("tif", "img", input)
r <- raster(input)
r <- calc(r, fun = function(x) x * 2, filename = output)
非常感谢@RobertH(对于raster
包也是如此)
答案 1 :(得分:2)
这是dickoa在循环中的解决方案:
library(raster)
input <- list.files(pattern='tif$')
output <- gsub("tif", "img", input)
for (i in seq(along=input)) {
r <- raster(input[i])
# using "2 byte unsigned integer" data type
r <- calc(r, fun = function(x) x * 2, datatype='INT2U', filename = output[i])
}