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