An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20130428/80b5076c/attachment.pl>
Set single raster to NA where values of raster stack are NA
3 messages · Robert J. Hijmans, Andrew Vitale
Andrew,
I think that a good approach might be, for your polygons:
p <- rbind(p1, p2, p3, etc, makeUniqueIDs=TRUE)
test <- mask(r4, p, inverse=TRUE)
# but to follow your example:
# solution 1
s2 <- stack(r1, r2, r3, r4)
test.a.cool <- calc(s2, function(x){ m <- apply(x, 1, function(z)
any(is.na(z))); m[m] <- NA; m})
# solution 2
test <- overlay(r4, s, fun=function(x, y){x[apply(y, 1,
function(z)any(is.na(z)))] <- NA; x})
# much simpler, solution 3
ss <- sum(s)
test <- mask(r4, ss)
Best, Robert
On Sun, Apr 28, 2013 at 9:23 PM, Andrew Vitale <vitale232 at gmail.com> wrote:
I have two 30m x 30m raster files from which I would like to sample random
points. Prior to sampling, I would like to remove the clouded areas from
the images. I turned to R and Hijman and van Etten's Raster package for
the task.
Using the drawPoly(sp=TRUE) command, I drew in 18 different polygons. The
function did not seem to allow 18 polygons as one sp object, so I drew them
all separately. I then gave the polygons a proj4string matching the
rasters', and set them into a list. I ran the list through a lapply
function to convert them to rasters (using rasterize()) with the polygon
areas set to NA, and the rest of the image set to 1.
My end goal is one raster layer with the 18 areas set to NA, and the rest
of the extent set to 1. I have tried stacking the list of rasterized
polygons, and subsetting it to set a new raster to NA in the same areas.
My reproducible code is below.
r1 <- raster(nrow=50, ncol = 50)
r1[] <- 1
r1[4:10,] <- NA
r2 <- raster(nrow=50, ncol = 50)
r2[] <- 1
r2[9:15,] <- NA
r3 <- raster(nrow=50, ncol = 50)
r3[] <- 1
r3[24:39,] <- NA
r4 <- raster(nrow=50, ncol = 50)
r4[] <- 1
s <- stack(r1, r2, r3)
test.a.cool <- calc(s, function(x){r4[is.na(x)==1] <- NA})
For whatever reason, the darn testacool is a blank plot, where I'm aiming
to have it as a raster with all values except for the NAs in the stack, s,
equal to 1. In simple terms, a cloud mask.
Any tips?
Thanks.
--
*Andrew P. Vitale*
Masters Student
Department of Geography
University of Nevada, Reno
vitale232 at gmail.com
[[alternative HTML version deleted]]
_______________________________________________ R-sig-Geo mailing list R-sig-Geo at r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20130428/3ff347f1/attachment.pl>