Я использую R для объединения тиббла с метаданными landat в коллекцию высококачественных сцен, которые попадают в приемлемые промежутки времени друг от друга.Тиббл из библиотеки 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
Итак, теперь у меня есть таблица со всеми изображениями в диапазоне дат (1 января - 28 февраля) в данном году (2015).Именно здесь я начинаю немного расстраиваться с планом атаки.Я могу использовать оператор канала для подсчета количества кадров в каждой дате:
winter.dates <- winter.scenes %>%
group_by(YMD) %>%
tally()
winter.dates
Но теперь я хочу выяснить, какое узкое окно кадров лучше всего представлено.Из winter.dates
видно, что некоторые наборы сцен, которые выпадают в течение нескольких дней друг от друга, имеют 6 сцен, а другие - 5. Я могу вычислить столбец временной задержки, используя:
timelags <- diff(winter.dates$YMD)
, но затемМне остается только знать, как все распределяется во времени.Я хочу установить подмножество winter.scenes
, используя нижний предел количества изображений (например, winter.dates$n > 5
) в пределах 3-дневного окна (timelags < 4
), а затем отсортировать результат всего этого по cloudCover
.
Я нашел идеи здесь и здесь но ничего, что соответствовало моим точным потребностям.Кто-нибудь может дать понимание?