我有一个多层SpatRaster,想要提取大于200的像元的x、y、层和值信息.我想过使用as.arrayas.data.frame,但它会影响性能,因为它是一个大型SpatRaster.

这是一个可复制的例子:

library(terra)
f <- system.file("ex/logo.tif", package="terra")
r <- rast(f, f) * * seq(1,2, by = 0.2)

推荐答案

为了减少内存需求,您可以首先将不想要的单元格设置为NA,这里使用terra::clamp.

x <- clamp(r, 200, values=FALSE)

d <- as.data.frame(x, xy=TRUE)
head(d)
#    x    y lyr1 lyr2 lyr3 lyr4 lyr5 lyr6
#1 0.5 76.5  255  306  357  408  459  510
#2 1.5 76.5  255  306  357  408  459  510
#3 2.5 76.5  255  306  357  408  459  510
#4 3.5 76.5  255  306  357  408  459  510
#5 4.5 76.5  255  306  357  408  459  510
#6 5.5 76.5  255  306  357  408  459  510

R相关问答推荐

使用rlang s arg_match判断函数输入列表

删除facet_wrap标签之间的水平线

根据收件箱中的特定值提取列名

如何使用R Shiny中的条件面板仅隐藏和显示用户输入,同时仍允许运行基础计算?

如何求解arg必须为NULL或deSolve包的ode函数中的字符向量错误

如何使用`ggplot2::geom_segment()`或`ggspatial::geom_spatial_segment()`来处理不在格林威治中心的sf对象?

使用tidyverse方法绑定行并从一组管道列表执行左连接

随机森林回归:下拉列重要性

删除具有相同标题的tabPanel(shinly)

使用rvest从多个页面抓取时避免404错误

按多列统计频次

在R中创建连续的期间

如何将一个方阵分解成没有循环的立方体

为什么这个表格格罗布不打印?

使用gt_summary是否有一种方法来限制每个变量集进行配对比较?

计算Mean by分组和绑定到R中的数据集

使用同一行中的前一个值填充R矩阵中的缺失值

在GT()中的列之间添加空格

R,将组ID分配给另一个观测ID变量中的值的组合

Package emMeans:如果emmip模型中包含的变量较少,emMeans模型中的其他变量设置为什么?