我有两个具有相同尺寸的二进制文件(栅格):第一个表示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)
答案 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包有很多替换方法(例如重新分类函数)。