【问题标题】:Can different functions be used to extract different types of layers of a raster using terra::extract?可以使用 terra::extract 使用不同的函数来提取栅格的不同类型的图层吗?
【发布时间】:2022-01-29 03:55:23
【问题描述】:

我的目标是从栅格中提取一组多边形位置的数据。栅格有许多数值变量和一些分类变量。我想提取以此为条件的值,即,如果变量是数字,则为每个多边形获取 mean,如果变量是分类变量,则获取 mode

现在我正在这样做(看到“数字”层是数字,而“分类”有代表类别的数字):

extract_numeric <- terra::extract(x = raster,
                                  y = vect(polygons),
                                  fun = mean,
                                  layer = 'numeric',
                                  rm.na=T)

extract_categorical <- terra::extract(x = raster,
                                      y = vect(polygons),
                                      fun = mode,
                                      layer = 'categorical',
                                      rm.na=T)

extract <- c(extract_numeric, extract_categorical)

是否可以根据图层类型将值全部提取出来?即使我希望不同的数字层在提取时得到不同的fun。能做到吗?

谢谢!

【问题讨论】:

  • 也许您可以使用自定义fun,根据图层类型选择均值或模式。顺便说一句,提供一个最小的可重现示例确实可以帮助人们测试潜在的解决方案。几乎所有的问题,除了少数例外,都应该包括 MRE。这里缺少的是栅格对象的一些示例数据。
  • ...但老实说,我想知道混合这样的类型甚至是一个好主意。将它们分开可能更清洁。否则,我们怎么能保证在最终向量中所有的结果都可以被强制转换为单一类型而不会丢失信息。

标签: r extract terra


【解决方案1】:

不,那是不可能的。您还可以使用名称或索引子集 x

e_num <- extract(x[[c(1:3, 6:8)]], v, fun=mean)
e_cat <- extract(x[[4:5]], v, fun=mean)

但这类似于使用layer 参数。

你也可以这样做

e_list <- extract(x, v)

然后lapply你自己的函数在那个列表中。

【讨论】:

    猜你喜欢
    • 2021-11-30
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 2023-01-17
    • 2020-03-27
    • 1970-01-01
    相关资源
    最近更新 更多