我使用这段代码在我的R会话中读取了一个栅格,现在我想做一个简单的特征(sf)对象来表示这个栅格的轮廓。
raster <- stack("raster.tif")
现在我想做一个简单的特征(sf)对象 来表示这个栅格的轮廓。我不能使用边界框,因为栅格是多部分的,所以边界框会比栅格大很多。所以脚印也需要是一个多部分的特征(sf multipolygon)。
我希望得到任何帮助。谢谢你的帮助
马克
如果你想要堆栈中的每一个栅格,你需要在每一个栅格上用 涂抹. 这将返回一个多边形层的列表。然后你需要将列表中的每个组件转换为 sf multipolygon。最后,你需要连接这些特征(注意,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
另外,使用光栅作为变量名可能不是很好,因为光栅包有一个叫做光栅的函数。