重命名多个栅格的值,其名称在R中

时间:2014-02-28 15:08:35

标签: r raster

我正在尝试用R重新分类几个光栅文件 我的栅格文件包含物种范围,其中包含发生的单元格中的总范围值。其他单元格有NoData。这些文件的名称为(1,2,3 ......)。 现在我尝试用Rank来重新分类物种出现的细胞的值。 我试着循环重新分类功能但没有成功... 提前谢谢!

1 个答案:

答案 0 :(得分:3)

假设您有一个栅格代表单个物种的存在/不存在。您还知道该特定物种的面积范围和范围(表示为出现次数)。对于存在该物种的每个细胞,您已经填充了总物种数。

让我们说这个物种是在400个细胞中的50个中检测到的。

通过在50个随机细胞上存在表达的物种出现。

e1 <- extent(0,10,0,10)
r1 <- raster(extent(0,10,0,10))
res(r1) <- 0.5
r1[1:ncell(r1)] <- NA
r1[sample(ncell(r1), 50, rep = F)] <- 50    
plot(r1)

r1

但是你可能将这个rasterLayer作为一个图像文件,存储在你的磁盘上并以该物种的等级命名。

有几种方法可以替换rasterLayer中的值。如果对于此特定物种,等级为1,则可以按等级替换范围

r1[!is.na(r1)] <- 1

r1 reclassified

如果你想翻看文件夹,试试这个:

wdata <- '.../R/Stackoverflow/21876858' # your local folder
f.reclass <- function(x=x){
  files <- list.files(file.path(wdata), all.files = F) # list all files from a given driver folder
  # Assuming TIF images, List files from wdata folder
  ## Change below if using any other format
  ltif <- grep(".tif$", files, ignore.case = TRUE, value = TRUE) 
  stkl <- stack()
  for(i in 1:length(ltif)){
    x <- raster(file.path(wdata, ltif[i]),
                package = "raster", varname = fname)
    rank <- as.numeric(sub("*.tif", "", ltif[i]))
    # Change also here if not tif
    stopifnot(is.numeric(rank)) # check for numeric
    x[!is.na(x)] <- rank
    stkl <- addLayer(stkl, x)
  }
  stkl
}

spreclass <- f.reclass(x=x)

您将获得带有重新分类的rasterLayers的rasterStack对象。你可以将它们拆开,导出,操纵......