在R中迭代栅格

时间:2016-08-12 21:00:34

标签: r loops raster r-raster

我想问一下Raster包。

有没有办法迭代栅格值,而不转换值并从{1}到栅格最大值执行for

例如,在光栅波纹管中我需要对所有“1”值进行操作,而不是操作所有“2”值,而不是所有“5”值,最后是所有“7”值

library(raster)

myRaster = raster(matrix(c(1,2,5,1,2,7,5,7,1),3,3))

所以我现在正在做的是将光栅转换为:

myRaster = raster(matrix(c(1,2,3,1,2,4,3,4,1),3,3))

通过一个函数来规范化栅格值以使它们连续,但需要花费大量时间才能运行:

segmentNormalize <- function(imgSegMask){
    segValues = freq(imgSegMask)[,1]
    segNumber = length(segValues) #number of values in segMask
    if (segNumber != max(segValues)) {
        temp = imgSegMask
        for (i in 1:segNumber){
            print(paste("normalizing ", i, ' of ', segNumber, sep=''))
            imgSegMask[temp == segValues[i]] = i
        }
        rm(temp,i)
    }
    rm(segValues)
    return(imgSegMask)
}

有没有办法在其值中循环栅格?像for (i in myRaster){}那样不需要像

那样的连续性

segNumber = length(freq(imgSegMaskLvl1)[,1]) for (i in 1:segNumber){}

0 个答案:

没有答案