Mask from raster with less RAM
On Wed, 12 Aug 2020, Frederico Faleiro wrote:
Hi guys, thank you for your reply. Jaime, I have tried, but I can't install rgdal needed to use raster and apparently other people too ( https://stackoverflow.com/questions/57617895/how-to-install-rgdal-and-or-upload-raster-on-google-collaboration). Do you have a solution?
Use CRAN Windows or MacOS binaries, or install the system requirements. Unless you can do that, for example because you do not control the platform you are using (are you working on a cloud instance?), do not install packages needing external software from source.
Hugo, I need the mask in vector format because the rasters have different resolutions, so I can't use raster as a mask. I have modified the reprex to be more precise about it (see below).
Please use GRASS. What you are trying to do is something that has "just worked" in GRASS since it was first created. GRASS can be run from the shell, from Python and from R (rgrass7). Or use SAGA, another fast raster processor. Both mask from raster directly. Write a shell script for GRASS to resample your rasters, mask them, and complete. You can also use GRASS and SAGA from QGIS. You might use Python or R to make file name handling "easier" than in a script. Neither GRASS nor SAGA use much memory unless rasters are huge, and then they are lean. Roger
Steve, I think this approach has the same issue of Hugo Costa. I don't have
the polygon of the mask, so I am trying to create one to apply in the other
rasters of different resolutions.
# 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
# raster of different resolution
res2 <- res(r) + 10
r2 <- raster(extent(r), resolution = res2)
r2[ ] <- 1
# apply the mask
r2.mask <- mask(r2, pol)
# plot
par(mfrow = c(1, 3))
plot(r)
plot(r2)
plot(r2.mask)
Cheers!
Em ter., 11 de ago. de 2020 ?s 19:26, Stephen Stewart <
stephen.stewart85 at gmail.com> escreveu:
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 at 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 at r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo
[[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
Roger Bivand Department of Economics, Norwegian School of Economics, Helleveien 30, N-5045 Bergen, Norway. voice: +47 55 95 93 55; e-mail: Roger.Bivand at nhh.no https://orcid.org/0000-0003-2392-6140 https://scholar.google.no/citations?user=AWeghB0AAAAJ&hl=en