根据日期窗口汇总小标题

时间:2018-09-13 18:16:36

标签: r dplyr aggregate tibble

我正在使用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}}。

我发现了herehere的见解,但都无法满足我的确切需求。谁能提供见识?

0 个答案:

没有答案