我正在使用R将带有landsat元数据的小标题聚合到一组高质量的场景中,这些场景在可接受的时间间隔之内。 getlandsat
库中的小标题包括针对用户选择的特定场景的元数据,例如cloudCover
(以百分比衡量)和acquisitionDate
(每个场景的时间戳)。
我正在尝试使用最多的图片和最低的云量覆盖拼接场景。
可复制的代码:
library(getlandsat)
library(dplyr)
all.lsat.scenes <- lsat_scenes() # Get a list of available scenes
# Select scenes that overlap with the ROI
tilematches <- paste(c("039037","040037",
"039036","040036","041036",
"039035","040035","041035"), collapse="|")
my.lsat.scenes <- all.lsat.scenes[grep(all.lsat.scenes$entityId, pattern = tilematches),]
my.lsat.scenes$YMD <- as.Date(my.lsat.scenes$acquisitionDate, format = "%Y-%m-%d")
my.lsat.scenes <- mutate(my.lsat.scenes, Julian = as.numeric(substr(entityId,14,16)))
# Choose sets of scenes that fall within a time frame of interest
winter.scenes <- filter(my.lsat.scenes,
Julian > 001,
Julian < 060,
format.Date(YMD, "%Y") == 2015)
winter.scenes
因此,现在我对指定年份(2015年)中某个日期范围(1月1日至2月28日)内的所有图像进行了小标题处理。这是我开始对攻击计划感到有些困惑的地方。我可以使用管道运算符来计算每个日期中有多少帧:
winter.dates <- winter.scenes %>%
group_by(YMD) %>%
tally()
winter.dates
但是现在我想弄清楚哪一个狭窄的帧窗口最能代表。您可以从winter.dates
中看到,几天之内的某些场景集有6个场景,而另一些场景有5个场景。我可以使用以下公式计算时滞列:
timelags <- diff(winter.dates$YMD)
但是我只剩下知道事情是如何按时间传播的。我想在3天的窗口(winter.scenes
)中使用底部图片数量(例如winter.dates$n > 5
)对timelags < 4
进行子集划分,然后按{{ 1}}。