删除R中较大多边形内的小多边形

删除R中较大多边形内的小多边形,r,polygon,spatial,sf,r-stars,R,Polygon,Spatial,Sf,R Stars,我从文件开始,这是一张5个气候带的世界地图。然后我将其转换为一个简单的功能。我的目标是去掉大多边形中包含的小多边形,这样我就只能看到五个不同区域中较大面片的轮廓。作为一个额外的好处,这将是很好的,使这些线更平滑,因为边缘不是视觉上令人愉悦的,但作为一个分类数量,我真的不能插值的值 library(stars) x=read_stars('climi.tif') #convert into sf tes=st_as_sf(x,as_points=FALSE,merge=TRUE,use_integ

我从文件开始,这是一张5个气候带的世界地图。然后我将其转换为一个简单的功能。我的目标是去掉大多边形中包含的小多边形,这样我就只能看到五个不同区域中较大面片的轮廓。作为一个额外的好处,这将是很好的,使这些线更平滑,因为边缘不是视觉上令人愉悦的,但作为一个分类数量,我真的不能插值的值

library(stars)
x=read_stars('climi.tif')
#convert into sf
tes=st_as_sf(x,as_points=FALSE,merge=TRUE,use_integer=TRUE)
#load a simple background map
map.background=sf::st_as_sf(rworldmap::countriesCoarseLessIslands)
ggplot()+ geom_sf(data=map.background,size=0.1) +geom_sf(data=tes,aes(geometry=geometry,color=factor(climi.tif)),fill=NA,size=0.7)
我明白了,但正如你所看到的,在非常大的多边形中有许多只有几个像素的小多边形,这使得可视化变得混乱。我想将这些小多边形与围绕它们的较大多边形合并。

我已经尝试过计算面积并删除较小的多边形,然后使用sf_remove_孔,这提高了结果,但我仍然得到了太多较小的多边形或NA区域,应该着色

tes$area= st_area(tes);tes$area=as.numeric(tes$area)
subtes=subset(tes,tes$area>199426036400)
subtes=sfheaders::sf_remove_holes(subtes)
但一些小多边形仍然可见,此外,一些区域似乎不属于任何区域。我也尝试过st_contains和raster::clump(),但没有成功。例如,“束”将删除五个类别中的一个。我想形成一个连续的区域,很容易区分彼此,即使我必须画双边界。

tif文件的链接已断开。