用 R 中的 MOD13Q1 EVI 光栅中的匹配像素填充 MYD13Q1 EVI 中的像素间隙

问题描述 投票:0回答:1

我正在处理来自云层覆盖区域的每月 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 年的月度数据。谢谢

r raster r-raster terra r-modis
1个回答
1
投票

你可以像这样使用

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)
© www.soinside.com 2019 - 2024. All rights reserved.