我想问一下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){}