appelmar / gdalcubes

Creating and analyzing Earth observation data cubes in R
https://gdalcubes.github.io
Other
120 stars 28 forks source link

Error when trying to generate image collection of Landsat 8 items from STAC catalog #46

Closed hewag1975 closed 2 years ago

hewag1975 commented 2 years ago

Hi Marius,

thanks for your work on gdalcubes! We are currently trying to build a workflow around it for our own analysis. With Sentinel-2 images everything works as expected, but we also tried to build an image collection for Landsat 8 (collection = "landsat-8-l1-c1") from the same catalog. Interestingly executing stac_image_collection throws an error, see the reprex below. We compared the datetime information to the sentinel collection and it looks like the decimal seconds provided with the Landsat items cause the error. If we correct the timestamp in the itemlist manually the error does not occur any more and we can load the collection.

Can you pls. have a look?

Thanks and best regards, Hendrik

library(rstac)
library(gdalcubes)

# AOI bbox
bbox = c(
    "xmin" = 11.14079
    , "ymin" = 49.75891
    , "xmax" = 11.14321
    , "ymax" = 49.76039
)

# STAC
s = stac("https://earth-search.aws.element84.com/v0")

# example with Landsat collection
items_ls = s |>
    stac_search(collections = "landsat-8-l1-c1",
                bbox = bbox,
                datetime = "2021-01-01/2021-06-30",
                limit = 500) |>
    post_request()

stac_image_collection(items_ls$features)
#> Error in libgdalcubes_create_stac_collection(bands_df, images_df, gdalrefs_df, : ERROR in datetime::from_string(): cannot derive datetime from string

# example with Sentinel collection
items_sen = s |>
    stac_search(collections = "sentinel-s2-l2a-cogs",
                bbox = bbox,
                datetime = "2021-01-01/2021-06-30",
                limit = 500) |>
    post_request()

stac_image_collection(items_sen$features)
#> Image collection object, referencing 37 images with 18  bands
#> Images:
#>                       name    left      top   bottom    right
#> 1 S2B_32UPA_20210630_0_L2A 10.3827 50.54373 49.52843 11.95937
#> 2 S2A_32UPA_20210625_0_L2A 10.3827 50.54373 49.52843 11.95937
#> 3 S2B_32UPA_20210620_0_L2A 10.3827 50.54373 49.52843 11.95937
#> 4 S2A_32UPA_20210615_0_L2A 10.3827 50.54373 49.52843 11.95937
#> 5 S2B_32UPA_20210610_0_L2A 10.3827 50.54373 49.52843 11.95937
#> 6 S2A_32UPA_20210605_0_L2A 10.3827 50.54373 49.52843 11.95937
#>              datetime        srs
#> 1 2021-06-30T10:26:59 EPSG:32632
#> 2 2021-06-25T10:26:59 EPSG:32632
#> 3 2021-06-20T10:26:59 EPSG:32632
#> 4 2021-06-15T10:26:58 EPSG:32632
#> 5 2021-06-10T10:26:59 EPSG:32632
#> 6 2021-06-05T10:26:59 EPSG:32632
#> [ omitted 31 images ] 
#> 
#> Bands:
#>            name offset scale unit nodata image_count
#> 1           B01      0     1                      37
#> 2           B02      0     1                      37
#> 3           B03      0     1                      37
#> 4           B04      0     1                      37
#> 5           B05      0     1                      37
#> 6           B06      0     1                      37
#> 7           B07      0     1                      37
#> 8           B08      0     1                      37
#> 9           B09      0     1                      37
#> 10          B11      0     1                      37
#> 11          B12      0     1                      37
#> 12          B8A      0     1                      37
#> 13 overview:B02      0     1                      37
#> 14 overview:B03      0     1                      37
#> 15 overview:B04      0     1                      37
#> 16   visual:B02      0     1                      37
#> 17   visual:B03      0     1                      37
#> 18   visual:B04      0     1                      37

# compare datetime
items_ls$features[[1]]$properties$datetime
#> [1] "2021-06-29T10:03:38.494534Z"
items_sen$features[[1]]$properties$datetime
#> [1] "2021-06-30T10:26:59Z"

Created on 2021-10-19 by the reprex package (v2.0.1)

