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
这假设要调用的栅格图层 r
和 ids_to_delete
是要设置为 NA 的 ID 向量。
我有一个栅格,它被分成几个小块,每个小块都有一个特殊的 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
这假设要调用的栅格图层 r
和 ids_to_delete
是要设置为 NA 的 ID 向量。