Select 根据值的栅格子集

Select subset of a raster according to values

我有一个栅格,它被分成几个小块,每个小块都有一个特殊的 ID,所以每个像元都将由它们所属的小块的 ID 标识。在下面的示例中,我有 1180 个补丁。我计算了所有这些斑块的面积,我只想 select 那些大于 100 公顷的斑块。 这是我的代码,但问题是 R 在末尾给出了一个向量,而不是仅包含符合条件的那些补丁的栅格。

# list of ID of patches (hors NA)
  num_patches <- unique(raster[!is.na(raster[])]) # list length= 1180
  area_patches <- c()
  # calculate area
  for (pixel in num_patches){
    area_patches <- c(area_patches ,sum(raster[raster == pixel]) * res(raster)[1]^2)
  }
  # conversion des m² en ha
  area_patches <- area_patches/ha
  # identify patches > 100
  pos_patches_100ha <- which(area_patches >= 100)
  # select only patches > 100 ha
  raster <- raster[raster %in% pos_parche_100ha] --> selection doesn't work, the out isn't a raster but a vector
  

如果像元值是 ID,并且您知道哪些 ID 对应于 100 公顷或更小的斑块,您可以简单地将它们设置为 NA 或在这种情况下的背景值:

r[r %in% ids_to_delete] <- NA

这假设要调用的栅格图层 rids_to_delete 是要设置为 NA 的 ID 向量。