Dear list, I am exploring the different options for reading parts of large imagery object in stars, as discussed here: https://r-spatial.github.io/stars/articles/proxy.html My ultimate goal is to read into RAM only a clipped portion of a large raster (well, actually a raster stack, but taking baby steps here). My immediate question: the `RasterIO` option of read_stars defines cell offsets and cell counts (*Size). Is there a straightforward way to calculate these values given extent information? Reproducible example (mostly taken from here: https://www.r-spatial.org/r/2018/03/22/stars2.html): library(stars) tif <- system.file("tif/L7_ETMs.tif", package = "stars") x <- read_stars(tif) # read entire tif into ram x <- x[,,,1] #get just one layer for now # calculate a circular polygon at the center of the raster pol <- x %>% st_bbox() %>% st_as_sfc() %>% st_centroid() %>% st_buffer(500) plot(x) # interestingly, I don't think the circle is in the right place when plotted plot(st_geometry(pol), add = TRUE, border = "red") # this is what I'd like to be able to restrict to what is read in memory: plot(x[pol]) ## read only portion of tif using proxy object x <- read_stars(tif, proxy = TRUE) x <- x[,,,1] y <- st_as_stars(x[pol]) plot(y) # this is cropped to the extent (but not the circle - let's not worry about that right now) Question: can I do the equivalent with the RasterIO options in stars? Said another way, instead of setting up the proxy, can I map my extent object (or bounding box) directly to the cell count values needed for RasterIO? Thanks in advance for any tips. Tim
stars::RasterIO using extent info?
2 messages · Howard, Tim G (DEC), Edzer Pebesma
On 11/13/18 4:10 PM, Howard, Tim G (DEC) via R-sig-Geo wrote:
Dear list, I am exploring the different options for reading parts of large imagery object in stars, as discussed here: https://r-spatial.github.io/stars/articles/proxy.html My ultimate goal is to read into RAM only a clipped portion of a large raster (well, actually a raster stack, but taking baby steps here). My immediate question: the `RasterIO` option of read_stars defines cell offsets and cell counts (*Size). Is there a straightforward way to calculate these values given extent information? Reproducible example (mostly taken from here: https://www.r-spatial.org/r/2018/03/22/stars2.html): library(stars) tif <- system.file("tif/L7_ETMs.tif", package = "stars") x <- read_stars(tif) # read entire tif into ram x <- x[,,,1] #get just one layer for now # calculate a circular polygon at the center of the raster pol <- x %>% st_bbox() %>% st_as_sfc() %>% st_centroid() %>% st_buffer(500) plot(x) # interestingly, I don't think the circle is in the right place when plotted plot(st_geometry(pol), add = TRUE, border = "red") # this is what I'd like to be able to restrict to what is read in memory: plot(x[pol]) ## read only portion of tif using proxy object x <- read_stars(tif, proxy = TRUE) x <- x[,,,1] y <- st_as_stars(x[pol]) plot(y) # this is cropped to the extent (but not the circle - let's not worry about that right now) Question: can I do the equivalent with the RasterIO options in stars? Said another way, instead of setting up the proxy, can I map my extent object (or bounding box) directly to the cell count values needed for RasterIO?
stars can do the math, and so can you; it is explained here: https://r-spatial.github.io/stars/articles/data_model.html stars uses some functions directly from GDAL which it doesn't expose to the user, but there is no magic going on here.
Thanks in advance for any tips. Tim
_______________________________________________ R-sig-Geo mailing list R-sig-Geo at r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Edzer Pebesma Institute for Geoinformatics Heisenbergstrasse 2, 48151 Muenster, Germany Phone: +49 251 8333081 -------------- next part -------------- A non-text attachment was scrubbed... Name: pEpkey.asc Type: application/pgp-keys Size: 2472 bytes Desc: not available URL: <https://stat.ethz.ch/pipermail/r-sig-geo/attachments/20181113/c462b0d1/attachment.bin>