stars_subset {stars} | R Documentation |
subset stars objects
Description
subset stars objects
Usage
## 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 |
i |
first selector: integer, logical or character vector indicating attributes to select, or object of class |
downsample |
downsampling rate used in case |
value |
array of dimensions equal to those in |
... |
further (logical or integer vector) selectors, matched by order, to select on individual dimensions |
drop |
logical; if |
crop |
logical; if |
which |
character or integer; dimension(s) to be flipped |
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).
Value
st_flip
flips (reverts) the array values along the chosen dimension
without(s) changing the dimension properties
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)