我已经使用以下代码将光栅读入我的 R 会话:
raster <- stack("raster.tif")
现在我想做一个简单的特征(sf)对象来表示该栅格的轮廓。我不能使用边界框,因为栅格是多部分的,所以边界框会比栅格大得多。所以足迹也需要是一个多部分的特征(sf multipolygon)。
我很感激这方面的任何帮助。谢谢!
标记
如果您想要堆栈中的每个栅格,您需要使用lapply 遍历每个栅格。这将返回一个多边形图层列表。然后,您需要将列表的每个组件转换为 sf 多面体。最后,您需要连接特征(注意 c 是 c() 函数)。shp应该是你的多面体。您可能不想溶解多边形,您并没有真正明确您想要什么。
a <- lapply(as.list(raster), rasterToPolygons, dissolve=TRUE)
b <- lapply(a, st_as_sf) # convert to sf multipolygon
shp <- Reduce(c, b) # combine all polygons to one
附带说明一下,使用 raster 作为变量名可能不太好,因为 raster 包有一个名为 raster 的函数。