
Merge multiple SpatRasters to create a new SpatRaster object with a larger spatial extent. The SpatRasters must have the same origin and spatial resolution. In areas where the SpatRasters overlap, the values of the SpatRaster that is first in the sequence of arguments (or in the SpatRasterCollection) will be retained (unless first=FALSE
. Cells that are NA
are ignored unless na.rm=FALSE
There is a also a method for merging SpatVector with a data.frame; that is, to join the data.frame to the attribute table of the SpatVector.
# S4 method for SpatRaster,SpatRaster
merge(x, y, ..., first=TRUE, na.rm=TRUE, filename="", overwrite=FALSE, wopt=list())# S4 method for SpatRasterCollection,missing
merge(x, first=TRUE, na.rm=TRUE, filename="", ...)
# S4 method for SpatVector,data.frame
merge(x, y, ...)
SpatRaster or SpatVector
SpatRaster, SpatRasterCollection, or SpatVector
missing if x
is a SpatRasterCollection. SpatRaster if x
is a SpatRaster. data.frame if x
is a SpatVector
if x
is a SpatRaster: additional objects of the same class as x
. If x
is a SpatRasterCollection: options for writing files as in writeRaster
. If x
is a SpatVector, the same arguments as in merge
logical. If TRUE
, in areas where rasters overlap, the first value is used. Otherwise the last value is used
logical. If TRUE
values that are NA
are ignored
character. Output filename
logical. If TRUE
, filename
is overwritten
list with named options for writing files as in writeRaster
Combining tiles with vrt
may be more efficient than using merge
. See mosaic
for averaging overlapping regions.
See classify
to merge a SpatRaster
and a data.frame
and union
to combine SpatExtent objects.
x <- rast(xmin=-110, xmax=-80, ymin=40, ymax=70, res=1, vals=1)
y <- rast(xmin=-85, xmax=-55, ymax=60, ymin=30, res=1, vals=2)
z <- rast(xmin=-60, xmax=-30, ymax=50, ymin=20, res=1, vals=3)
m1 <- merge(x, y, z)
m2 <- merge(z, y, x)
m3 <- merge(y, x, z)
# if you have many SpatRasters, it may be convenient
# to make a SpatRasterCollection
rlist <- list(x, y, z)
rsrc <- sprc(rlist)
m <- merge(rsrc)
## SpatVector with data.frame
f <- system.file("ex/lux.shp", package="terra")
p <- vect(f)
dfr <- data.frame(District=p$NAME_1, Canton=p$NAME_2, Value=round(runif(length(p), 100, 1000)))
dfr <- dfr[1:5, ]
pm <- merge(p, dfr, all.x=TRUE, by.x=c('NAME_1', 'NAME_2'), by.y=c('District', 'Canton'))
pm
values(pm)
Run the code above in your browser using DataLab