使用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
相关产品推荐
相关产品推荐

