我有一個函數,它讀取作爲柵格磚對象的多波段圖像,遍歷各種計算的波段,然後將光柵寫入爲新的.tif。所有這些工作都很好,但新圖像文件的文件大小大約是原來圖像的4倍(我假設是4倍)。我想知道writeRaster()函數中是否存在一個我不知道的參數,或者如果有其他方法,我可以確保輸出圖像基本上與輸入文件大小相同。writeRaster輸出文件大小
原始文件大小爲134 MB;輸出範圍從471到530 MB左右,具體取決於格式。
簡化代碼:
library(rgdal)
library(raster)
path = "/Volumes/ENVI Standard Files/"
img = "qb_tile.img"
imageCorrection = function(path, img){
raster = brick(paste0(path, img))
raster = reclassify(raster, cbind(0, NA))
for(i in 1:[email protected]@nbands){
raster[[i]] = raster[[i]] - minValue(raster[[i]])
}
writeRaster(raster, paste0(path,img,"_process.tif"), format = "GTiff", overwrite=TRUE)
}
因此,輸入和輸出具有完全相同數量的像素和波段?因此,它的.img文件使用的壓縮比.tiff更好,或者.img文件以更低的精度存儲(如8位整數),而.tiff存儲4字節浮點....或者都。 sp :: GDALinfo對你的文件有什麼看法? – Spacedman
是的,這似乎是問題。 GDALinfo指示輸出寫入FLT4S,輸入作爲INT2U輸入。我試着改變輸出的數據類型,但除FLT4S之外的任何東西都會創建一個空白圖像(data = 0-1)。 – Danple
https://stat.ethz.ch/pipermail/r-sig-geo/2015-January/022246.html – Danple