sp包中的R,想知道全网格对象的索引的含义

R in sp package, want to know the meaning of index for a fullgrid object

所以我正在研究这个 package:sp 中的不同对象, 现在,关注具有拓扑结构的点:空间像素及其完整网格形式:空间网格

attr = expand.grid(xc = 1:3, yc = 1:3)
grd.attr = data.frame(attr, z1 = 1:9, z2 = 9:1)
coordinates(grd.attr) = ~xc+yc
gridded(grd.attr)
gridded(grd.attr) = TRUE

经过这个操作,我们得到一个坐标为xc,yc的空间像素;和属性 z1,z2;然后我输入命令:

grd.attr[1:5, "z1"]

毫不奇怪,它给了我属性的前 5 个值 "z1" 但如果我通过以下方式将其更改为完整的网格形式:

fullgrid(grd.attr) = TRUE

突然,这个命令:

grd.attr[1:2, "z1"]

给出错误:

Error in matrix(idx, grd@cells.dim[2], grd@cells.dim[1], byrow = TRUE)[rows,  : no 'dimnames' attribute for array

好像是这个命令

grd.attr[1:2,-2, "z1"]

给我 z1 的前 6 个属性 但我没有得到它的第一个输入 x 和第二个输入 y 的确切含义?我认为它应该是矩阵的索引,但是这个矩阵是如何组织的?并有任何特定的顺序?

grd.attr[x,y,"attr_name"]

换句话说,这里x,y的确切含义是什么

所以我解决了这个问题: 全网格将根据您的坐标生成 matrix/array x 从最低值开始,y 从最高值开始 所以它应该像:

(1,3) (2,3) (3,3)

(1,2) (2,2) (3,2)

(1,1) (2,1) (3,1)

我们从原始数据框知道坐标和属性应该在:

7 8 9

4 5 6

1 2 3

所以如果我们输入

grd.attr[2,1,"z1"]

它会给出属性的第二行(y)和第一列(x),即4!

如果我们输入

grd.attr[2,3,"z1"]

它会给我们第二行第三列的属性,也就是6

以上均已验证无误