[R-sig-Geo] Error when combining raster and foreach packages
Lukas Lehnert
lukaslehnert at googlemail.com
Fri Aug 26 12:23:57 CEST 2016
Dear list members,
I tried to process a large GeoTIFF file in a blockwise manner (following the
vignette "Writing functions for large raster files").
I then combined the approach with a "foreeach"-loop to parallelize the
calculation on the raster data:
library(raster)
library(doMC)
library(foreach)
registerDoMC(3)
ra <- raster("dem.tif")
tr <- blockSize(ra)
outfile <- "test_2.tif"
res <- writeStart(raster(ra), outfile, overwrite = TRUE)
for (i in 1:tr$n)
{
v <- getValuesBlock(ra, row=tr$row[i], nrows=tr$nrows[i])
v2 <- foreach(i=1:length(v), .combine = 'c') %dopar% {
i*(-1)
}
res <- writeValues(res, v2, tr$row[i])
cat(round(i/tr$n*100, 2), "%\n")
}
res <- writeStop(res)
However, I get errors and warnings like the following ones:
ERROR 1: /tmp/Rtmpz6qEOE/xortest_2.tif:Failed to allocate memory for to read
TIFF directory (0 elements of 12 bytes each)
ERROR 1: TIFFReadDirectory:Failed to read directory at offset 4639232
Warning 1: TIFFFetchNormalTag:ASCII value for tag "GeoASCIIParams" contains
null byte in value; value incorrectly truncated during reading due to
implementation limitations
The errors are different each time I restart the process. If I do not use
foreach but a common for-loop, the errors do not occur. I tried several raster
files (large ones and small ones) and two different computers, but the problem
remains.
Does somebody has any idea, how to solve this problem?
Thank you in advance
Lukas
More information about the R-sig-Geo
mailing list