Session info ``` r sessioninfo::session_info() #> ─ Session info ─────────────────────────────────────────────────────────────── #> setting value #> version R version 4.1.1 (2021-08-10) #> os Ubuntu 20.04.3 LTS #> system x86_64, linux-gnu #> ui X11 #> language en_US:en #> collate en_US.UTF-8 #> ctype en_US.UTF-8 #> tz Europe/Berlin #> date 2021-10-19 #> #> ─ Packages ─────────────────────────────────────────────────────────────────── #> package * version date lib source #> backports 1.2.1 2020-12-09 [2] CRAN (R 4.1.1) #> cli 3.0.1 2021-07-17 [2] CRAN (R 4.1.1) #> crayon 1.4.1 2021-02-08 [2] CRAN (R 4.1.1) #> curl 4.3.2 2021-06-23 [1] CRAN (R 4.1.1) #> digest 0.6.28 2021-09-23 [1] CRAN (R 4.1.1) #> ellipsis 0.3.2 2021-04-29 [2] CRAN (R 4.1.1) #> evaluate 0.14 2019-05-28 [2] CRAN (R 4.1.1) #> fansi 0.5.0 2021-05-25 [2] CRAN (R 4.1.1) #> fastmap 1.1.0 2021-01-25 [2] CRAN (R 4.1.1) #> fs 1.5.0 2020-07-31 [1] CRAN (R 4.1.1) #> gdalcubes * 0.4.1 2021-07-29 [1] CRAN (R 4.1.1) #> glue 1.4.2 2020-08-27 [1] CRAN (R 4.1.1) #> highr 0.9 2021-04-16 [2] CRAN (R 4.1.1) #> htmltools 0.5.2 2021-08-25 [2] CRAN (R 4.1.1) #> httr 1.4.2 2020-07-20 [1] CRAN (R 4.1.1) #> jsonlite 1.7.2 2020-12-09 [1] CRAN (R 4.1.1) #> knitr 1.36 2021-09-29 [1] CRAN (R 4.1.1) #> lifecycle 1.0.1 2021-09-24 [1] CRAN (R 4.1.1) #> magrittr 2.0.1 2020-11-17 [1] CRAN (R 4.1.1) #> ncdf4 1.17 2019-10-23 [1] CRAN (R 4.1.1) #> pillar 1.6.2 2021-07-29 [2] CRAN (R 4.1.1) #> pkgconfig 2.0.3 2019-09-22 [2] CRAN (R 4.1.1) #> purrr 0.3.4 2020-04-17 [1] CRAN (R 4.1.1) #> R.cache 0.15.0 2021-04-30 [1] CRAN (R 4.1.1) #> R.methodsS3 1.8.1 2020-08-26 [2] CRAN (R 4.1.1) #> R.oo 1.24.0 2020-08-26 [2] CRAN (R 4.1.1) #> R.utils 2.11.0 2021-09-26 [1] CRAN (R 4.1.1) #> R6 2.5.1 2021-08-19 [1] CRAN (R 4.1.1) #> Rcpp 1.0.7 2021-07-07 [1] CRAN (R 4.1.1) #> RcppProgress 0.4.2 2020-02-06 [1] CRAN (R 4.1.1) #> reprex 2.0.1 2021-08-05 [1] CRAN (R 4.1.1) #> rlang 0.4.11 2021-04-30 [1] CRAN (R 4.1.1) #> rmarkdown 2.11 2021-09-14 [1] CRAN (R 4.1.1) #> rstac * 0.9.1-4 2021-07-10 [1] CRAN (R 4.1.1) #> rstudioapi 0.13 2020-11-12 [2] CRAN (R 4.1.1) #> sessioninfo 1.1.1 2018-11-05 [2] CRAN (R 4.1.1) #> stringi 1.7.5 2021-10-04 [1] CRAN (R 4.1.1) #> stringr 1.4.0 2019-02-10 [1] CRAN (R 4.1.1) #> styler 1.6.2 2021-09-23 [1] CRAN (R 4.1.1) #> tibble 3.1.5 2021-09-30 [1] CRAN (R 4.1.1) #> utf8 1.2.2 2021-07-24 [1] CRAN (R 4.1.1) #> vctrs 0.3.8 2021-04-29 [2] CRAN (R 4.1.1) #> withr 2.4.2 2021-04-18 [1] CRAN (R 4.1.1) #> xfun 0.26 2021-09-14 [2] CRAN (R 4.1.1) #> yaml 2.2.1 2020-02-01 [1] CRAN (R 4.1.1) #> #> [1] /home/hendrik/R/x86_64-pc-linux-gnu-library/4.1 #> [2] /usr/local/lib/R/site-library #> [3] /usr/lib/R/site-library #> [4] /usr/lib/R/library ```
appelmar commented 2 years ago

Hi Hendrik, thanks for the report and the reprex. It should work now (commit aef6b7c) for datetime strings with fractional seconds although they are ignored so far when creating the image collection. Let me know if anything does not work for you, I am planning a new CRAN release at the end of October.

hewag1975 commented 2 years ago

Thanks for the quick fix. Works as expected!