J'ai quelques grands rasters (~ 110 Mo chacun) Je veux effectuer des calculs raster sur. Pour les besoins de cet exemple, je veux faire la moyenne des fichiers SNDPPT_M_sl1_1km_ll.tif
et SNDPPT_M_sl2_1km_ll.tif
, disponible au this website. En réalité, les maths sont un peu plus complexes (multiplication et division de plusieurs rasters).R- Mathématiques raster tout en préservant le format entier
Les deux rasters d'entrée sont des données entières (INT1U), et j'aimerais que la sortie soit également INT1U. Cependant, chaque fois que j'essaie de faire un calcul raster, il crée des fichiers temporaires intermédiaires au format virgule flottante dont la taille est très grande. Je travaille sur un ordinateur portable avec environ 7 Go d'espace disque libre, qui est rempli avant que le calcul est terminé.
# load packages
require(raster)
## script control
# which property?
prop <- "SNDPPT"
# load layers
r.1 <- raster(paste0("1raw/", prop, "_M_sl1_1km_ll.tif"))
r.2 <- raster(paste0("1raw/", prop, "_M_sl2_1km_ll.tif"))
# allocate space for output raster - this is about 100 MB (same size as input files)
r.out <- writeRaster(r.1,
filename=paste0("2derived/", prop, "_M_meanTop200cm_1km_ll.tif"),
datatype="INT1U")
# perform raster math calculation
r.out <- integer(round((r.out+r.2)/2))
# at this point, my hard drive fills due to temporary files > 7 GB in size
qui le sait d'une solution de contournement pour réaliser des opérations mathématiques de trame en R avec entrée entier et les fichiers de sortie tout en minimisant ou en évitant les fichiers intermédiaires très importants?
Je ne suis pas familier avec le paquet raster, mais pourriez-vous essayer si r.out <- (r.out + r.2)% /% 2) fonctionne? (Ce n'est pas exactement ce que vous voulez, mais fermez) –