I am trying to stack multiband raster. They were created through the ESA Sentinel 1 Preprocessing tool SNAP. Every tif file hast to layer.
I loaded two rasterstacks and tried to stack them:
rs1 <- raster::stack("example/rs1.tif")
rs2 <- raster::stack("example/rs2.tif")
rsstack <- stack(rs1,rs2)
Then I got the following error message:
Error in compareRaster(x) : different extent
The extent of the rasterstacks are nearly identical:
> rs1
class : RasterBrick
dimensions : 2273, 2100, 4773300, 2 (nrow, ncol, ncell, nlayers)
resolution : 8.983153e-05, 8.983153e-05 (x, y)
extent : 8.183134, 8.37178, 48.49076, 48.69495 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs
source : memory
names : S1A_IW_GRDH_1SDV_20180110T053421_20180110T053446_020088_0223E7_69E7_10.1, S1A_IW_GRDH_1SDV_20180110T053421_20180110T053446_020088_0223E7_69E7_10.2
min values : 1.729380e-07, 1.077101e-06
max values : 11.63158, 109.76797
> rs2
class : RasterBrick
dimensions : 2273, 2100, 4773300, 2 (nrow, ncol, ncell, nlayers)
resolution : 8.983153e-05, 8.983153e-05 (x, y)
extent : 8.183171, 8.371817, 48.49071, 48.6949 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs
source : memory
names : S1A_IW_GRDH_1SDV_20180106T171534_20180106T171559_020037_02223E_CE2A_10.1, S1A_IW_GRDH_1SDV_20180106T171534_20180106T171559_020037_02223E_CE2A_10.2
min values : 8.244981e-08, 5.691331e-06
max values : 6.012002, 64.965996
What can I do to stack the two together? How can I adjust the extent to the other?
What I tried: I also have an area of interest. SO I tried to crop both stacks to that area of interest an tried to stack them again:
shp <- readOGR(dsn=path.expand(example/area.shp)))
shp <- sp::spTransform(shp, CRS(proj4string(rs[[1]])))
rs1 <- raster::crop(rs1,shp)
rs2 <- raster::crop(rs2,shp)
rsstack <- stack(rsstack,r2)
Error in compareRaster(x) : different extent
shp
class : SpatialPolygonsDataFrame
features : 16
extent : 8.183144, 8.371817, 48.49075, 48.69491 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs
variables : 14
names : fid, Area, BoundLen, CentX, CentY, AreaIncI, BoundNotIn, CentXNotIn, CentYNotIn, PointInPol, PointInPo1, CompactRat, CompactRa1, rast
min values : 1, 1440.64063, 168.67161, 3442255.57469, 5377418.66407, 1440.64063, 168.67161, 3442255.57469, 5377418.66407, 3442259.72286, 5377409.4208, 1.14669, 1.14669, 1
max values : 16, 76089100.06641, 89693.52095, 3451427.74745, 5393682.39749, 76858585.26953, 76662.07157, 3451427.74745, 5393682.39749, 3451416.96957, 5393687.75063, 2.57399, 2.90065, 1
Does anyone have a solution?
I can see that your rasters are having the same coordinate system (crs : +proj=longlat +datum=WGS84 +no_defs) only extent is different. First, you can crop it and then you can use resample
function from raster
package like
library(raster)
#Crop the raster
rs1 <- raster::crop(rs1,shp)
rs2 <- raster::crop(rs2,shp)
#Conversion of rasters into same extent
rs2_resampled <- resample(rs2, rs1, method='bilinear')
#Stack the rasters
rsstack <- stack(rs1,rs2_resampled)