2017-03-01 2 views
0

Je fais quelques calculs raster et ensuite je voudrais écrire les résultats à un nouveau tiff. Cependant, la sortie .tif de writeRaster dans R ne s'ouvre dans aucun des logiciels de visualisation d'image couramment utilisés. Toute suggestion s'il vous plaît sur ce que je devrais ajouter à mon code afin de corriger cela? Merci à l'avance,tiff de writeRaster n'ouvre pas

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

Vous pouvez essayer 'writeTiff' du' tiff' paquet. – G5W

+0

@ G5W Merci pour votre suggestion. J'ai essayé 'writeTIFF' du paquet' tiff'. Il donne Error dans writeTIFF (calib.band530, "cTTC001270001.tif"): l'image doit être une matrice ou un tableau de nombres bruts ou réels. J'ai également essayé 'writeTiff' du paquet' rtiff'. Erreur dans writeTiff (calib.band530, "cTTC001270001.tif"): writeTiff attend un pixmapRGB ou une matrice, obtenu RasterLayer. Ensuite, je ne sais pas comment je pourrais convertir ma couche raster au format «writeTIFF» ou «writeTiff», sans manquer d'informations sur les pixels. – rafaexx

+0

Avez-vous vérifié calib.band530 pour des valeurs d'image illégales? Peut-être essayer de mettre des limites sur la sortie avant d'écrire. –

Répondre

2

Votre code fait un géo-tiff parfaitement utilisable qui a ouvert dans ArcGIS très bien.

Si vous voulez afficher la sortie dans une visionneuse d'image normale, vous pouvez le convertir en une trame régulière:

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

Cela permettra d'éliminer l'information géospatiale.

Pour créer un géo-tiff visible, vous devez redimensionner les données si vous souhaitez qu'elles soient visibles par les humains, puis ajoutez un paramètre supplémentaire pour l'espace colorimétrique. Cela fonctionne pour moi:

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) 

Il suffit d'ajouter le paramètre d'espace couleur, il sera ouvert dans une visionneuse d'image, mais sera probablement noir:

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

Ceci est la bonne réponse. Geotiff ne s'affichera généralement pas dans la visionneuse de photos. – SeldomSeenSlim