对GCM数据使用'disaggregate'

时间:2015-03-24 03:45:03

标签: r raster

我有来自各种全球环流模型(GCM)的数据,我需要以更精细的分辨率来干扰0.5度像素的气候观测。我看到我可以使用分解因为这个函数不会改变像素值,因为'resample'确实使用了例如双线性方法。但是,输出仍与我的精细网格不匹配。

这是一个示例,其中包含我正在处理的文件的尺寸:

r = raster(ncols=720, nrows=360) #fine resolution grid
r[] = runif(1:100)
> r
class       : RasterLayer 
dimensions  : 360, 720, 259200  (nrow, ncol, ncell)
resolution  : 0.5, 0.5  (x, y)
extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
data source : in memory
names       : layer 
values      : 0.0159161, 0.9876637  (min, max)

s = raster(ncols=192, nrows=145) #dimensions of one of the GCM
s[] = runif(1:10)
> s
class       : RasterLayer 
dimensions  : 145, 192, 27840  (nrow, ncol, ncell)
resolution  : 1.875, 1.241379  (x, y)
extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
data source : in memory
names       : layer 
values      : 0.03861309, 0.9744665  (min, max)


d=disaggregate(s, fact=c(3.75,2.482759)) #fact equals r/s for cols and rows
> d
class       : RasterLayer 
dimensions  : 290, 768, 222720  (nrow, ncol, ncell)
resolution  : 0.46875, 0.6206897  (x, y)
extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
data source : in memory
names       : layer 
values      : 0.03861309, 0.9744665  (min, max)

'd'的尺寸不等于'r'的尺寸,所以我无法使用2个网格进行操作。我并不打算插值像素值。那么,实现GCM数据分解的最佳方法是什么?

提前致谢。

1 个答案:

答案 0 :(得分:2)

下面的代码应该有帮助 - 它使用聚合到最接近的整数缩放,然后重新采样以完全匹配其他栅格的空间特征:

r = raster(ncols=720, nrows=360) #fine resolution grid
r[] = runif(1:100)

s = raster(ncols=192, nrows=145) #dimensions of one of the GCM
s[] = runif(1:10)

d=disaggregate(s, fact=c(round(dim(r)[1]/dim(s)[1]),round(dim(r)[2]/dim(s)[2])), method='') #fact equals r/s for cols and rows
e=resample(d, r,  method="ngb")

但是有一些警告/警告:如果你想拥有与原始栅格相同的值,请使用method =''否则它会插入。但最重要的是看你的r和s栅格之间的纵横比,它们是不一样的:dim(r)[1] / dim(s)[1]!= dim(r)[2] / dim(s) [2])。我会仔细检查原始数据,因为如果在分辨率,投影或范围方面存在差异,您将无法从上述步骤中获得所需内容。