如何根据另一个二进制文件中的类计算一个二进制文件中变量的平均值?

时间:2013-02-22 19:08:42

标签: r binary raster

我有两个具有相同尺寸的二进制文件(栅格):第一个表示2个数据之间的相关性,第二个表示10个类别的土地覆盖图。我想根据土地覆盖类别取我的相关性的平均值。所以最后我们会得到一张与土地覆盖图相同的地图,但是有相关的平均值而不是类数。

以下是两个文件:

  1- to read the first file correlation map:

   conne <- file("C:\\corr.bin","rb")
  corr<- readBin(conne, numeric(), size=4,  n=1440*720, signed=TRUE)
  y<-t(matrix((data=corr), ncol=720, nrow=1440))
    r = raster(y)

2-阅读第二个文件土地覆盖图:

  conne <- file("C:\\land cover.bin","rb")
  over<- readBin(conne, integer(), size=1,  n=1440*720, signed=F)
  y1<-t(matrix((data=over), ncol=720, nrow=1440))
  r1 = raster(y1)

3 - 写结果:

     to.write = file(paste("/orcomplete.bin",sep=""),"wb")
     writeBin(as.double(results), to.write, size = 4)

2 个答案:

答案 0 :(得分:1)

这不会是这样的:

 tapply(y, y1, mean, na.rm=TRUE)

如果您希望与输入矩阵相同排列的类均值,请执行以下操作:

outmat <- matrix( ave( y, y1, FUN=mean, na.rm=TRUE), nrow(y), ncol(y) )

答案 1 :(得分:1)

如果landcover栅格具有您想要保留的地理参考特征(例如,投影信息),则可以使用栅格工具箱中的区域工具:

corr_raster <- raster('correlation raster filename')
land_raster <- raster('landcover raster filename')
zv <- zonal(corr_raster , land_raster, fun=mean)

然后,您所要做的就是将结果表中的平均值分配给landcover像素。 raster包有很多替换方法(例如重新分类函数)。