我正在处理来自云层覆盖区域的每月 MODIS EVI 数据汇总。 QA解析后剩下的像素不多了
为了提高像素数量,我想将
MYD13Q1.061 Aqua Vegetation Indices 16-Day Global 250m
的像素与MOD13Q1.061 Terra Vegetation Indices 16-Day Global 250m
的像素结合起来。所有图像都在 Google Earth Engine 中经过相同的处理并导入到 R 中。示例文件可以在here(文件不大)
MOD13Q1 EVI
#Set working directory
setwd("C:/...sample/mod")
##load EVI tiffs
pathtif_evi='C:/...sample/mod/'
tiflist_evi=list.files(path = pathtif_evi,'*.tif')
##read in EVI tifs
all_tiffs_evi <- lapply(tiflist_evi, raster)
MYD13Q1 EVI
#Set working directory
setwd("C:/...sample/myd")
##load EVI tiffs
pathtif_myd='C:/...sample/myd/'
tiflist_myd=list.files(path = pathtif_myd,'*.tif')
我尝试了@Forrest R. Stevens 的解决方案,使用下面的代码它不适用于像素。它似乎适合数值。
为 B 中的 NA 而不是 A 中的 NA 的像素创建索引:
A <- all_tiffs_evi
B <- all_tiffs_myd
indices <- is.na(B)[] & !is.na(A)[]
B[indices] <- A[indices]
拜托,我需要一种方法来用另一个图像中的像素替换 NA 像素(存在有效像素)。我有 22 年的月度数据。谢谢
你可以像这样使用
terra::cover
library(terra)
fmod <- list.files(path="mod", pattern='tif$', full=TRUE)
mod <- rast(fmod)
fmyd <- list.files(path="myd", pattern='tif$', full=TRUE)
myd <- rast(fmyd)
x <- cover(mod, myd)
如果没有理由比
mod
更喜欢myd
,那么在它们都有值的地方取平均值可能更有意义。
m <- mean(mod, myd, na.rm=TRUE)