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

使用sf与stars对分类栅格目标类别提取等值线多边形报错如何解决

问题原因

st_contour 函数要求输入的栅格值为数值类型,你的代码中将符合条件的栅格值转为了字符型的"target",触发了类型不兼容的报错。

解决方案

先将目标区域赋值为统一数值,和NA值做区分,生成等值线后再补充分类标签即可,修正后代码如下:

# 加载包
library(stars)
library(sf)

# 读取并预处理栅格
tif = system.file("tif/L7_ETMs.tif", package = "stars")
x = read_stars(tif)[, 1:50, 1:50, 1:2]
x[[1]] = round(x[[1]]/5)
# 目标区域赋值为数值1,其余为NA,不要转字符
x[[1]] = ifelse(x[[1]] < 10, NA, 1)

# 生成等值线,指定阈值刚好提取值为1的区域
l = st_contour(x, breaks = c(0.5, 1.5))
# 补充分类标签
l$category = "target"

# 绘图验证
plot(l["category"])

以上处理会自动忽略所有NA值,生成的矢量等值线就是你需要的target分类对应的范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:57:03