From 8590399fe0d8d13038060a3c19fff987b44f1e25 Mon Sep 17 00:00:00 2001 From: Felipe Carlos Date: Tue, 28 May 2024 16:04:39 -0300 Subject: [PATCH 1/2] fix sits_merge --- R/sits_merge.R | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/R/sits_merge.R b/R/sits_merge.R index 98443a59b..1d589a5f4 100644 --- a/R/sits_merge.R +++ b/R/sits_merge.R @@ -105,6 +105,9 @@ sits_merge.sar_cube <- function(data1, data2, ...) { dplyr::filter(data2, .data[["tile"]] %in% common_tiles), .data[["tile"]] ) + if (length(.cube_timeline(data2)[[1]]) == 1){ + return(.merge_single_timeline(data1, data2)) + } if (inherits(data2, "sar_cube")) { return(.merge_equal_cube(data1, data2)) } else { @@ -131,10 +134,9 @@ sits_merge.raster_cube <- function(data1, data2, ...) { dplyr::filter(data2, .data[["tile"]] %in% common_tiles), .data[["tile"]] ) - if (length(.cube_timeline(data2)) == 1){ + if (length(.cube_timeline(data2)[[1]]) == 1){ return(.merge_single_timeline(data1, data2)) } - if (inherits(data2, "sar_cube")) { return(.merge_distinct_cube(data1, data2)) } else { @@ -200,12 +202,14 @@ sits_merge.raster_cube <- function(data1, data2, ...) { # Return cubes merged return(data1) } + .merge_single_timeline <- function(data1, data2){ # Get data1 timeline d1_tl <- unique(as.Date(.cube_timeline(data1)[[1]])) - fi_new <- purrr::map_chr(sits_timeline(data1), function(d){ - fi <- .fi(data2) - fi[["date"]] <- as.Date(d) + fi_new <- purrr::map(1:nrow(data2), function(idx) { + d <- data2[idx,] + fi <- .fi(data2[idx,]) + fi[["date"]] <- as.Date(d1_tl[1:nrow(d)]) return(fi) }) data2[["file_info"]] <- fi_new From 7e8bb4970802567fe4d234a3e12aefc2ad6d6699 Mon Sep 17 00:00:00 2001 From: Felipe Carlos Date: Tue, 28 May 2024 16:16:40 -0300 Subject: [PATCH 2/2] update merge for single timeline date --- R/sits_merge.R | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/R/sits_merge.R b/R/sits_merge.R index 1d589a5f4..7cae49ed3 100644 --- a/R/sits_merge.R +++ b/R/sits_merge.R @@ -204,17 +204,21 @@ sits_merge.raster_cube <- function(data1, data2, ...) { } .merge_single_timeline <- function(data1, data2){ - # Get data1 timeline + # Get data1 timeline. d1_tl <- unique(as.Date(.cube_timeline(data1)[[1]])) - fi_new <- purrr::map(1:nrow(data2), function(idx) { - d <- data2[idx,] - fi <- .fi(data2[idx,]) - fi[["date"]] <- as.Date(d1_tl[1:nrow(d)]) + # Create new `file_info` using dates from `data1` timeline. + fi_new <- purrr::map(seq_len(nrow(data2)), function(row) { + data_row <- data2[row,] + + fi <- .fi(data_row) + fi[["date"]] <- as.Date(d1_tl[1:nrow(data_row)]) + return(fi) }) + # Assign the new `file_into` into `data2` data2[["file_info"]] <- fi_new - data1 <- .cube_merge(data1, data2) - return(data1) + # Merge cubes and return + .cube_merge(data1, data2) } #' @rdname sits_merge