【问题标题】:sf and stars: polygonize categorical rastersf and stars:多边形化分类栅格
【发布时间】:2021-10-19 18:12:40
【问题描述】:

我只想为x 栅格中的“目标”类别绘制栅格计数 (l),而不考虑 NA 值。我尝试这样做:

# Packages
library(stars)
library(sf)

#Vectorizing a raster object to an sf object
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)
x[[1]] = ifelse(x[[1]]<10,NA,"target")
str(x[[1]])

#Polygonizing
l =  st_contour(x)
plot(l[1])
Error in CPL_write_gdal(mat, file, driver, options, type, dims, from,  : 
  Not compatible with requested type: [type=character; target=double].

但是,不起作用。请问有什么帮助吗?

提前致谢,

亚历山大

【问题讨论】:

    标签: r raster sf r-stars


    【解决方案1】:

    您的脚本有几个错误,首先,st_contour 表示它与字符类型不兼容(指的是您在栅格中设置的“目标”字符串)。其次,我建议在st_contour 中使用breaks 参数来设置您希望获得轮廓的目标值。此外,您可能希望使用 x[rule] &lt;- NA 来屏蔽栅格中的某些值。我对您的代码进行了其他修改,可能会有所帮助:

    # Let's stay with only the first band, indicated in the final dimension
    x = read_stars(tif)[, 1:50, 1:50, 1]
    x = round(x/5)
    # Calculate the min and max of the raster values
    purrr::map(x, min)
    # 10
    purrr::map(x, max)
    # 28
    # Mask values lower than 10
    # However, this does not make any change, because the lowest value is 10
    x[x<10] <- NA
    # Take a look at the image
    plot(x)
    
    # Obtain the contours
    l =  st_contour(x, 
                    # Remove NA
                    na.rm = T,
                    # Obtain contour lines instead of polygons
                    contour_lines = TRUE,
                    # raster values at which to draw contour levels
                    breaks = 12)
    # Plot the contours
    plot(l)
    

    【讨论】:

      猜你喜欢
      • 2022-06-28
      • 1970-01-01
      • 2020-04-28
      • 2021-06-05
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2014-02-15
      • 2015-09-27
      相关资源
      最近更新 更多