Skip to content

Commit 768e812

Browse files
improve codecov
1 parent 7716c03 commit 768e812

16 files changed

+212
-95
lines changed

NAMESPACE

+2-5
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ S3method("sits_labels<-",class_cube)
1010
S3method("sits_labels<-",default)
1111
S3method("sits_labels<-",probs_cube)
1212
S3method("sits_labels<-",sits)
13-
S3method("sits_labels<-",tbl_df)
1413
S3method(.band_rename,raster_cube)
1514
S3method(.band_rename,sits)
1615
S3method(.check_samples,default)
@@ -22,6 +21,7 @@ S3method(.cube_as_sf,default)
2221
S3method(.cube_as_sf,raster_cube)
2322
S3method(.cube_bands,default)
2423
S3method(.cube_bands,raster_cube)
24+
S3method(.cube_bands,tbl_df)
2525
S3method(.cube_bbox,default)
2626
S3method(.cube_bbox,raster_cube)
2727
S3method(.cube_collection,default)
@@ -48,8 +48,6 @@ S3method(.cube_filter_tiles,raster_cube)
4848
S3method(.cube_find_class,default)
4949
S3method(.cube_find_class,raster_cube)
5050
S3method(.cube_find_class,tbl_df)
51-
S3method(.cube_foreach_tile,default)
52-
S3method(.cube_foreach_tile,raster_cube)
5351
S3method(.cube_intersects,default)
5452
S3method(.cube_intersects,raster_cube)
5553
S3method(.cube_is_complete,default)
@@ -60,6 +58,7 @@ S3method(.cube_is_token_expired,default)
6058
S3method(.cube_is_token_expired,mpc_cube)
6159
S3method(.cube_labels,default)
6260
S3method(.cube_labels,raster_cube)
61+
S3method(.cube_labels,tbl_df)
6362
S3method(.cube_merge_tiles,default)
6463
S3method(.cube_merge_tiles,derived_cube)
6564
S3method(.cube_merge_tiles,raster_cube)
@@ -275,7 +274,6 @@ S3method(sits_apply,default)
275274
S3method(sits_apply,derived_cube)
276275
S3method(sits_apply,raster_cube)
277276
S3method(sits_apply,sits)
278-
S3method(sits_apply,tbl_df)
279277
S3method(sits_as_sf,raster_cube)
280278
S3method(sits_as_sf,sits)
281279
S3method(sits_bands,default)
@@ -329,7 +327,6 @@ S3method(sits_labels,patterns)
329327
S3method(sits_labels,raster_cube)
330328
S3method(sits_labels,sits)
331329
S3method(sits_labels,sits_model)
332-
S3method(sits_labels,tbl_df)
333330
S3method(sits_labels_summary,sits)
334331
S3method(sits_merge,default)
335332
S3method(sits_merge,raster_cube)

R/api_cube.R

