2016-06-28 65 views
1

我想將我的大型geotiff文件(4個RGBA圖塊)裁剪爲較小的圖塊。光柵包中的函數brick用於讀取光柵文件,而writeRaster用於寫入磁盤。但是,我無法用圖像查看器打開新文件。這是由於缺少ColorInterp標籤引起的。 我將柵格圖塊保存爲可通過圖像查看器查看的geotiff

a <- brick(old.tif) 
writeRaster(a, filename = new.tif) 

在old.tif和new.tif比較TIFF標籤。標籤BitsPerSample對於old.tif爲8,對於new.tif爲64。所以我更新了光柵數據類型爲INT1U,這應該是0-255

dataType(a) <- 'INT1U' 
writeRaster(a, filename = new.tif, dataType = 'INT1U') 

然而,標籤BitsPerSample仍然等於64 我現在的問題是我應該如何指定BitsPerSample到8

PS:此代碼是不是工作壓力太大

writeRaster(a, filename = new.tif, dataType = 'INT1U', BitsPerSample = 8) 

PPS:writeTIFF可以生成沒有crs信息的可查看tiff文件。

+0

比較舊文件和新文件的tiff標籤。新文件具有BitsPerSample(4 Short):64,64,64,64,應該是8. – Bangyou

+0

某些圖像查看器不能正確解釋多波段TIFF,特別是當數據類型高於8位無符號時。你在用什麼?嘗試以QGis或類似方式打開它。 – Benjamin

+0

我瞭解圖像可以在QGis和其他軟件中查看。但我原來的tif文件是RGBA,可以被任何圖像查看器查看。只是想用相同的8位創建新圖像。 – Bangyou

回答

0

使用GeoTiff,除非要偏離基本格式,否則不需要指定每個採樣的位數。例如,您可以使用GDT_Byte(0-255)爲每個採樣指定2位,以減少布爾圖像的文件大小。重新讀入時,它將被正確解釋爲GDT_Byte(通過大多數軟件)。但是,如果您的數據已經是GDT_Byte(INT1U),則沒有必要指定每個採樣的位數,它將默認爲所需的大小;如果您的數據已經是GDT_Byte(INT1U),則不需要指定每個採樣的位數。參數期望值小於「默認值」,例如:對於指定的8位格式爲1到7位,對於16位格式爲9到15位等。

請參閱NBITS參數GeoTiff圖像在這裏:http://www.gdal.org/frmt_gtiff.html

它也像BitsPerSample不是writeRaster有效參數,但它應該作爲一個創建選項進行傳遞,爲options=c("NBITS=n"),相同的語法GDAL使用R.

之外至於顏色解釋標籤,您可以在選項中指定:options=c("PHOTOMETRIC=RGB")。如果存在Alpha通道,則可以添加"ALPHA=YES"。這些都是上述鏈接中記錄的所有標準創建選項。