使用lat/lon坐标调整矩阵大小,使用R中的平均值将其调整为更大的预定义网格大小

使用lat/lon坐标调整矩阵大小,使用R中的平均值将其调整为更大的预定义网格大小,r,matrix,resize,coordinate,R,Matrix,Resize,Coordinate,首先,如果在别处讨论这个问题,我表示歉意;也许我使用了错误的搜索术语,但我觉得我已经使用了“R”、“矩阵”、“调整大小”、“重新采样”等所有可能的组合,并且对R代码语言还是相当陌生的 我有一个矩阵a,附有“x”和“y”的列表,表示矩阵中每个“像素”中心的横向/纵向位置。每个像素大约是4乘7公里。矩阵中的值本身就是沉淀值 现在我还有另一个矩阵B,它有更小的正方形像素(大约1×1公里)。对于这个矩阵,我还有每个像素中心的lat/lon位置 我现在要做的是调整矩阵B的大小,以创建一个新的矩阵C,从而使

首先,如果在别处讨论这个问题,我表示歉意;也许我使用了错误的搜索术语,但我觉得我已经使用了“R”、“矩阵”、“调整大小”、“重新采样”等所有可能的组合,并且对R代码语言还是相当陌生的

我有一个矩阵a,附有“x”和“y”的列表,表示矩阵中每个“像素”中心的横向/纵向位置。每个像素大约是4乘7公里。矩阵中的值本身就是沉淀值

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


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

请尝试软件包中的
聚合
功能。 下面是一个简单的例子:

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
R>库(光栅)
R> x 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 R
类别:光栅
尺寸:9、9、81(nrow、ncol、ncell)
分辨率:0.1111,0.1111(x,y)
范围:0,1,0,1(xmin,xmax,ymin,ymax)
库德。参考号:NA
数据源:内存中
名称:图层
值:1,81(最小值,最大值)
R> res res
类别:光栅
尺寸:3、3、9(nrow、ncol、ncell)
分辨率:0.3333,0.3333(x,y)
范围:0,1,0,1(xmin,xmax,ymin,ymax)
库德。参考号:NA
数据源:内存中
名称:图层
值:11,71(最小值,最大值)
R> as.矩阵(res)
[,1] [,2] [,3]
[1,]   11   38   65
[2,]   14   41   68
[3,]   17   44   71

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

为了保持OP中提到的原始坐标,您可以执行r。感谢您的帮助,非常感谢。我要聚合的光栅化矩阵现在是:>Bx_因子=257/89>y_因子=329/40>粗_B Ah.>我还是不明白。是否有办法通过聚合函数在x和y方向输入要创建的单元格数?请参阅光栅包中的“重采样”