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

栅格阈值分割提取水域多边形并裁剪原栅格技术求助

栅格数据水陆分割与裁剪实现方案

以下基于你已加载的terra库完成需求,terra对大型栅格数据的处理效率更高,建议优先使用而非raster包:

完整实现代码

library(terra)
library(mapview)

# 读取栅格数据(你已完成的步骤)
xx <- rast("MyRaster.asc")
# 直接用mapview查看terra栅格,无需转成raster对象
mapview(xx)

# 1. 阈值分割:生成水域掩码(值<1为水域,标记为1,其他为NA)
water_mask <- xx < 1
# 查看掩码结果
plot(water_mask, main = "水域掩码")
mapview(water_mask)

# 2. 将水域掩码转换为多边形要素
water_poly <- as.polygons(water_mask, dissolve = TRUE)
# 移除属性表中不需要的字段(可选,精简数据)
water_poly <- subset(water_poly, select = "lyr.1")
# 查看多边形
plot(water_poly, main = "水域多边形")
mapview(water_poly)

# 3. 使用水域多边形裁剪原栅格,仅保留水域部分
water_raster <- mask(xx, water_poly)
# 查看裁剪后的水域栅格
plot(water_raster, main = "裁剪后的水域栅格")
mapview(water_raster)

# 可选:保存结果
writeRaster(water_raster, "WaterOnlyRaster.tif", overwrite = TRUE)
writeVector(water_poly, "WaterPolygons.shp", overwrite = TRUE)

关键步骤说明

  • 阈值分割:直接通过逻辑运算xx < 1生成水域掩码,比classify函数更简洁,适合二分类场景;
  • 转多边形:as.polygons的dissolve = TRUE参数会将相邻的水域像素合并为单个多边形,减少要素数量,提升后续处理效率;
  • 栅格裁剪:mask函数会保留原栅格中多边形覆盖区域的像素值,其余区域设为NA,完美匹配"仅保留水域部分"的需求。

内容的提问来源于stack exchange,提问作者Salvador

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:13:08