| crop {gdalcubes} | R Documentation |
Crop data cube extent by space and/or time
Description
Create a proxy data cube, which crops a data cube by a spatial and/or temporal extent.
Usage
crop(cube, extent = NULL, iextent = NULL, snap = "near")
Arguments
cube |
source data cube |
extent |
list with numeric items left, right, top, bottom, and character items t0 and t1, or a subset thereof, see examples |
iextent |
list with length-two integer items named x, y, and t, defining the lower and upper boundaries as integer coordinates, see examples |
snap |
one of 'near', 'in', or 'out'; ignored if using |
Details
The new extent can be specified by spatial coordinates and datetime values (using the extent argument), or as zero-based integer indexes (using the iextent argument).
In the former case, extent expects a list with numeric items left, right, top, bottom, t0, and t1, or a subset thereof. In the latter case,
iextent is expected as a list with length-two integer vectors x, y, and t as items, defining the lower and upper cell indexes per dimension.
Notice that it is possible to crop only selected boundaries (e.g., only the right boundary) as missing boundaries in the extent or NA / NULL values in the iextent arguments are considered as "no change".
It is, however, not possible to mix arguments extent and iextent.
If extent is given, the snap argument can be used to define what happens if the new boundary falls within a data cube cell.
Note
This function returns a proxy object, i.e., it will not start any computations besides deriving the shape of the result.
Examples
# create image collection from example Landsat data only
# if not already done in other examples
if (!file.exists(file.path(tempdir(), "L8.db"))) {
L8_files <- list.files(system.file("L8NY18", package = "gdalcubes"),
".TIF", recursive = TRUE, full.names = TRUE)
create_image_collection(L8_files, "L8_L1TP", file.path(tempdir(), "L8.db"), quiet = TRUE)
}
L8.col = image_collection(file.path(tempdir(), "L8.db"))
v = cube_view(extent=list(left=388941.2, right=766552.4,
bottom=4345299, top=4744931, t0="2018-01", t1="2018-12"),
srs="EPSG:32618", nx = 497, ny=526, dt="P3M", aggregation = "median")
L8.cube = raster_cube(L8.col, v, mask=image_mask("BQA", bits=4, values=16))
L8.rgb = select_bands(L8.cube, c("B02", "B03", "B04"))
# crop by integer indexes
L8.cropped = crop(L8.rgb, iextent = list(x=c(0,400), y=c(0,400), t=c(1,1)))
# crop by spatiotemporal coordinates
L8.cropped = crop(L8.rgb, extent = list(left=388941.2, right=766552.4,
bottom=4345299, top=4744931, t0="2018-01", t1="2018-06"), snap = "in")
L8.cropped
L8.cropped = crop(L8.rgb, extent = list(left=388941.2, right=766552.4,
bottom=4345299, top=4744931, t0="2018-01", t1="2018-06"), snap = "near")
L8.cropped
plot(L8.cropped, rgb = 3:1, zlim=c(5000,10000))