0

首先,如果在其他地方对此进行了讨论,我深表歉意;也许我使用了错误的搜索术语,但我觉得已经使用了“R”、“矩阵”、“调整大小”、“重新采样”等所有可能的组合,并且对 R 代码语言还是相当陌生。

我有一个矩阵 A,带有“x”和“y”的附加列表,表示矩阵中每个“像素”中心的纬度/经度位置。每个像素大约为 4 x 7 公里。矩阵本身的值是降水值。

现在我还有另一个矩阵 B,它的像素更小,正方形像素更小(大约 1 x 1 公里)。在这个矩阵中,我还有每个像素中心的纬度/经度位置。

我现在要做的是调整矩阵 B 的大小以创建一个新的矩阵 C,使矩阵 C 的像素大小与矩阵 A 的像素大小相匹配(即 4 x 7 公里),由此所有中心的平均值位于矩阵 A 的一个像素内的矩阵 B 的像素将分配给新矩阵 C 中的像素。

4

1 回答 1

1

尝试光栅包中的aggregate功能。这是一个简单的例子:

R> library(raster)
R> x <- matrix(1:81, 9, 9)
R> x
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
 [1,]    1   10   19   28   37   46   55   64   73
 [2,]    2   11   20   29   38   47   56   65   74
 [3,]    3   12   21   30   39   48   57   66   75
 [4,]    4   13   22   31   40   49   58   67   76
 [5,]    5   14   23   32   41   50   59   68   77
 [6,]    6   15   24   33   42   51   60   69   78
 [7,]    7   16   25   34   43   52   61   70   79
 [8,]    8   17   26   35   44   53   62   71   80
 [9,]    9   18   27   36   45   54   63   72   81
R> r <- raster(x)
R> r
class       : RasterLayer 
dimensions  : 9, 9, 81  (nrow, ncol, ncell)
resolution  : 0.1111, 0.1111  (x, y)
extent      : 0, 1, 0, 1  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
data source : in memory
names       : layer 
values      : 1, 81  (min, max)

R> res <- aggregate(r, fact=3, fun=mean)
R> res
class       : RasterLayer 
dimensions  : 3, 3, 9  (nrow, ncol, ncell)
resolution  : 0.3333, 0.3333  (x, y)
extent      : 0, 1, 0, 1  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
data source : in memory
names       : layer 
values      : 11, 71  (min, max)

R> as.matrix(res)
     [,1] [,2] [,3]
[1,]   11   38   65
[2,]   14   41   68
[3,]   17   44   71

fact如果是具有两个整数值的向量,则可以指定不同的水平和垂直聚合因子。

于 2013-09-23T14:20:29.200 回答