stars_subset function

subset stars objects

subset stars objects

## S3 replacement method for class 'stars_proxy' x[i, downsample = 0] <- value ## S3 method for class 'stars' x[i = TRUE, ..., drop = FALSE, crop = !is_curvilinear(x)] ## S3 replacement method for class 'stars' x[i] <- value st_flip(x, which = 1)

Arguments

  • x: object of class stars
  • i: first selector: integer, logical or character vector indicating attributes to select, or object of class sf, sfc, bbox, or stars used as spatial selector; see details
  • downsample: downsampling rate used in case i is a stars_proxy object
  • value: array of dimensions equal to those in x, or a vector or value that will be recycled to such an array
  • ...: further (logical or integer vector) selectors, matched by order, to select on individual dimensions
  • drop: logical; if TRUE, degenerate dimensions (with only one value) are dropped
  • crop: logical; if TRUE and parameter i is a spatial geometry (sf or sfc) object, the extent (bounding box) of the result is cropped to match the extent of i using st_crop . Cropping curvilinear grids is not supported.
  • which: character or integer; dimension(s) to be flipped

Returns

st_flip flips (reverts) the array values along the chosen dimension without(s) changing the dimension properties

Details

If i is an object of class sf, sfc or bbox, the spatial subset covering this geometry is selected, possibly followed by cropping the extent. Array values for which the cell centre is not inside the geometry are assigned NA. If i is of class stars, and attributes of i are logical, cells in x corresponding to NA or FALSE cells in i are assigned an NA. Dimension ranges containing negative values or NA may be partially supported.

in an assignment (or replacement form, [<-), argument i needs to be either (i) a stars object with logical attribute(s) that has dimensions matching (possibly after recycling) those of x, in which case the TRUE cells will be replaced and i and/or value will be recycled to the dimensions of the arrays in x, or (ii) a length-one integer or character vector indicating which array to replace, in which case value may be stars object or a vector or array (that will be recycled).

Examples

tif = system.file("tif/L7_ETMs.tif", package = "stars") x = read_stars(tif) x[,,,1:3] # select bands x[,1:100,100:200,] # select x and y by range x["L7_ETMs.tif"] # select attribute xy = structure(list(x = c(293253.999046018, 296400.196497684), y = c(9113801.64775462, 9111328.49619133)), .Names = c("x", "y")) pts = st_as_sf(data.frame(do.call(cbind, xy)), coords = c("x", "y"), crs = st_crs(x)) image(x, axes = TRUE) plot(st_as_sfc(st_bbox(pts)), col = NA, add = TRUE) bb = st_bbox(pts) (xx = x[bb]) image(xx) plot(st_as_sfc(bb), add = TRUE, col = NA) image(x) pt = st_point(c(x = 290462.103109179, y = 9114202.32594085)) buf = st_buffer(st_sfc(pt, crs = st_crs(x)), 1500) plot(buf, add = TRUE) buf = st_sfc(st_polygon(list(st_buffer(pt, 1500)[[1]], st_buffer(pt, 1000)[[1]])), crs = st_crs(x)) image(x[buf]) plot(buf, add = TRUE, col = NA) image(x[buf, crop=FALSE]) plot(buf, add = TRUE, col = NA) # with i of class stars: x[x > 75] # generates lots of NA's; pattern for each band x[x[,,,1] > 75] # recycles a single band template for all bands x = read_stars(tif) # replace, using a logical stars selector: cuts all values above 90 to 90 x[x > 90] = 90 # replace a single attribute when there are more than one: s = split(x) names(s) = paste0("band", 1:6) # rescale only band 1: s[1] = s[1] * 0.75 # rescale only attribute named "band2": s["band2"] = s["band2"] * 0.85 # create a new attribute from a numeric vector: s["rnorm"] = rnorm(prod(dim(s))) s lc = read_stars(system.file("tif/lc.tif", package = "stars")) x = c(orig = lc, flip_x = st_flip(lc, "x"), flip_y = st_flip(lc, "y"), flip_xy = st_flip(lc, c("x", "y")), along = 3) plot(x)