将栅格转换为单独的多边形(R语言)

4

我确定在R中是否可能实现此功能,如果有人知道使用其他程序的方法,请告诉我。

目前我有一个栅格图像,并且需要将一组像素转换为NA组,如果没有足够大的聚类。我的当前思路是将栅格图像转换为多边形,然后计算多边形的面积并移除面积不够大的多边形。唯一的问题是,rasterToPolygon创建了单个多边形层,我无法单独索引每个多边形。有什么想法吗?以下是一个示例:

library(raster)
area <- raster(matrix(c(1:4,1),5,5))
shape <- rasterToPolygons(area,fun=function(x){x == 1},dissolve=TRUE)

Example


你的光栅中的组是否总是按行结构化的?还是这些组可以随机分布在光栅上? - maRtin
1个回答

2

在分解后,您可以将多部分面转换回单部分面。对于 SpatialPolygons*disaggregate 方法位于 sp 包中(如果您已经加载了 raster,则该包应该已经被加载)。

library(sp)
shape2 <- disaggregate(shape)

shape2
## class       : SpatialPolygonsDataFrame 
## features    : 2 
## extent      : 0, 1, 0, 1  (xmin, xmax, ymin, ymax)
## coord. ref. : NA 
## variables   : 1
## names       : abc 
## min values  :   1 
## max values  :   1 

多边形将具有一个属性,指示它们原始光栅值的值。例如,您可以添加一个属性,为每个多边形提供唯一的ID。

shape2$id <- factor(seq_len(length(shape2)))
spplot(shape2, 'id')

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接