+23-12
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,17 @@ NULL
195195
bands
196196
}
197197
#' @export
198+
.cube_bands.tbl_df <- function(cube, add_cloud = TRUE, dissolve = TRUE) {
199+
cube <- tibble::as_tibble(cube)
200+
if (all(.conf("sits_cube_cols") %in% colnames(cube))) {
201+
class(cube) <- c("raster_cube", class(cube))
202+
bands <- .cube_bands(cube)
203+
} else
204+
stop("Input is not a valid data cube")
205+
206+
return(bands)
207+
}
208+
#' @export
198209
.cube_bands.default <- function(cube, add_cloud = TRUE, dissolve = TRUE) {
199210
if (is.list(cube)) {
200211
class(cube) <- c("list", class(cube))
@@ -225,6 +236,17 @@ NULL
225236
return(labels)
226237
}
227238
#' @export
239+
.cube_labels.tbl_df <- function(cube, dissolve = TRUE) {
240+
cube <- tibble::as_tibble(cube)
241+
if (all(.conf("sits_cube_cols") %in% colnames(cube))) {
242+
class(cube) <- c("raster_cube", class(cube))
243+
labels <- .cube_labels(cube)
244+
} else
245+
stop("Input is not a valid data cube")
246+
247+
return(labels)
248+
}
249+
#' @export
228250
.cube_labels.default <- function(cube, dissolve = TRUE) {
229251
if (is.list(cube)) {
230252
class(cube) <- c("list", class(cube))
@@ -548,19 +570,8 @@ NULL
548570
#' Iterates over each cube tile, passing tile to function's first argument.
549571
#' @returns A processed data cube.
550572
.cube_foreach_tile <- function(cube, fn, ...) {
551-
UseMethod(".cube_foreach_tile", cube)
552-
}
553-
#' @export
554-
.cube_foreach_tile.raster_cube <- function(cube, fn, ...) {
555573
slider::slide_dfr(cube, fn, ...)
556574
}
557-
#' @export
558-
.cube_foreach_tile.default <- function(cube, fn, ...) {
559-
cube <- tibble::as_tibble(cube)
560-
cube <- .cube_find_class(cube)
561-
result <- .cube_foreach_tile(cube, fn, ...)
562-
return(result)
563-
}
564575
# ---- spatial ----
565576
.cube_bbox <- function(cube, as_crs = NULL) {
566577
UseMethod(".cube_bbox", cube)
@@ -702,7 +713,7 @@ NULL
702713
})
703714
# Post-condition
704715
.check_that(
705-
nrow(cube) > 1,
716+
nrow(cube) >= 1,
706717
msg = "The provided 'dates' does not match any date in the cube.",
707718
local_msg = "invalid 'dates' parameter."
708719
)

R/api_summary.R

-28
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,3 @@
1-
#' @title Summary of a tile of a cube
2-
#' @noRd
3-
#' @param tile A \code{tile}.
4-
#' @return Called for side effects
5-
.summary_tile_information <- function(tile) {
6-
# print the basic tile information
7-
cat("class : ", class(tile)[1], "\n")
8-
cat("dimensions : ",
9-
.tile_nrows(tile), ", ",
10-
.tile_ncols(tile), " (nrow, ncol)\n",
11-
sep = ""
12-
)
13-
cat("resolution : ",
14-
.tile_xres(tile), ", ",
15-
.tile_yres(tile), " (x, y)\n",
16-
sep = ""
17-
)
18-
cat("extent : ",
19-
.xmin(tile), ", ",
20-
.xmax(tile), ", ",
21-
.ymin(tile), ", ",
22-
.ymax(tile),
23-
" (xmin, xmax, ymin, ymax)\n",
24-
sep = ""
25-
)
26-
cat("coord ref : ", .crs_wkt_to_proj4(tile$crs), "\n")
27-
return(invisible(tile))
28-
}
291
#' @title Check in tile is available
302
#' @noRd
313
#' @param cube data cube

R/sits_apply.R

+1-6
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ sits_apply.derived_cube <- function(data,...) {
207207
}
208208
#' @rdname sits_apply
209209
#' @export
210-
sits_apply.tbl_df <- function(data,...) {
210+
sits_apply.default <- function(data,...) {
211211
data <- tibble::as_tibble(data)
212212
if (all(.conf("sits_cube_cols") %in% colnames(data))) {
213213
data <- .cube_find_class(data)
@@ -218,8 +218,3 @@ sits_apply.tbl_df <- function(data,...) {
218218
acc <- sits_apply(data, ...)
219219
return(acc)
220220
}
221-
#' @rdname sits_apply
222-
#' @export
223-
sits_apply.default <- function(data, ...) {
224-
stop("Input should be a sits tibble or a data cube")
225-
}

R/sits_labels.R

+5-20
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@
77
#' patterns (tibble of class "patterns"),
88
#' data cube (tibble of class "raster_cube"), or
99
#' model (closure of class "sits_model").
10-
#' @param value A character vector used to convert labels. Labels will
11-
#' be renamed to the respective value positioned at the
12-
#' labels order returned by \code{\link{sits_labels}}.
1310
#' @return The labels of the input data (character vector).
1411
#'
1512
#' @examples
@@ -84,7 +81,7 @@ sits_labels.sits_model <- function(data) {
8481
}
8582
#' @rdname sits_labels
8683
#' @export
87-
sits_labels.tbl_df <- function(data) {
84+
sits_labels.default <- function(data) {
8885
data <- tibble::as_tibble(data)
8986
if (all(.conf("sits_cube_cols") %in% colnames(data))) {
9087
data <- .cube_find_class(data)
@@ -95,11 +92,6 @@ sits_labels.tbl_df <- function(data) {
9592
data <- sits_labels(data)
9693
return(data)
9794
}
98-
#' @rdname sits_labels
99-
#' @export
100-
sits_labels.default <- function(data) {
101-
stop("input should be an object of class cube or class sits")
102-
}
10395
#' @title Change the labels of a set of time series
10496
#' @name `sits_labels<-`
10597
#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br}
@@ -189,26 +181,19 @@ sits_labels.default <- function(data) {
189181
})
190182
return(rows)
191183
}
192-
#' @name sits_labels
184+
#' @name `sits_labels<-`
193185
#' @export
194-
`sits_labels<-.tbl_df` <- function(data, value) {
186+
`sits_labels<-.default` <- function(data, value) {
187+
data <- tibble::as_tibble(data)
195188
if (all(.conf("sits_cube_cols") %in% colnames(data))) {
196-
class(data) <- c("raster_cube", class(data))
189+
data <- .cube_find_class(data)
197190
} else if (all(.conf("sits_tibble_cols") %in% colnames(data))) {
198191
class(data) <- c("sits", class(data))
199192
} else
200193
stop("Input should be a sits tibble, data cube, patterns, or model")
201194
sits_labels(data) <- value
202195
return(data)
203196
}
204-
#' @name `sits_labels<-`
205-
#' @export
206-
#'
207-
`sits_labels<-.default` <- function(data, value) {
208-
data <- tibble::as_tibble(data)
209-
sits_labels(data) <- value
210-
return(data)
211-
}
212197
#' @title Inform label distribution of a set of time series
213198
#' @name sits_labels_summary
214199
#' @author Rolf Simoes, \email{rolf.simoes@@inpe.br}

R/sits_timeline.R

+6-3
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,15 @@ sits_timeline.tbl_df <- function(data) {
6969
class(data) <- c("sits", class(data))
7070
} else
7171
stop("Input should be a sits tibble or a data cube")
72-
data <- sits_timeline(data)
73-
return(data)
72+
timeline <- sits_timeline(data)
73+
return(timeline)
7474
}
7575
#' @rdname sits_timeline
7676
#' @export
7777
#'
7878
sits_timeline.default <- function(data) {
79-
stop("input should be an object of class cube or class sits")
79+
data <- tibble::as_tibble(data)
80+
timeline <- sits_timeline(data)
81+
return(timeline)
82+
8083
}

man/sits_apply.Rd

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/sits_labels.Rd

-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/kernel-fd3fe7e9.o.tmp

Whitespace-only changes.

tests/testthat/test-apply.R

+12
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,18 @@ test_that("Testing normalized index generation", {
8888
start_date <- timeline[1]
8989
end_date <- timeline[length(timeline)]
9090

91+
# test with data frame
92+
#
93+
gc_cube2 <- gc_cube
94+
class(gc_cube2) <- "data.frame"
95+
96+
gc_cube2 <- sits_apply(gc_cube2,
97+
NDRE = (B8A - B05) / (B8A + B05),
98+
multicores = 1,
99+
output_dir = dir_images
100+
)
101+
expect_true("NDRE" %in% sits_bands(gc_cube2))
102+
91103
csv_tb <- purrr::map2_dfr(lats, longs, function(lat, long) {
92104
tibble::tibble(
93105
longitude = long,

tests/testthat/test-cube.R

+33
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,24 @@ test_that("Creating cubes from BDC - based on ROI with shapefile", {
193193
expect_gt(bbox["ymax"], bbox_shp["ymax"])
194194
intersects <- .cube_intersects(modis_cube, sf_mt)
195195
expect_true(all(intersects))
196+
197+
modis_cube2 <- modis_cube
198+
class(modis_cube2) <- "data.frame"
199+
in2 <- .cube_intersects(modis_cube2, sf_mt)
200+
expect_true(all(in2))
201+
202+
modis_cube3 <- .cube_filter_spatial(modis_cube2, sf_mt)
203+
expect_equal(nrow(modis_cube2), nrow(modis_cube3))
204+
205+
modis_cube4 <- .cube_filter_bands(modis_cube2, "EVI")
206+
expect_true(.cube_bands(modis_cube4) %in% .cube_bands(modis_cube2))
207+
208+
modis_tiles <- .cube_tiles(modis_cube2)
209+
expect_true(all(c("011009", "012010") %in% .cube_tiles(modis_cube)))
210+
211+
tile_011009 <- .cube_filter_tiles(modis_cube, "011009")
212+
expect_equal(nrow(tile_011009), 1)
213+
196214
})
197215
test_that("Creating cubes from BDC - invalid roi", {
198216
expect_error(
@@ -497,6 +515,21 @@ test_that("Creating Sentinel cubes from MPC with ROI", {
497515
cube_nrows <- .tile_nrows(s2_cube_mpc)
498516
expect_true(.raster_nrows(r_obj) == cube_nrows)
499517
})
518+
test_that("Creating Sentinel-1 cubes from MPC", {
519+
cube_s1 <- sits_cube(
520+
source = "MPC",
521+
collection = "SENTINEL-1-RTC",
522+
bands = c("VV", "VH"),
523+
orbit = "descending",
524+
roi = c(lat_max = 3.619058, lon_max = -74.01153, lat_min = 2.625301, lon_min = -75.00018),
525+
start_date = "2023-03-01",
526+
end_date = "2023-09-30"
527+
)
528+
bbox <- sits_bbox(cube_s1)
529+
expect_true(grepl("18N", bbox[["crs"]]))
530+
expect_equal(381340, bbox[["xmin"]])
531+
expect_equal(701860, bbox[["xmax"]])
532+
})
500533
test_that("Creating LANDSAT cubes from MPC with ROI", {
501534
roi <- c(
502535
lon_min = -48.28579, lat_min = -16.05026,

0 commit comments

Comments
 (0)