我有一个与这个问题类似的设置。然而,就我而言,我有一个sf
data.frame ,其中包含不同几何类型的混合,有些是这样POLYGON
的,有些GEOMETRYCOLLECTION
是这样的:
a <- st_polygon(list(cbind(c(0,0,7.5,7.5,0),c(0,-1,-1,0,0))))
b <- st_polygon(list(cbind(c(0,1,2,3,4,5,6,7,7,0),c(1,0,.5,0,0,0.5,-0.5,-0.5,1,1))))
i <- st_intersection(a,b)
a1 <- st_sf(a=1, geom = st_sfc(i))
a2 <- st_sf(a=2, geom = st_sfc(a))
ii <- rbind(a1, a2)
就像上面提到的问题一样,我希望只保留那些GEOMETRYCOLLECTION
二维的部分,因为最终我对这些几何形状的区域感兴趣并且st_area()
不会在GEOMETRYCOLLECTION
s 上工作。
然而,在混合几何的情况下,给出的答案
st_cast(ii)[which(st_is(st_cast(ii), c("POLYGON", "MULTIPOLYGON"))),]
不起作用,因为st_cast()
叶子GEOMETRYCOLLECTION
未受影响。