Skip to content

stars::RasterIO using extent info?

2 messages · Howard, Tim G (DEC), Edzer Pebesma

#
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
#
On 11/13/18 4:10 PM, Howard, Tim G (DEC) via R-sig-Geo wrote:
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.