【发布时间】: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%,这不会影响我要计算的每层的平均值。
这可能不是您想要处理栅格的方式,但我认为我仍然可以提供丰富的信息来编辑我的原始问题。 干杯,
【问题讨论】: