merge.Rd
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, 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
SpatRaster or SpatVector
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
#> class : SpatVector
#> geometry : polygons
#> dimensions : 12, 7 (geometries, attributes)
#> extent : 5.74414, 6.528252, 49.44781, 50.18162 (xmin, xmax, ymin, ymax)
#> coord. ref. : lon/lat WGS 84 (EPSG:4326)
#> names : NAME_1 NAME_2 ID_1 ID_2 AREA POP Value
#> type : <chr> <chr> <num> <num> <num> <int> <num>
#> values : Diekirch Clervaux 1 1 312 18081 993
#> Diekirch Diekirch 1 2 218 32543 493
#> Diekirch Redange 1 3 259 18664 282
values(pm)
#> NAME_1 NAME_2 ID_1 ID_2 AREA POP Value
#> 1 Diekirch Clervaux 1 1 312 18081 993
#> 2 Diekirch Diekirch 1 2 218 32543 493
#> 3 Diekirch Redange 1 3 259 18664 282
#> 4 Diekirch Vianden 1 4 76 5163 967
#> 5 Diekirch Wiltz 1 5 263 16735 694
#> 6 Grevenmacher Echternach 2 6 188 18899 NA
#> 7 Grevenmacher Remich 2 7 129 22366 NA
#> 8 Grevenmacher Grevenmacher 2 12 210 29828 NA
#> 9 Luxembourg Capellen 3 8 185 48187 NA
#> 10 Luxembourg Esch-sur-Alzette 3 9 251 176820 NA
#> 11 Luxembourg Luxembourg 3 10 237 182607 NA
#> 12 Luxembourg Mersch 3 11 233 32112 NA