如何堆叠R中具有几乎完全相同范围的栅格

问题描述

我正在尝试堆叠多波段栅格。它们是通过ESA Sentinel 1预处理工具SNAP创建的。每个tif文件都没有分层。

我加载了两个栅格堆栈并尝试将它们堆叠:

rs1 <- raster::stack("example/rs1.tif")
rs2 <- raster::stack("example/rs2.tif")
RSStack <- stack(rs1,rs2)

然后我收到以下错误消息:

compareRaster(x)中的错误:程度不同

栅格堆栈的范围几乎相同:

> 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,y)
extent     : 8.183171,8.371817,48.49071,48.6949  (xmin,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 

如何将两者堆叠在一起?如何调整范围?

我尝试了什么: 我也有兴趣领域。因此,我尝试将两个堆栈裁剪到感兴趣的区域,然后尝试再次将它们堆栈:

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)

compareRaster(x)中的错误:程度不同

shp
class       : SpatialpolygonsDataFrame 
features    : 16 
extent      : 8.183144,48.49075,48.69491  (xmin,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,3442259.72286,5377409.4208,1.14669,1 
max values  :  16,76089100.06641,89693.52095,3451427.74745,5393682.39749,76858585.26953,76662.07157,3451416.96957,5393687.75063,2.57399,2.90065,1

有人可以解决吗?

解决方法

我可以看到您的栅格具有相同的坐标系(crs:+ proj = longlat + datum = WGS84 + no_defs),只是范围不同。首先,可以对其进行裁剪,然后可以使用resample包中的raster函数,如

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)