[R-sig-Geo] Mask from raster with less RAM

Stephen Stewart @tephen@@tew@rt85 @end|ng |rom gm@||@com
Wed Aug 12 00:25:46 CEST 2020


Hi Frederico,

It may not solve all of your RAM issues, but in this situation I would skip
the rasterToPolygons (which is also usually very slow) and use raster math
to propagate NAs.

r <- raster(system.file("external/test.grd", package="raster"))
r[!is.na(r)] <- 1
# Can also be faster to do r = r / r, but add an offset (that cannot result
in 0) if you have valid 0s.
 r2 <- raster(extent(r), res(r))
r2[ ] <- 1
r2.mask <- r * r2

If you have a polygon to use as a mask, burn it in using the fasterize
package and then apply the above.

Hope that helps.

Cheers,

Steve

On Wed., 12 Aug. 2020, 6:43 am Frederico Faleiro, <fvfaleiro using gmail.com>
wrote:

> Dear all,
>
> I would like to generate a mask from a raster, but my workflow needs a lot
> of RAM to process big rasters. I need this polygon mask to use in another's
> rasters.
> Do you know another approach that needs less RAM?
>
> # reproducible example
> library(raster)
> # read data to create mask
> r <- raster(system.file("external/test.grd", package="raster"))
> r[!is.na(r)] <- 1
> pol <- rasterToPolygons(r, dissolve = T) #  a lot of RAM to process the
> data
> # apply the mask in another raster
>  r2 <- raster(extent(r), res(r))
> r2[ ] <- 1
> r2.mask <- mask(r2, pol)
>
> Cheers!
>
> --
> Frederico Faleiro
> Postdoctoral Researcher in the INCT-EECBio (https://www.eecbio.ufg.br/)
> Department of Ecology | Institute of Biological Science | Federal
> University of Goiás | Brazil
> RG: https://www.researchgate.net/profile/Frederico_Faleiro
> CV: http://lattes.cnpq.br/4926404840659003
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

	[[alternative HTML version deleted]]



More information about the R-sig-Geo mailing list