2017-03-01 18 views
0

我正在做一些栅格计算,然后我想将结果写入新的tiff。但是,R中的writeRaster输出.tif没有在任何常用的图像处理软件中打开。任何建议请就我应该添加到我的代码,以纠正? 由于提前,来自writeRaster的tiff未打开

setwd() 

library(sp) 
library(raster) 
library(rgdal) 

band530.2 <- raster("TTC001270001.tif", band=2) 
band530.3 <- raster("TTC001270001.tif", band=3) 
band530 <- 4 * band530.2 + (band530.2 - band530.3) 

lf<- function(x,a,b) { 
    v <- getValues(x) 
    v <- a * v + b 
    x <- setValues(x, v) 
    return(x) 
} 

calib.band530 <- lf(band530, 0.0009842088, -0.04702277) 

writeRaster(calib.band530, filename="cTTC001270001.tif", format="GTiff", overwrite=TRUE) 
+0

你可以从你的'tiff'尝试'writeTiff'包。 – G5W

+0

@ G5W感谢您的建议。我尝试了'tiff'包中的'writeTIFF'。它在writeTIFF中给出了错误(calib.band530,“cTTC001270001.tif”):图像必须是矩阵或原始数字或实数的数组。我也尝试了'rtiff'包中的'writeTiff'。 writeTiff中的错误(calib.band530,“cTTC001270001.tif”):writeTiff需要pixmapRGB或矩阵,得到了RasterLayer。然后,我不知道如何将我的栅格图层转换为'writeTIFF'或'writeTiff'格式,而不会丢失像素信息。 – rafaexx

+0

您是否检查过calib.band530以查看非法图像值?也许在写作之前尝试在输出上加上限制。 –

回答

2

您的代码完全可用的地理TIFF是在ArcGIS就好开了。

如果你想查看一个正常的图像浏览器的输出,可以将其转换为常规光栅:

tiff("test.tif",dim(calib.band530)[2],dim(calib.band530)[1]) 
grid.raster(as.raster(calib.band530),interpolate=FALSE) 
dev.off() 

这将消除地理空间信息。

要创建可视化的地理信息图像,您需要重新调整数据(如果您希望它可以被人类查看),然后为色彩空间添加一个参数。这个工作对我来说:

calib.band_rezero <- calib.band530 - cellStats(calib.band530,min) 
calib.band_stretch <- calib.band_rezero/cellStats(calib.band_rezero,max) *254 
writeRaster(calib.band_stretch, filename="cTTC001270001_viewable.tif", format="GTiff",datatype='INT1U', overwrite=TRUE) 

只是增加了色彩空间参数将使它在图像查看器打开,但可能会看着黑色:

writeRaster(calib.band530, filename="cTTC001270001.tif", format="GTiff",datatype='INT1U', overwrite=TRUE) 
+0

这是正确的答案。 Geotiff通常不会在照片查看器中显示。 – SeldomSeenSlim