【问题标题】:Stacked raster layers have different number of observations in R堆叠栅格图层在 R 中具有不同数量的观测值
【发布时间】:2018-08-07 22:54:34
【问题描述】:

我无法分析从AppEEARS 下载的 MODIS NDVI 数据(Terra 和 Aqua)。

数据在一段时间内超过一定程度,所以我将不同的层堆叠在一个文件中。

library(raster)
setwd("~/NDVI/")
NDVI <- list.files(full.names = TRUE, pattern = ".tif$")
sNDVI <- stack(NDVI)

这里没有问题,但是当我查看每层的观察数量时,它们在层之间是不同的。这使得层之间的进一步分析变得非常困难。

 layers <- 0; layers <- as.data.frame(layers)
    for (i in 1:NDVI@data@nlayers){
      layers[i,] <- length(rasterToPoints(subset(NDVI, i)))
    }

summary(layers[,1])
 Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
3330678 3340078 3342094 3341450 3343584 3345408

length(layers[,1])
[1] 142

我曾经从他们以前的系统毫无问题地下载 NDVI 图层。有谁知道我做错了什么,或者我该如何解决这个问题? 裁剪不起作用。

感谢您的帮助!

编辑

问题是由数据中的 NA 引起的。我学习了here 如何可视化 NA:

NDVI <- reclassify(NDVI, cbind(NA, 1000)) #or some value way higher than the rest of your data

plot(subset(NDVI, 1)

这表明 NA 分布在我的范围内(我不知道为什么,因为我之前下载的数据不是这种情况)。 我需要以某种方式填充 NA,并寻求用该列中下一个非 NA 值的值填充它们的不太理想的解决方案:

library(zoo)
head(NDVI@data@values)
NDVI@data@values <- na.locf(NDVI@data@values, fromLast = T) # 'fromLast = T' makes the function take the value of the *next* rather than the *previous* value to fill in the NA.

由于 NA 占我总数据的不到 0.1%,这不会影响我要计算的每层的平均值。

这可能不是您想要处理栅格的方式,但我认为我仍然可以提供丰富的信息来编辑我的原始问题。 干杯,

【问题讨论】:

    标签: r r-raster


    【解决方案1】:

    这是评估多元栅格数组数据的糟糕方法。 raster::rasterToPoints 函数正在删除 NA,因此,长度差异。这不是 n 的差异,而是缺少数据。

    数组匹配,否则您将收到raster::stack 错误。我建议对这些数据应用常见的平滑和无数据插补程序。这将处理丢失的数据,这是由于云等影响而预期的此类数据。

    spatialEco 软件包的开发版本具有栅格时间序列数据的功能:smooth.time.series(NA 插补)、sg.smooth(Savitzky-Golay 平滑)和raster.kendall(Kendall 的 Tau 与 Theil-Sen 单调趋势斜率)。

    【讨论】:

    • 您好 Jeffrey,感谢您的快速回复。不幸的是,您的包 'spatialEco' 不再包含函数 'smooth.time.series' 或 'sg.smooth' (CRAN)。我尝试了函数 'raster.kendall': NDVI1 &lt;- raster.kendall(sNDVI) 但这至少需要几分钟才能完成。我做错了什么?
    • 我指出开发版本包含这些功能,而不是 CRAN 版本。几周后,我将在 CRAN 上发布一个反映附加功能的新版本。您可以使用以下命令安装开发版本: devtools::install_github("jeffreyevans/spatialEco") 至于 kendall 函数,它在每个像素向量的幕后做了很多工作。运行需要一些时间,尤其是在长时间序列或大型栅格中。
    • Hei Jeffrey,我无法从 dev.version 使用您的功能,因为它花费的时间太长(让它运行超过 30 分钟)。您的回复确实让我访问了最终让我“解决”问题的其他页面,即使它可能不是很好。感谢您的帮助!
    猜你喜欢
    • 2020-12-03
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 2015-02-13
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多