[R-sig-Geo] Set single raster to NA where values of raster stack are NA
Robert J. Hijmans
r.hijmans at gmail.com
Mon Apr 29 06:47:13 CEST 2013
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
More information about the R-sig-Geo
mailing list