You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将SpatVect转为SpatRaster并填充多边形为1的问题求助

解决KUD多边形栅格化仅填充边界及后续掩膜问题

一、修复多边形内部填充问题

你当前栅格化仅生成边界的核心原因:转换SpatVect时未将点正确组合为闭合多边形要素,而是生成了线或散点。按以下步骤修正:

  1. 验证当前要素类型:
geomtype(chosen_data_spat)

若输出为"lines"或"points",需重新构建多边形。

  1. 重新生成多边形类型的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")
  1. 重新执行栅格化(自动填充内部+外部设为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 19:52:33