2

我有两个具有相同维度的二进制文件(栅格):第一个表示 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)
4

2 回答 2

1

这不就是这样的吗:

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

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

outmat <- matrix( ave( y, y1, FUN=mean, na.rm=TRUE), nrow(y), ncol(y) )
于 2013-02-22T19:22:26.790 回答
1

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

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

然后您所要做的就是将结果表中的平均值分配给土地覆盖像素。raster 包有很多替代方法可以做到这一点(例如重新分类函数)。

于 2013-02-22T20:57:06.293 回答