Merge SpatRasters, or merge a SpatVector with a data.frame
merge.Rd
Merge multiple SpatRasters to create a new SpatRaster 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 also a method for merging SpatVector with a data.frame; that is, to join the data.frame to the attribute table of the SpatVector.
Usage
# S4 method for class 'SpatRaster,SpatRaster'
merge(x, y, ..., first=TRUE, na.rm=TRUE, filename="", overwrite=FALSE, wopt=list())
# S4 method for class 'SpatRasterCollection,missing'
merge(x, first=TRUE, na.rm=TRUE, filename="", ...)
# S4 method for class 'SpatVector,data.frame'
merge(x, y, ...)
Arguments
- x
SpatRaster, SpatRasterCollection, or SpatVector
- y
missing if
x
is a SpatRasterCollection. SpatRaster ifx
is a SpatRaster. data.frame ifx
is a SpatVector- ...
if
x
is a SpatRaster: additional objects of the same class asx
. Ifx
is a SpatRasterCollection: options for writing files as inwriteRaster
. Ifx
is a SpatVector, the same arguments as inmerge
- first
logical. If
TRUE
, in areas where rasters overlap, the first value is used. Otherwise the last value is used- na.rm
logical. If
TRUE
values that areNA
are ignored- filename
character. Output filename
- overwrite
logical. If
TRUE
,filename
is overwritten- wopt
list with named options for writing files as in
writeRaster
Examples
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 433
#> Diekirch Diekirch 1 2 218 32543 961
#> Diekirch Redange 1 3 259 18664 922
values(pm)
#> NAME_1 NAME_2 ID_1 ID_2 AREA POP Value
#> 1 Diekirch Clervaux 1 1 312 18081 433
#> 2 Diekirch Diekirch 1 2 218 32543 961
#> 3 Diekirch Redange 1 3 259 18664 922
#> 4 Diekirch Vianden 1 4 76 5163 841
#> 5 Diekirch Wiltz 1 5 263 16735 388
#> 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