将SpatVect转为SpatRaster并填充多边形为1的问题求助
解决KUD多边形栅格化仅填充边界及后续掩膜问题
一、修复多边形内部填充问题
你当前栅格化仅生成边界的核心原因:转换SpatVect时未将点正确组合为闭合多边形要素,而是生成了线或散点。按以下步骤修正:
- 验证当前要素类型:
geomtype(chosen_data_spat)
若输出为"lines"或"points",需重新构建多边形。
- 重新生成多边形类型的SpatVect:
- 若存在多多边形(数据框含分组列如
polygon_id):
# 先按多边形ID和点顺序排序,保证多边形闭合 chosen_data <- chosen_data[order(chosen_data$polygon_id, chosen_data$point_order), ] chosen_data_spat <- vect(chosen_data, geom = c("long", "lat"), type = "polygons", group = "polygon_id", crs = "EPSG:4326")
- 若为单个多边形:
chosen_data_spat <- vect(chosen_data, geom = c("long", "lat"), type = "polygons", crs = "EPSG:4326")
- 重新执行栅格化(自动填充内部+外部设为0):
raster_res <- 0.1 # 创建匹配范围的空栅格模板 r <- rast(ext(chosen_data_spat), resolution = raster_res, crs = crs(chosen_data_spat)) # 栅格化,background参数直接将外部设为0 kud_raster <- rasterize(chosen_data_spat, r, field = 1, background = 0)
二、与指定范围的掩膜操作
情况1:指定范围为矢量要素(SpatVect)
# 确保掩膜要素与栅格CRS一致 mask_extent <- project(mask_extent, crs(kud_raster)) # 保留重叠区域 kud_raster_masked <- mask(kud_raster, mask_extent)
情况2:指定范围为栅格(SpatRaster)
kud_raster_masked <- mask(kud_raster, mask_raster)
内容的提问来源于stack exchange,提问作者Sharklady
相关产品推荐
相关产品推荐

