
Extract raster values at points.
extract_points.RdSamples a raster at points via gdalraster::pixel_extract(), which reads
only the blocks containing points. Accepts anything that function accepts
(a path or a GDALRaster, passed through untouched) plus a garry
LazyRaster/LazyDataset that is already materialised – i.e. one
whose graph is a bare source over local files, as materialise()
returns.
Arguments
- raster
A
LazyRaster,LazyDataset, raster path, orGDALRasterobject.- xy
Points: a
wk::xy()vector (its CRS suppliesxy_srs), or a two-column matrix/data frame as gdalraster expects.- bands
Bands to extract (default all).
- interp
Interpolation:
NULL/"nearest"(default),"bilinear","cubic","cubicspline".- ...
Passed to
gdalraster::pixel_extract()(krnl_dim,xy_srs,max_ram,as_data_frame).
Value
As gdalraster::pixel_extract(): a matrix, or a data frame with
as_data_frame = TRUE.
Details
An unmaterialised pipeline is an error, not a silent cube write. Getting pixels onto disk costs real time and space, and the cube is almost always wanted again (for the predict pass, say), so the caller should own that step:
cube <- materialise(pipeline) # explicit, reusable
vals <- extract_points(cube, pts)xy may be a wk::xy() point vector, in which case its CRS supplies
xy_srs and GDAL reprojects as needed; a matrix or data frame behaves
exactly as in gdalraster.
Examples
if (FALSE) { # \dontrun{
pts <- wk::xy(c(512300, 514800), c(4600100, 4601900), crs = "EPSG:32632")
cube <- materialise(composite)
extract_points(cube, pts, interp = "bilinear")
extract_points("composite.tif", pts) # a path works too
} # }