From 96e3ae65bec337e56a9bf1e3d836e51d4c316cbc Mon Sep 17 00:00:00 2001 From: Luigi Ranghetti <6874239+ranghetti@users.noreply.github.com> Date: Tue, 4 May 2021 15:12:06 +0200 Subject: [PATCH] Update documentation and version (#402) --- .github/workflows/R-CMD-check.yaml | 1 + .github/workflows/R-CMD-check_sf_develop.yaml | 1 + DESCRIPTION | 2 +- NEWS.md | 20 +++ R/abs2rel.R | 8 +- R/s2_list.R | 2 +- R/sen2r.R | 14 +- README.Rmd | 5 +- README.md | 9 +- cran-comments.md | 19 +-- docs/404.html | 2 +- docs/CODE-OF-CONDUCT.html | 2 +- docs/ISSUE_TEMPLATE.html | 2 +- docs/LICENSE.html | 2 +- docs/articles/docker.html | 2 +- docs/articles/index.html | 2 +- docs/articles/installation.html | 2 +- docs/articles/outstructure.html | 2 +- docs/articles/sen2r_cmd.html | 2 +- docs/articles/sen2r_gui.html | 2 +- docs/authors.html | 2 +- docs/index.html | 17 +-- docs/news/index.html | 137 +++++++++++------- docs/pkgdown.yml | 2 +- docs/reference/abs2rel.html | 24 +-- docs/reference/add_rgb_image.html | 2 +- docs/reference/add_tile_suffix.html | 2 +- docs/reference/build_example_param_file.html | 4 +- docs/reference/calcindex.html | 2 +- docs/reference/check_gdal.html | 6 +- docs/reference/check_gui_deps.html | 2 +- docs/reference/check_param_list.html | 2 +- docs/reference/check_sen2r_deps.html | 2 +- docs/reference/compute_s2_paths.html | 2 +- docs/reference/comsub.html | 2 +- docs/reference/create_indices_db.html | 2 +- docs/reference/create_s2_dop.html | 2 +- docs/reference/dontuse.html | 2 +- docs/reference/expand_path.html | 2 +- docs/reference/expect_equal_crs.html | 2 +- docs/reference/fix_envi_format.html | 2 +- docs/reference/gdalUtil.html | 10 +- docs/reference/gdal_abs2rel_rel2abs.html | 4 +- docs/reference/gdal_warp.html | 2 +- docs/reference/gdalwarp_grid.html | 2 +- docs/reference/gipp.html | 27 +--- docs/reference/gipp_init.html | 2 +- docs/reference/give_write_permission.html | 2 +- docs/reference/ignorelist.html | 2 +- docs/reference/index.html | 2 +- docs/reference/init_python.html | 2 +- docs/reference/install_aria2.html | 2 +- docs/reference/install_sen2cor.html | 2 +- docs/reference/list_indices.html | 2 +- docs/reference/load_binpaths.html | 2 +- docs/reference/load_extent.html | 2 +- docs/reference/mountpoint.html | 2 +- docs/reference/nn.html | 2 +- docs/reference/normalize_path.html | 2 +- docs/reference/path_check.html | 2 +- docs/reference/print_message.html | 2 +- docs/reference/projpar.html | 2 +- docs/reference/raster2rgb.html | 2 +- docs/reference/raster_metadata.html | 24 +-- docs/reference/s2_calcindices.html | 6 +- docs/reference/s2_defNA.html | 2 +- docs/reference/s2_dop.html | 55 +++---- docs/reference/s2_download.html | 4 +- docs/reference/s2_gui.html | 2 +- docs/reference/s2_list.html | 26 ++-- docs/reference/s2_mask.html | 6 +- docs/reference/s2_merge.html | 2 +- docs/reference/s2_order.html | 44 +++--- docs/reference/s2_rgb.html | 10 +- docs/reference/s2_thumbnails.html | 2 +- docs/reference/s2_tiles-1.png | Bin 47333 -> 18507 bytes docs/reference/s2_tiles.html | 23 +-- docs/reference/s2_translate.html | 2 +- docs/reference/safe_getMetadata.html | 4 +- docs/reference/safe_is_online.html | 8 +- docs/reference/safe_shortname.html | 2 +- docs/reference/safelist-class.html | 62 ++++---- docs/reference/scihub_login.html | 22 ++- docs/reference/sen2cor.html | 5 +- docs/reference/sen2r.html | 70 ++++----- docs/reference/sen2r_getElements.html | 2 +- docs/reference/sen2r_process_report.html | 2 +- docs/reference/smooth_mask.html | 2 +- docs/reference/st_as_text_2.html | 2 +- docs/reference/st_crs2.html | 2 +- docs/reference/stack2rgb.html | 2 +- docs/reference/str_pad2.html | 2 +- docs/reference/suppress_warnings.html | 2 +- docs/reference/tile_utmzone.html | 2 +- docs/reference/tiles_intersects.html | 6 +- docs/reference/trace_function.html | 2 +- index.Rmd | 5 +- index.md | 9 +- man/abs2rel.Rd | 8 +- 99 files changed, 414 insertions(+), 415 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 8369ac3d..c1075ce1 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -3,6 +3,7 @@ on: push: branches: + - master - devel pull_request: branches: diff --git a/.github/workflows/R-CMD-check_sf_develop.yaml b/.github/workflows/R-CMD-check_sf_develop.yaml index 1f0f8e90..e22eddb8 100644 --- a/.github/workflows/R-CMD-check_sf_develop.yaml +++ b/.github/workflows/R-CMD-check_sf_develop.yaml @@ -3,6 +3,7 @@ on: push: branches: + - master - devel name: R-CMD-check_sf_develop diff --git a/DESCRIPTION b/DESCRIPTION index f8ae8dc5..6b75a4cb 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: sen2r Type: Package Title: Find, Download and Process Sentinel-2 Data -Version: 1.4.2.9002 +Version: 1.4.3 Authors@R: c(person("Luigi", "Ranghetti", email = "luigi@ranghetti.info", role = c("aut", "cre"), diff --git a/NEWS.md b/NEWS.md index f0ef0657..68a8b4e1 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,23 @@ +# Version 1.4.3 + +## Minor changes +- Use API URLs `https://apihub.copernicus.eu/apihub` instead of + `https://scihub.copernicus.eu/apihub` as required after changes at + SciHub side (https://scihub.copernicus.eu/news/News00868). +- Manage multiple SciHub credentials when ordering SAFE archives from LTA + (experimental). + +## Documentation +- Replace `http://` with `https://` in documentation _URLs. + +## Checks +- Replace Travis with GitHub Actions (and fix tests accordingly). + +## Bug fixes +- Avoid topology errors on S2 footprints (to fix errors using `{sf}` 1.0). +- Manage situations like in #397 (too many nodes for ESA API query). + + # Version 1.4.2 ## Bug fixes diff --git a/R/abs2rel.R b/R/abs2rel.R index aa3e8ea4..6a53cc61 100644 --- a/R/abs2rel.R +++ b/R/abs2rel.R @@ -25,15 +25,15 @@ #' #' @examples #' # the reference path -#' (ref_path <- system.file(package="sen2r")) +#' (ref_path <- system.file(package="sf")) #' # a path with a common parent with ref_path -#' (in_path_1 <- system.file(package="gdalUtils")) +#' (in_path_1 <- system.file(package="rgdal")) #' # a path included in ref_path -#' (in_path_2 <- system.file("R/abs2rel.R", package="sen2r")) +#' (in_path_2 <- system.file("DESCRIPTION", package="sf")) #' # a path external to ref_path (in Linux) #' (in_path_3 <- system.file(package="base")) #' # an unexisting path -#' (in_path_4 <- gsub("sen2r","r2sen",ref_path)) +#' (in_path_4 <- gsub("sf$","unexistingpackage",ref_path)) #' #' abs2rel(in_path_1, ref_path) #' diff --git a/R/s2_list.R b/R/s2_list.R index 04e38cbd..cfdc99e3 100644 --- a/R/s2_list.R +++ b/R/s2_list.R @@ -237,7 +237,7 @@ s2_list <- function(spatial_extent = NULL, ) } - spatial_extent <- suppressWarnings(sf::st_union(spatial_extent)) + spatial_extent <- suppressMessages(sf::st_union(spatial_extent)) if (any(!st_is_valid(spatial_extent))) { spatial_extent <- st_make_valid(spatial_extent) } diff --git a/R/sen2r.R b/R/sen2r.R index e9cd0ccb..21e50e7b 100644 --- a/R/sen2r.R +++ b/R/sen2r.R @@ -1262,9 +1262,9 @@ sen2r <- function(param_list = NULL, error = function(e) {st_sfc(st_polygon(), crs = 4326)} ) }) - s2_dt_centroid <- round(st_coordinates( + s2_dt_centroid <- suppressMessages(round(st_coordinates( st_centroid(st_transform(do.call("c",s2_footprint_sf_l), 3857)) - ), -3) # rounded to 1 km + ), -3)) # rounded to 1 km s2_dt[,c("centroid_x", "centroid_y") := list(s2_dt_centroid[,"X"], s2_dt_centroid[,"Y"])] } else { s2_dt[,c("centroid_x", "centroid_y") := list(numeric(), numeric())] @@ -1281,9 +1281,9 @@ sen2r <- function(param_list = NULL, "id_tile", "creation_datetime", "footprint"), format = "data.table" ) - s2_existing_dt_centroid <- round(st_coordinates( + s2_existing_dt_centroid <- suppressMessages(round(st_coordinates( st_centroid(st_transform(st_as_sfc(s2_existing_dt$footprint, crs = 4326), 3857)) - ), -3) # rounded to 1 km + ), -3)) # rounded to 1 km s2_existing_dt[,c("centroid_x", "centroid_y") := list(s2_existing_dt_centroid[,"X"], s2_existing_dt_centroid[,"Y"])] # make a vector with only metadata to be used for the comparison s2_meta_pasted <- s2_dt[,list("V1" = paste( @@ -1374,7 +1374,7 @@ sen2r <- function(param_list = NULL, } # if extent and footprint are defined, filter SAFEs on footprints if (all(!is(pm$extent, "logical"), !anyNA(pm$extent), !is.na(s2_dt$footprint))) { - extent_dissolved <- st_union(pm$extent) + extent_dissolved <- suppressMessages(st_union(pm$extent)) if (any(!st_is_valid(extent_dissolved))) { extent_dissolved <- st_make_valid(extent_dissolved) } @@ -2089,9 +2089,9 @@ sen2r <- function(param_list = NULL, fill = TRUE ) if (nrow(s2_downloaded_dt)>0) { - s2_downloaded_dt_centroid <- round(st_coordinates( + s2_downloaded_dt_centroid <- suppressMessages(round(st_coordinates( st_centroid(st_transform(st_as_sfc(s2_downloaded_dt$footprint, crs = 4326), 3857)) - ), -3) # rounded to 1 km + ), -3)) # rounded to 1 km s2_downloaded_dt[,c("centroid_x", "centroid_y") := list( s2_downloaded_dt_centroid[,"X"], s2_downloaded_dt_centroid[,"Y"] diff --git a/README.Rmd b/README.Rmd index ace88550..375020ff 100644 --- a/README.Rmd +++ b/README.Rmd @@ -1,8 +1,7 @@ --- output: github_document: - toc: yes - toc_depth: 2 + toc: no fig_caption: no --- @@ -20,7 +19,7 @@ knitr::opts_chunk$set( [![CRAN Status](https://www.r-pkg.org/badges/version-ago/sen2r)](https://cran.r-project.org/package=sen2r) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1240384.svg)](https://doi.org/10.5281/zenodo.1240384) [![CRAN RStudio mirror downloads](https://cranlogs.r-pkg.org/badges/last-month/sen2r?color=green)](https://cran.rstudio.com/web/packages/ggplot2/index.html) -[![R-CMD-check](https://github.com/ranghetti/sen2r/workflows/R-CMD-check/badge.svg)](https://github.com/ranghetti/sen2r/actions) +[![R-CMD-check](https://github.com/ranghetti/sen2r/workflows/R-CMD-check/badge.svg)](https://github.com/ranghetti/sen2r/actions/workflows/R-CMD-check.yaml) [![Coverage Status](http://img.shields.io/codecov/c/github/ranghetti/sen2r/master.svg)](http://codecov.io/github/ranghetti/sen2r?branch=master) [![Docker Automated build](https://img.shields.io/docker/automated/ranghetti/sen2r.svg)](https://hub.docker.com/r/ranghetti/sen2r) [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](http://www.gnu.org/licenses/gpl-3.0) diff --git a/README.md b/README.md index 9c3a710f..978cff8f 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,4 @@ - - [sen2r: Find, Download and Process Sentinel-2 - Data](#sen2r-find-download-and-process-sentinel-2-data) - - [Installation](#installation) - - [Usage](#usage) - - [Credits](#credits) - - [Contributing](#contributing) - @@ -15,7 +8,7 @@ Status](https://www.r-pkg.org/badges/version-ago/sen2r)](https://cran.r-project. [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1240384.svg)](https://doi.org/10.5281/zenodo.1240384) [![CRAN RStudio mirror downloads](https://cranlogs.r-pkg.org/badges/last-month/sen2r?color=green)](https://cran.rstudio.com/web/packages/ggplot2/index.html) -[![R-CMD-check](https://github.com/ranghetti/sen2r/workflows/R-CMD-check/badge.svg)](https://github.com/ranghetti/sen2r/actions) +[![R-CMD-check](https://github.com/ranghetti/sen2r/workflows/R-CMD-check/badge.svg)](https://github.com/ranghetti/sen2r/actions/workflows/R-CMD-check.yaml) [![Coverage Status](http://img.shields.io/codecov/c/github/ranghetti/sen2r/master.svg)](http://codecov.io/github/ranghetti/sen2r?branch=master) [![Docker Automated diff --git a/cran-comments.md b/cran-comments.md index 5b68362c..7624b512 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,4 +1,4 @@ -# sen2r v. 1.4.2 +# sen2r v. 1.4.3 ## Test environments * [local installation] Ubuntu 18.04, 64 bit, R 4.0.4 @@ -7,19 +7,4 @@ * [win-builder] R unstable, 4.0.4 and 3.6.3 (devel, release and oldrelease) ## R CMD check results -There were no ERRORs nor WARNINGs. - -There was 1 NOTE: -Days since last update: 2 - -This submission is finalised to fix an error found by CRAN checks -on the last release submitted 2 days ago (see below). - -## CRAN review -> Dear maintainer, -Please see the problems shown on -. -Please correct before 2021-03-18 to safely retain your package on CRAN. - -The error were fixed -(see commit 6010b3f327f3c71392e47c2adc12071f50c29ee7). +There were no ERRORs, WARNINGs nor NOTEs. diff --git a/docs/404.html b/docs/404.html index 710b6063..c8780329 100644 --- a/docs/404.html +++ b/docs/404.html @@ -71,7 +71,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/CODE-OF-CONDUCT.html b/docs/CODE-OF-CONDUCT.html index bbde6719..50ae1106 100644 --- a/docs/CODE-OF-CONDUCT.html +++ b/docs/CODE-OF-CONDUCT.html @@ -71,7 +71,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/ISSUE_TEMPLATE.html b/docs/ISSUE_TEMPLATE.html index 28b80a70..ba4f4937 100644 --- a/docs/ISSUE_TEMPLATE.html +++ b/docs/ISSUE_TEMPLATE.html @@ -71,7 +71,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/LICENSE.html b/docs/LICENSE.html index 32c06af3..c66ef83f 100644 --- a/docs/LICENSE.html +++ b/docs/LICENSE.html @@ -71,7 +71,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/articles/docker.html b/docs/articles/docker.html index 727c74ee..50f24045 100644 --- a/docs/articles/docker.html +++ b/docs/articles/docker.html @@ -31,7 +31,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/articles/index.html b/docs/articles/index.html index a88f71bb..17500d73 100644 --- a/docs/articles/index.html +++ b/docs/articles/index.html @@ -71,7 +71,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/articles/installation.html b/docs/articles/installation.html index 3abe8f57..47b2130a 100644 --- a/docs/articles/installation.html +++ b/docs/articles/installation.html @@ -31,7 +31,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/articles/outstructure.html b/docs/articles/outstructure.html index 81351870..d6ff725c 100644 --- a/docs/articles/outstructure.html +++ b/docs/articles/outstructure.html @@ -31,7 +31,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/articles/sen2r_cmd.html b/docs/articles/sen2r_cmd.html index ee811756..d09fe64a 100644 --- a/docs/articles/sen2r_cmd.html +++ b/docs/articles/sen2r_cmd.html @@ -31,7 +31,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/articles/sen2r_gui.html b/docs/articles/sen2r_gui.html index 2383cc03..728c76b1 100644 --- a/docs/articles/sen2r_gui.html +++ b/docs/articles/sen2r_gui.html @@ -31,7 +31,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/authors.html b/docs/authors.html index b7b141b2..98fd5632 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -71,7 +71,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/index.html b/docs/index.html index f708be67..aa5b715b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -38,7 +38,7 @@ sen2r - 1.4.2 + 1.4.3 @@ -116,18 +116,7 @@
- - +

@@ -155,13 +155,48 @@

Changelog

Source: NEWS.md
+
+

+Version 1.4.3 Unreleased +

+
+

+Minor changes

+
    +
  • Use API URLs https://apihub.copernicus.eu/apihub instead of https://scihub.copernicus.eu/apihub as required after changes at SciHub side (https://scihub.copernicus.eu/news/News00868).
  • +
  • Manage multiple SciHub credentials when ordering SAFE archives from LTA (experimental).
  • +
+
+
+

+Documentation

+
    +
  • Replace http:// with https:// in documentation _URLs.
  • +
+
+
+

+Checks

+
    +
  • Replace Travis with GitHub Actions (and fix tests accordingly).
  • +
+
+
+

+Bug fixes

+
    +
  • Avoid topology errors on S2 footprints (to fix errors using sf 1.0).
  • +
  • Manage situations like in #397 (too many nodes for ESA API query).
  • +
+
+

Version 1.4.2 2021-03-04

-
+

-Bug fixes

+Bug fixes
  • Fix CRAN error (invalid example).
@@ -171,9 +206,9 @@

Version 1.4.1 2021-03-02

-
+

-Minor changes

+Minor changes
  • Prevent Copernicus mismatches between API Hub and dhus (#381)..
  • Rescale resolutions lower than required in s2_translate() (#368).
  • @@ -181,9 +216,9 @@

  • Manage error 429 for dhus (resend APIs more times in case of too many requests).
-
+

-Bug fixes

+Bug fixes
  • Partially fix #368 (determine the output projection before processing).
  • Fix #371.
  • @@ -210,9 +245,9 @@

-
+

-Minor changes

+Minor changes
  • Add templates for GitHub issues.
  • Do not return error in tests in case of SciHub server down (#354).
  • @@ -227,9 +262,9 @@

    s2_download() no more uses existing SAFE products instead than downloading new equivalent ones (this in order to manage images split in two SAFE archives).

-
+

-Documentation

+Documentation
  • Update vignette data (granting using online data) (#360).
@@ -239,9 +274,9 @@

Version 1.3.9 2020-10-14

-
+

-Bug fixes

+Bug fixes
  • Fix check errors due to rgdal changes in version 1.6-17.
@@ -251,9 +286,9 @@

Version 1.3.8 2020-08-26

-
+

-Minor changes

+Minor changes
  • Add argument service to s2_list() and s2_download() for using "dhus" API service instead of default "apihub" (this could be useful in case of apihub downtimes).
  • Add experimental argument kill_errored to sen2cor() (see documentation).
  • @@ -269,9 +304,9 @@

    build_example_param_file() now generates more recent images, 2020-08-01 instead than 2019-07-23 (this because the previous ones required two SAFE which are now on LTA); the same was done for some tests.

-
+

-Bug fixes

+Bug fixes @@ -288,27 +323,27 @@

  • Some additional products are now supported: CLD, SNW, AOT, WVP (see documentation for description). The GUI and internal functions were modified to support their selection and generation.
  • -
    +

    -Minor changes

    +Minor changes
    • Add indices Red / Green / Blue Chromatic Coordinate (Rcc, Gcc, Bcc) and Excess Green (ExG) (#330).
    • All methods based on runtime GDAL are now discouraged and never called by default (before this version, they were used in case GDAL was found on paths.json).
    • Output GeoTIFF files are now tiled.
    -
    +

    -Documentation

    +Documentation
    -
    +

    -Bug fixes

    +Bug fixes @@ -318,9 +353,9 @@

    Version 1.3.6 2020-06-04

    -
    +

    -Bug fixes

    +Bug fixes
    • Fix GDAL usage over Windows (a new version was specifically released for this bug because it caused sen2r stopping for many Windows users).
    @@ -338,25 +373,25 @@

  • “Graphical” packages needed to run the GUI (leaflet, leafpm, mapedit, shiny, shinyFiles, shinydashboard, shinyjs, shinyWidgets) are now suggested dependencies. In the case they are missing and the user tries to run the GUI, an error is returned with the command for installing them.
  • -
    +

    -Minor changes

    +Minor changes
    • Edit the GUI in order to disable selectors when dependencies required to run them are not available.
    • Automatic tests were reorganised and improved after GDAL changes.
    -
    +

    -Documentation

    +Documentation
    • Document sen2r installation over Ubuntu Focal.
    • Update documentation according to GDAL changes.
    -
    +

    -Bug fixes

    +Bug fixes
    • Fix Travis-lwgeom incompatibilities (#319)
    • Fix #310 and #311
    • @@ -375,9 +410,9 @@

      gdalUtil(): function used to perform GDAL operations, calling C-based GDAL utilities using sf::gdal_utils(), and Python-based ones through system calls (a standalone GDAL environment is request to do it, as it was in previous versions).

    -
    +

    -Documentation

    +Documentation
    • Improve documentation of vignette “Output file structure”, including the description of output products.
    @@ -390,18 +425,18 @@

    rgdal is now an explicit dependency (this because it is used by raster but it is not a mandatory dependency).

    -
    +

    -Minor changes

    +Minor changes
    • GDAL C-based utilities are called using internal GDAL routines in package sf (see gdalUtil()). This allows reducing the use of external runtime dependencies.
    • GDAL messages are suppressed if the suggested dependency sys is installed (#257).
    • The new section of the vignette “Output file documentation” regarding products is linked in the GUI.
    -
    +

    -Bug fixes

    +Bug fixes
    • Re-fix #292.
    • Fix #308.
    • @@ -432,16 +467,16 @@

      RcppTOML (used to manage TOML ignore list TOML file).

    -
    +

    -Documentation

    +Documentation
    • Improve the installation page.
    -
    +

    -Bug fixes

    +Bug fixes
    • Support for sf >= 0.9 (#260)
    • Patch for stars issue, made to resolve the temporary incompatibility with sf >= 0.9 (see issue #295)
    • @@ -479,9 +514,9 @@

    • Prepare to move shiny* and leaflet* dependencies to suggested (this will be done in a future release).
    -
    +

    -Minor changes

    +Minor changes
    • Allow choosing if ordering SAFE products from dhus or apihub (experimental).
    • Replace all GET() calls with RETRY(), so to avoid errors in case of temporary unavailability of services.
    • @@ -501,9 +536,9 @@

    • Documentation was improved with three new vignettes about GUI usage, command line usage and output structure.
    -
    +

    -Bug fixes

    +Bug fixes
    • Restore checking environmental variable in init_python() (this urgent bug fixing was the reason of the urgent release of the current version).
    • Fix building offline footprint.
    • @@ -518,9 +553,9 @@

    • In the GUI, the maximum allowed cloud cover was set to 100% accordingly to the sen2r() defaults.
    -
    +

    -Minor changes

    +Minor changes
    • Add check on max_mask - mask_type coherence (if max_mask < 100 and mask_type is not specified, a warning is returned).
    • Suppress some useless warnings.
    • @@ -576,9 +611,9 @@

      use_python argument in sen2r() was deprecated (no longer needed).

    -
    +

    -Minor changes

    +Minor changes
    • All components of the order (available, ordered and notordered) are now saved in JSON files. This allows using them to re-do an order, specifying if re-ordering already ordered datasets or only order the ones identified as “notordered” (based on new argument “reorder”).
    • Output messages are formatted so not to exceed output line length.
    • @@ -646,9 +681,9 @@

      safe_shortname(): arguments tiles, force_tiles, set.seed and multiple_names were deprecated, since they are not used with SAFE compact names (old names are no more supported);

    -
    +

    -Minor changes

    +Minor changes
    • Sys.setenv() effects now do not affect the R environment after exiting from sen2r() execution;
    • diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 390061b2..9b281e24 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -7,5 +7,5 @@ articles: outstructure: outstructure.html sen2r_cmd: sen2r_cmd.html sen2r_gui: sen2r_gui.html -last_built: 2021-04-13T08:44Z +last_built: 2021-05-04T12:31Z diff --git a/docs/reference/abs2rel.html b/docs/reference/abs2rel.html index 524d2ab5..d1e3488a 100644 --- a/docs/reference/abs2rel.html +++ b/docs/reference/abs2rel.html @@ -75,7 +75,7 @@ sen2r - 1.4.2 + 1.4.3
    @@ -212,24 +212,24 @@

    AuthorExamples

    # the reference path -(ref_path <- system.file(package="sen2r")) -
    #> [1] "/home/lranghetti/share/git/github/ranghetti/sen2r/inst"
    # a path with a common parent with ref_path -(in_path_1 <- system.file(package="gdalUtils")) -
    #> [1] "/home/lranghetti/R/x86_64-pc-linux-gnu-library/4.0/gdalUtils"
    # a path included in ref_path -(in_path_2 <- system.file("R/abs2rel.R", package="sen2r")) -
    #> [1] "/home/lranghetti/share/git/github/ranghetti/sen2r/R/abs2rel.R"
    # a path external to ref_path (in Linux) +(ref_path <- system.file(package="sf")) +
    #> [1] "/home/lranghetti/R/x86_64-pc-linux-gnu-library/4.0/sf"
    # a path with a common parent with ref_path +(in_path_1 <- system.file(package="rgdal")) +
    #> [1] "/home/lranghetti/R/x86_64-pc-linux-gnu-library/4.0/rgdal"
    # a path included in ref_path +(in_path_2 <- system.file("DESCRIPTION", package="sf")) +
    #> [1] "/home/lranghetti/R/x86_64-pc-linux-gnu-library/4.0/sf/DESCRIPTION"
    # a path external to ref_path (in Linux) (in_path_3 <- system.file(package="base"))
    #> [1] "/usr/lib/R/library/base"
    # an unexisting path -(in_path_4 <- gsub("sen2r","r2sen",ref_path)) -
    #> [1] "/home/lranghetti/share/git/github/ranghetti/r2sen/inst"
    +(in_path_4 <- gsub("sf$","unexistingpackage",ref_path)) +
    #> [1] "/home/lranghetti/R/x86_64-pc-linux-gnu-library/4.0/unexistingpackage"
    abs2rel(in_path_1, ref_path) -
    #> [1] "../../../../../../R/x86_64-pc-linux-gnu-library/4.0/gdalUtils"
    +
    #> [1] "../rgdal"
    abs2rel(in_path_2, ref_path) -
    #> [1] "../R/abs2rel.R"
    +
    #> [1] "./DESCRIPTION"
    suppressWarnings(abs2rel(in_path_3, ref_path))
    #> [1] "/usr/lib/R/library/base"
    suppressWarnings(abs2rel(in_path_4, ref_path, mustWork=FALSE)) -
    #> [1] "../../r2sen/inst"
    +
    #> [1] "../unexistingpackage"
    suppressWarnings(abs2rel(ref_path, ref_path))
    #> [1] "."
    diff --git a/docs/reference/add_rgb_image.html b/docs/reference/add_rgb_image.html index e7155f1f..539fc21b 100644 --- a/docs/reference/add_rgb_image.html +++ b/docs/reference/add_rgb_image.html @@ -72,7 +72,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/add_tile_suffix.html b/docs/reference/add_tile_suffix.html index 13b8aa0a..f7b551f6 100644 --- a/docs/reference/add_tile_suffix.html +++ b/docs/reference/add_tile_suffix.html @@ -76,7 +76,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/build_example_param_file.html b/docs/reference/build_example_param_file.html index ca78a6c7..14a2e913 100644 --- a/docs/reference/build_example_param_file.html +++ b/docs/reference/build_example_param_file.html @@ -74,7 +74,7 @@ sen2r - 1.4.2 + 1.4.3
    @@ -204,7 +204,7 @@

    AuthorExamples

    build_example_param_file() -
    #> [1] "/tmp/RtmpZkOKZZ/file6c152f11a644_sen2r_params.json"
    +
    #> [1] "/tmp/RtmpieHqOv/filee20b8e8be69_sen2r_params.json"
    diff --git a/docs/reference/check_gdal.html b/docs/reference/check_gdal.html index 93f8c972..f58d84bf 100644 --- a/docs/reference/check_gdal.html +++ b/docs/reference/check_gdal.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3
    @@ -218,9 +218,9 @@

    AuthorLuigi Ranghetti, phD (2019) luigi@ranghetti.info

    Examples

    -
    # \donttest{ +
    if (FALSE) { check_gdal() -
    #> GDAL version in use: 3.0.4
    # } +}
    diff --git a/docs/reference/check_param_list.html b/docs/reference/check_param_list.html index a3145ec7..11e24c14 100644 --- a/docs/reference/check_param_list.html +++ b/docs/reference/check_param_list.html @@ -74,7 +74,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/check_sen2r_deps.html b/docs/reference/check_sen2r_deps.html index 7cc8301e..bebe65c8 100644 --- a/docs/reference/check_sen2r_deps.html +++ b/docs/reference/check_sen2r_deps.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/compute_s2_paths.html b/docs/reference/compute_s2_paths.html index 6497491e..1923514b 100644 --- a/docs/reference/compute_s2_paths.html +++ b/docs/reference/compute_s2_paths.html @@ -81,7 +81,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/comsub.html b/docs/reference/comsub.html index ba55feb3..d0564c7f 100644 --- a/docs/reference/comsub.html +++ b/docs/reference/comsub.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/create_indices_db.html b/docs/reference/create_indices_db.html index 75f1bce9..531a53d3 100644 --- a/docs/reference/create_indices_db.html +++ b/docs/reference/create_indices_db.html @@ -78,7 +78,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/create_s2_dop.html b/docs/reference/create_s2_dop.html index 961a8d38..73b53127 100644 --- a/docs/reference/create_s2_dop.html +++ b/docs/reference/create_s2_dop.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/dontuse.html b/docs/reference/dontuse.html index 68038e0c..6ef1765f 100644 --- a/docs/reference/dontuse.html +++ b/docs/reference/dontuse.html @@ -72,7 +72,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/expand_path.html b/docs/reference/expand_path.html index b9b17d5b..52f72b7f 100644 --- a/docs/reference/expand_path.html +++ b/docs/reference/expand_path.html @@ -77,7 +77,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/expect_equal_crs.html b/docs/reference/expect_equal_crs.html index 3399c59e..43fae515 100644 --- a/docs/reference/expect_equal_crs.html +++ b/docs/reference/expect_equal_crs.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/fix_envi_format.html b/docs/reference/fix_envi_format.html index cb556ac5..3656d1b1 100644 --- a/docs/reference/fix_envi_format.html +++ b/docs/reference/fix_envi_format.html @@ -81,7 +81,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/gdalUtil.html b/docs/reference/gdalUtil.html index 3737e066..fe89be12 100644 --- a/docs/reference/gdalUtil.html +++ b/docs/reference/gdalUtil.html @@ -76,7 +76,7 @@ sen2r - 1.4.2 + 1.4.3
    @@ -254,7 +254,7 @@

    Examp out0 <- gdalUtil("info", examplename, quiet = TRUE) message(out0)

    #> Driver: GTiff/GeoTIFF -#> Files: /home/lranghetti/share/git/github/ranghetti/sen2r/inst/extdata/out/S2A2A_20190723_022_Barbellino_BOA_10.tif +#> Files: /tmp/RtmpFg5RiI/temp_libpathd6f07109c1a6/sen2r/extdata/out/S2A2A_20190723_022_Barbellino_BOA_10.tif #> Size is 24, 42 #> Coordinate System is: #> PROJCRS["WGS 84 / UTM zone 32N", @@ -352,7 +352,9 @@

    Examp oldpar <- par(mfrow = c(1,2), mar = rep(0,4)) image(stars::read_stars(examplename), rgb = c(11,8,4), useRaster = TRUE) image(stars::read_stars(outname2), rgb = c(11,8,4), useRaster = TRUE) -

    +
    # } + +if (FALSE) { ## gdal_calc outname3 <- tempfile(fileext = ".tif") ndvirefname <- system.file( @@ -368,7 +370,7 @@

    Examp oldpar <- par(mfrow = c(1,2), mar = rep(0,4)) image(stars::read_stars(ndvirefname), useRaster = TRUE) image(stars::read_stars(outname3), useRaster = TRUE) -

    # } +}
    @@ -231,7 +231,7 @@

    Examp rel_vrt_content <- readLines(rel_vrt) ex_vrt_content[ex_vrt_content != abs_vrt_content] # Original line

    #> [1] " <SourceDataset relativeToVRT=\"1\">S2A2A_20190723_022_Barbellino_RGB432B_10.tif</SourceDataset>"
    abs_vrt_content[ex_vrt_content != abs_vrt_content] # Modified line -
    #> [1] " <SourceDataset relativeToVRT=\"0\">/home/lranghetti/share/git/github/ranghetti/sen2r/inst/extdata/out/S2A2A_20190723_022_Barbellino_RGB432B_10.tif</SourceDataset>"
    rel_vrt_content[ex_vrt_content != rel_vrt_content] # No edits +
    #> [1] " <SourceDataset relativeToVRT=\"0\">/tmp/RtmpFg5RiI/temp_libpathd6f07109c1a6/sen2r/extdata/out/S2A2A_20190723_022_Barbellino_RGB432B_10.tif</SourceDataset>"
    rel_vrt_content[ex_vrt_content != rel_vrt_content] # No edits
    #> character(0)
    diff --git a/docs/reference/gdalwarp_grid.html b/docs/reference/gdalwarp_grid.html index 84487165..a553afa3 100644 --- a/docs/reference/gdalwarp_grid.html +++ b/docs/reference/gdalwarp_grid.html @@ -75,7 +75,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/gipp.html b/docs/reference/gipp.html index bbe41d2e..82310a48 100644 --- a/docs/reference/gipp.html +++ b/docs/reference/gipp.html @@ -75,7 +75,7 @@ sen2r - 1.4.2 + 1.4.3
    @@ -229,24 +229,15 @@

    AuthorLuigi Ranghetti, phD (2020) luigi@ranghetti.info

    Examples

    -
    # \donttest{ +
    if (FALSE) { +if (!is.null(load_binpaths()$sen2cor)) { # Read default values read_gipp(c("dem_directory", "dem_reference")) -
    #> $dem_directory -#> [1] "NONE" -#> -#> $dem_reference -#> [1] "http://data_public:GDdci@data.cgiar-csi.org/srtm/tiles/GeoTIFF/" -#>
    # Set the use of a topographic correction +# Set the use of a topographic correction set_gipp(use_dem = TRUE, gipp_path = gipp_temp <- tempfile()) # Read the parameters in the created temporary files read_gipp(c("DEM_Directory", "DEM_Reference"), gipp_path = gipp_temp) -
    #> $DEM_Directory -#> [1] "/home/lranghetti/.sen2r/srtm90" -#> -#> $DEM_Reference -#> [1] "http://data_public:GDdci@data.cgiar-csi.org/srtm/tiles/GeoTIFF/" -#>
    # Set not to use a topographic correction +# Set not to use a topographic correction set_gipp(use_dem = FALSE, gipp_path = gipp_temp <- tempfile()) # This is equivalent to: # set_gipp( @@ -255,12 +246,8 @@

    Examp # ) # Read again the parameters in the created temporary files read_gipp(c("DEM_Directory", "DEM_Reference"), gipp_path = gipp_temp) -

    #> $DEM_Directory -#> [1] "NONE" -#> -#> $DEM_Reference -#> [1] "http://data_public:GDdci@data.cgiar-csi.org/srtm/tiles/GeoTIFF/" -#>
    # } +} +}
    diff --git a/docs/reference/give_write_permission.html b/docs/reference/give_write_permission.html index 48dc9f6b..8e1237d7 100644 --- a/docs/reference/give_write_permission.html +++ b/docs/reference/give_write_permission.html @@ -76,7 +76,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/ignorelist.html b/docs/reference/ignorelist.html index 08a38a7f..fbcac6f0 100644 --- a/docs/reference/ignorelist.html +++ b/docs/reference/ignorelist.html @@ -74,7 +74,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/index.html b/docs/reference/index.html index 6e7dbd6d..61bc63c8 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -71,7 +71,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/init_python.html b/docs/reference/init_python.html index 26b004b7..8c531908 100644 --- a/docs/reference/init_python.html +++ b/docs/reference/init_python.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/install_aria2.html b/docs/reference/install_aria2.html index 87f16b35..f3927bef 100644 --- a/docs/reference/install_aria2.html +++ b/docs/reference/install_aria2.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/install_sen2cor.html b/docs/reference/install_sen2cor.html index 2c5b50b1..e26611e1 100644 --- a/docs/reference/install_sen2cor.html +++ b/docs/reference/install_sen2cor.html @@ -75,7 +75,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/list_indices.html b/docs/reference/list_indices.html index ddd9cc05..18b05d6c 100644 --- a/docs/reference/list_indices.html +++ b/docs/reference/list_indices.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/load_binpaths.html b/docs/reference/load_binpaths.html index ea5f689e..e88c19b6 100644 --- a/docs/reference/load_binpaths.html +++ b/docs/reference/load_binpaths.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/load_extent.html b/docs/reference/load_extent.html index 5300dcc3..d1f220a3 100644 --- a/docs/reference/load_extent.html +++ b/docs/reference/load_extent.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/mountpoint.html b/docs/reference/mountpoint.html index 8ceced31..15ce93eb 100644 --- a/docs/reference/mountpoint.html +++ b/docs/reference/mountpoint.html @@ -74,7 +74,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/nn.html b/docs/reference/nn.html index 3900900d..efe1cb5d 100644 --- a/docs/reference/nn.html +++ b/docs/reference/nn.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/normalize_path.html b/docs/reference/normalize_path.html index 4588bcb6..57495270 100644 --- a/docs/reference/normalize_path.html +++ b/docs/reference/normalize_path.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/path_check.html b/docs/reference/path_check.html index 4ca79fe6..73a53c2c 100644 --- a/docs/reference/path_check.html +++ b/docs/reference/path_check.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/print_message.html b/docs/reference/print_message.html index cbfb0354..55acaf4d 100644 --- a/docs/reference/print_message.html +++ b/docs/reference/print_message.html @@ -72,7 +72,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/projpar.html b/docs/reference/projpar.html index a093411e..6c09047e 100644 --- a/docs/reference/projpar.html +++ b/docs/reference/projpar.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/raster2rgb.html b/docs/reference/raster2rgb.html index 289117f6..2e035445 100644 --- a/docs/reference/raster2rgb.html +++ b/docs/reference/raster2rgb.html @@ -74,7 +74,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/raster_metadata.html b/docs/reference/raster_metadata.html index 37441eb8..7f11a0ea 100644 --- a/docs/reference/raster_metadata.html +++ b/docs/reference/raster_metadata.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3 @@ -212,9 +212,9 @@

    Examp # \donttest{ # Return metadata as data.table raster_metadata(examplenames) -
    #> path -#> 1: /home/lranghetti/R/x86_64-pc-linux-gnu-library/4.0/stars/tif/L7_ETMs.tif -#> 2: /home/lranghetti/share/git/github/ranghetti/sen2r/inst/extdata/out/S2A2A_20190723_022_Barbellino_BOA_10.tif +
    #> path +#> 1: /home/lranghetti/R/x86_64-pc-linux-gnu-library/4.0/stars/tif/L7_ETMs.tif +#> 2: /tmp/RtmpFg5RiI/temp_libpathd6f07109c1a6/sen2r/extdata/out/S2A2A_20190723_022_Barbellino_BOA_10.tif #> valid res.x res.y size.x size.y nbands xmin ymin xmax ymax #> 1: TRUE 28.5 28.5 349 352 6 288776.3 9110729 298722.8 9120761 #> 2: TRUE 10.0 10.0 24 42 11 580560.0 5101700 580800.0 5102120 @@ -227,9 +227,9 @@

    Examp # Return some metadata as data.table raster_metadata(examplenames, c("res", "size", "bbox", "outformat")) -

    #> path -#> 1: /home/lranghetti/R/x86_64-pc-linux-gnu-library/4.0/stars/tif/L7_ETMs.tif -#> 2: /home/lranghetti/share/git/github/ranghetti/sen2r/inst/extdata/out/S2A2A_20190723_022_Barbellino_BOA_10.tif +
    #> path +#> 1: /home/lranghetti/R/x86_64-pc-linux-gnu-library/4.0/stars/tif/L7_ETMs.tif +#> 2: /tmp/RtmpFg5RiI/temp_libpathd6f07109c1a6/sen2r/extdata/out/S2A2A_20190723_022_Barbellino_BOA_10.tif #> valid res.x res.y size.x size.y xmin ymin xmax ymax outformat #> 1: TRUE 28.5 28.5 349 352 288776.3 9110729 298722.8 9120761 GTiff #> 2: TRUE 10.0 10.0 24 42 580560.0 5101700 580800.0 5102120 GTiff
    @@ -336,7 +336,7 @@

    Examp #> #> [[2]] #> [[2]]$path -#> [1] "/home/lranghetti/share/git/github/ranghetti/sen2r/inst/extdata/out/S2A2A_20190723_022_Barbellino_BOA_10.tif" +#> [1] "/tmp/RtmpFg5RiI/temp_libpathd6f07109c1a6/sen2r/extdata/out/S2A2A_20190723_022_Barbellino_BOA_10.tif" #> #> [[2]]$valid #> [1] TRUE @@ -403,10 +403,10 @@

    Examp system.file("extdata/settings/gdal_formats.json", package="sen2r") ) raster_metadata(examplenames, c("bbox", "proj")) -

    #> trying to read file: /home/lranghetti/share/git/github/ranghetti/sen2r/inst/extdata/settings/gdal_formats.json
    #> path -#> 1: /home/lranghetti/R/x86_64-pc-linux-gnu-library/4.0/stars/tif/L7_ETMs.tif -#> 2: /home/lranghetti/share/git/github/ranghetti/sen2r/inst/extdata/out/S2A2A_20190723_022_Barbellino_BOA_10.tif -#> 3: /home/lranghetti/share/git/github/ranghetti/sen2r/inst/extdata/settings/gdal_formats.json +
    #> trying to read file: /tmp/RtmpFg5RiI/temp_libpathd6f07109c1a6/sen2r/extdata/settings/gdal_formats.json
    #> path +#> 1: /home/lranghetti/R/x86_64-pc-linux-gnu-library/4.0/stars/tif/L7_ETMs.tif +#> 2: /tmp/RtmpFg5RiI/temp_libpathd6f07109c1a6/sen2r/extdata/out/S2A2A_20190723_022_Barbellino_BOA_10.tif +#> 3: /tmp/RtmpFg5RiI/temp_libpathd6f07109c1a6/sen2r/extdata/settings/gdal_formats.json #> valid xmin ymin xmax ymax #> 1: TRUE 288776.3 9110729 298722.8 9120761 #> 2: TRUE 580560.0 5101700 580800.0 5102120 diff --git a/docs/reference/s2_calcindices.html b/docs/reference/s2_calcindices.html index f4b2cc65..d0f980e8 100644 --- a/docs/reference/s2_calcindices.html +++ b/docs/reference/s2_calcindices.html @@ -74,7 +74,7 @@ sen2r - 1.4.2 + 1.4.3
    @@ -349,8 +349,8 @@

    Examp outdir = tempdir(), dataType = "Float32" ) -
    #> Carico il pacchetto richiesto: sp
    #> Carico il pacchetto richiesto: abind
    #> Carico il pacchetto richiesto: sf
    #> Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 7.0.0
    #> [2021-04-13 10:46:14] Computing index EVI on date 2019-07-23...
    ex_out -
    #> [1] "/tmp/RtmpZkOKZZ/S2A2A_20190723_022_Barbellino_EVI_10.tif"
    +
    #> Carico il pacchetto richiesto: sp
    #> Carico il pacchetto richiesto: abind
    #> Carico il pacchetto richiesto: sf
    #> Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 7.0.0
    #> [2021-05-04 14:31:30] Computing index EVI on date 2019-07-23...
    ex_out +
    #> [1] "/tmp/RtmpieHqOv/S2A2A_20190723_022_Barbellino_EVI_10.tif"
    # Show output oldpar <- par(mfrow = c(1,2), mar = rep(0,4)) image(stars::read_stars(ex_in), rgb = 4:2, maxColorValue = 3500, useRaster = TRUE) diff --git a/docs/reference/s2_defNA.html b/docs/reference/s2_defNA.html index 3acc0d00..0b42de08 100644 --- a/docs/reference/s2_defNA.html +++ b/docs/reference/s2_defNA.html @@ -74,7 +74,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/s2_dop.html b/docs/reference/s2_dop.html index 32d631e8..24ceaa42 100644 --- a/docs/reference/s2_dop.html +++ b/docs/reference/s2_dop.html @@ -81,7 +81,7 @@ sen2r - 1.4.2 + 1.4.3 @@ -232,42 +232,43 @@

    Examp
    # All the passages in a cycle of 10 days over all the orbits s2_dop()
    #> date mission orbit -#> 1: 2021-04-13 2A 016 -#> 2: 2021-04-13 2A 017 -#> 3: 2021-04-13 2A 018 -#> 4: 2021-04-13 2A 019 -#> 5: 2021-04-13 2A 020 +#> 1: 2021-05-04 2A 030 +#> 2: 2021-05-04 2A 031 +#> 3: 2021-05-04 2A 032 +#> 4: 2021-05-04 2A 033 +#> 5: 2021-05-04 2A 034 #> --- -#> 282: 2021-04-22 2B 083 -#> 283: 2021-04-22 2B 084 -#> 284: 2021-04-22 2B 085 -#> 285: 2021-04-22 2B 086 -#> 286: 2021-04-22 2B 087
    +#> 282: 2021-05-13 2B 097 +#> 283: 2021-05-13 2B 098 +#> 284: 2021-05-13 2B 099 +#> 285: 2021-05-13 2B 100 +#> 286: 2021-05-13 2B 101
    # The passages in the current month over two orbits s2_dop(c("022", "065"), "this month")
    #> date mission orbit -#> 1: 2021-04-01 2B 065 -#> 2: 2021-04-03 2A 022 -#> 3: 2021-04-06 2A 065 -#> 4: 2021-04-08 2B 022 -#> 5: 2021-04-11 2B 065 -#> 6: 2021-04-13 2A 022 -#> 7: 2021-04-16 2A 065 -#> 8: 2021-04-18 2B 022 -#> 9: 2021-04-21 2B 065 -#> 10: 2021-04-23 2A 022 -#> 11: 2021-04-26 2A 065 -#> 12: 2021-04-28 2B 022
    +#> 1: 2021-05-01 2B 065 +#> 2: 2021-05-03 2A 022 +#> 3: 2021-05-06 2A 065 +#> 4: 2021-05-08 2B 022 +#> 5: 2021-05-11 2B 065 +#> 6: 2021-05-13 2A 022 +#> 7: 2021-05-16 2A 065 +#> 8: 2021-05-18 2B 022 +#> 9: 2021-05-21 2B 065 +#> 10: 2021-05-23 2A 022 +#> 11: 2021-05-26 2A 065 +#> 12: 2021-05-28 2B 022 +#> 13: 2021-05-31 2B 065
    # The dates in which Sentinel-2A will pass in next six weeks over one orbit s2_dop("022", "6 weeks", mission = "2A")$date -
    #> [1] "2021-04-13" "2021-04-23" "2021-05-03" "2021-05-13" "2021-05-23"
    +
    #> [1] "2021-05-03" "2021-05-13" "2021-05-23" "2021-06-02" "2021-06-12"
    # The date in which Sentinel-2A would be passed in the last 10 days over one orbit s2_dop("022", "-10 days", mission = "2A")$date -
    #> [1] "2021-04-13"
    +
    #> [1] "2021-05-03"
    # All the orbits covered today s2_dop(timewindow = Sys.Date(), mission = "2B")$orbit -
    #> [1] "088" "089" "090" "091" "092" "093" "094" "095" "096" "097" "098" "099" -#> [13] "100" "101"
    +
    #> [1] "102" "103" "104" "105" "106" "107" "108" "109" "110" "111" "112" "113" +#> [13] "114" "115"
    # The passages in a fixed time window for one orbit s2_dop(65, as.Date(c("2018-08-01", "2018-08-31")))
    #> date mission orbit diff --git a/docs/reference/s2_download.html b/docs/reference/s2_download.html index d238ec69..7b583dc2 100644 --- a/docs/reference/s2_download.html +++ b/docs/reference/s2_download.html @@ -75,7 +75,7 @@ sen2r - 1.4.2 + 1.4.3
    @@ -249,7 +249,7 @@

    AuthorExamples

    if (FALSE) { -single_s2 <- paste0("https://scihub.copernicus.eu/apihub/odata/v1/", +single_s2 <- paste0("https://apihub.copernicus.eu/apihub/odata/v1/", "Products(\'c7142722-42bf-4f93-b8c5-59fd1792c430\')/$value") names(single_s2) <- "S2A_MSIL1C_20170613T101031_N0205_R022_T32TQQ_20170613T101608.SAFE" # (this is equivalent to: diff --git a/docs/reference/s2_gui.html b/docs/reference/s2_gui.html index 56130002..d32ae1f9 100644 --- a/docs/reference/s2_gui.html +++ b/docs/reference/s2_gui.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/s2_list.html b/docs/reference/s2_list.html index 6e340627..0db0c625 100644 --- a/docs/reference/s2_list.html +++ b/docs/reference/s2_list.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3 @@ -300,18 +300,18 @@

    Examp time_interval = time_window, orbit = "065" ) -
    #> although coordinates are longitude/latitude, st_union assumes that they are planar
    print(example_s2_list) +print(example_s2_list)
    #> A named vector with 47 SAFE archives. #> S2A_MSIL1C_20160502T102032_N0201_R065_T32TNR_20160502T102027.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('fde01d3f-8a0d-46cb-b65d-3e32eff93f1d')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('fde01d3f-8a0d-46cb-b65d-3e32eff93f1d')/$value" #> S2A_MSIL1C_20160512T102032_N0202_R065_T32TNR_20160512T102029.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('4b785773-ba94-49b2-ae81-9b4b08749f70')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('4b785773-ba94-49b2-ae81-9b4b08749f70')/$value" #> S2A_MSIL1C_20160522T102032_N0202_R065_T32TNR_20160522T102029.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('4abf7965-0b26-431b-8708-74de427c0112')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('4abf7965-0b26-431b-8708-74de427c0112')/$value" #> S2A_MSIL1C_20160611T102032_N0202_R065_T32TNR_20160611T102026.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('68afcf6b-4ec6-48da-9b65-6cd41ff47a49')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('68afcf6b-4ec6-48da-9b65-6cd41ff47a49')/$value" #> S2A_MSIL1C_20160621T102022_N0204_R065_T32TNR_20160621T102024.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('9bb6d780-c226-4f59-bad0-1daedfdce9d5')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('9bb6d780-c226-4f59-bad0-1daedfdce9d5')/$value" #> ...with 42 more elements. #> The following attributes are included: mission, level, id_tile, id_orbit, sensing_datetime, ingestion_datetime, clouds, footprint, uuid, online.
    # Print the dates of the retrieved products safe_getMetadata(example_s2_list, "sensing_datetime") @@ -416,18 +416,18 @@

    Examp time_interval = time_window, time_period = "seasonal" ) -

    #> although coordinates are longitude/latitude, st_union assumes that they are planar
    print(example_s2_list) +print(example_s2_list)
    #> A named vector with 28 SAFE archives. #> S2A_MSIL1C_20160502T102032_N0201_R065_T32TNR_20160502T102027.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('fde01d3f-8a0d-46cb-b65d-3e32eff93f1d')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('fde01d3f-8a0d-46cb-b65d-3e32eff93f1d')/$value" #> S2A_MSIL1C_20160509T101032_N0202_R022_T32TNR_20160509T101645.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('abf24c65-2ff6-4c9a-9309-425425475d36')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('abf24c65-2ff6-4c9a-9309-425425475d36')/$value" #> S2A_MSIL1C_20160512T102032_N0202_R065_T32TNR_20160512T102029.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('4b785773-ba94-49b2-ae81-9b4b08749f70')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('4b785773-ba94-49b2-ae81-9b4b08749f70')/$value" #> S2A_MSIL1C_20160519T101032_N0202_R022_T32TNR_20160519T101312.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('e1f000b8-e9c3-421b-88c2-08a9046d1a82')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('e1f000b8-e9c3-421b-88c2-08a9046d1a82')/$value" #> S2A_MSIL1C_20160522T102032_N0202_R065_T32TNR_20160522T102029.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('4abf7965-0b26-431b-8708-74de427c0112')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('4abf7965-0b26-431b-8708-74de427c0112')/$value" #> ...with 23 more elements. #> The following attributes are included: mission, level, id_tile, id_orbit, sensing_datetime, ingestion_datetime, clouds, footprint, uuid, online.
    # Print the dates of the retrieved products safe_getMetadata(example_s2_list, "sensing_datetime") diff --git a/docs/reference/s2_mask.html b/docs/reference/s2_mask.html index 235de2e9..58515a44 100644 --- a/docs/reference/s2_mask.html +++ b/docs/reference/s2_mask.html @@ -77,7 +77,7 @@ sen2r - 1.4.2 + 1.4.3
    @@ -409,9 +409,9 @@

    Examp mask_type = "land", outdir = tempdir() ) -
    #> [2021-04-13 10:46:40] Masking file +
    #> [2021-05-04 14:31:41] Masking file #> S2A2A_20190723_022_Barbellino_RGB432B_10.tif...
    ex_out -
    #> [1] "/tmp/RtmpZkOKZZ/S2A2A_20190723_022_Barbellino_RGB432B_10.tif" +
    #> [1] "/tmp/RtmpieHqOv/S2A2A_20190723_022_Barbellino_RGB432B_10.tif" #> attr(,"toomasked") #> character(0)
    # Show output diff --git a/docs/reference/s2_merge.html b/docs/reference/s2_merge.html index 43bc9638..24fcae65 100644 --- a/docs/reference/s2_merge.html +++ b/docs/reference/s2_merge.html @@ -75,7 +75,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/s2_order.html b/docs/reference/s2_order.html index ed2b6851..5eba5d3f 100644 --- a/docs/reference/s2_order.html +++ b/docs/reference/s2_order.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3 @@ -255,51 +255,47 @@

    Examp pos <- sf::st_sfc(sf::st_point(c(-57.8815,-51.6954)), crs = 4326) time_window <- as.Date(c("2019-10-21", "2019-11-20")) list_safe <- s2_list(spatial_extent = pos, time_interval = time_window) -
    #> although coordinates are longitude/latitude, st_union assumes that they are planar
    print(list_safe) +print(list_safe)
    #> A named vector with 9 SAFE archives. #> S2A_MSIL2A_20191022T133641_N0213_R038_T21FVC_20191023T155120.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('d76c8a00-3b7f-45a2-b359-fc363c388a94')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('d76c8a00-3b7f-45a2-b359-fc363c388a94')/$value" #> S2B_MSIL2A_20191027T133639_N0213_R038_T21FVC_20191027T150854.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('03cb6cbc-e858-4e40-ae37-d1872c957762')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('03cb6cbc-e858-4e40-ae37-d1872c957762')/$value" #> S2B_MSIL2A_20191030T134639_N0213_R081_T21FVC_20191030T152504.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('ed6aeeb1-f721-4aed-9a85-b37708f7149d')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('ed6aeeb1-f721-4aed-9a85-b37708f7149d')/$value" #> S2A_MSIL2A_20191101T133641_N0213_R038_T21FVC_20191101T150755.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('a52c1f7b-aa21-4055-9541-95aa2ec28bdb')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('a52c1f7b-aa21-4055-9541-95aa2ec28bdb')/$value" #> S2B_MSIL2A_20191106T133639_N0213_R038_T21FVC_20191106T150814.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('091bc063-4978-4b28-8664-c5189d71e64b')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('091bc063-4978-4b28-8664-c5189d71e64b')/$value" #> ...with 4 more elements. #> The following attributes are included: mission, level, id_tile, id_orbit, sensing_datetime, ingestion_datetime, clouds, footprint, uuid, online.
    # (at the time the documentation was updated, this list was containing 6 # archives already available online and 3 stored in the Long Term Archive) # Order the products ordered_prods <- s2_order(list_safe) -
    #> [2021-04-13 10:47:05] Check if products are already available for -#> download...
    #> [2021-04-13 10:47:09] Ordering 9 Sentinel-2 images stored in the Long -#> Term Archive...
    #> [2021-04-13 10:47:21] 9 of 9 Sentinel-2 images were correctly ordered. -#> You can check at a later time if the ordered products are -#> available online using the command: -#>   safe_is_online("/home/lranghetti/.sen2r/lta_orders/lta_20210413_104721.json")
    +
    #> [2021-05-04 14:31:56] Check if products are already available for +#> download...
    #> [2021-05-04 14:31:58] 9 Sentinel-2 images are already online.
    # Check in a second time if the product was made available (order_path <- attr(ordered_prods, "path")) -
    #> [1] "/home/lranghetti/.sen2r/lta_orders/lta_20210413_104721.json"
    safe_is_online(order_path) -
    #> 0 out of 9 products are online.
    #> S2A_MSIL2A_20191022T133641_N0213_R038_T21FVC_20191023T155120.SAFE -#> FALSE +
    #> [1] "/home/lranghetti/.sen2r/lta_orders/lta_20210504_143158.json"
    safe_is_online(order_path) +
    #> All 9 products are online.
    #> S2A_MSIL2A_20191022T133641_N0213_R038_T21FVC_20191023T155120.SAFE +#> TRUE #> S2B_MSIL2A_20191027T133639_N0213_R038_T21FVC_20191027T150854.SAFE -#> FALSE +#> TRUE #> S2B_MSIL2A_20191030T134639_N0213_R081_T21FVC_20191030T152504.SAFE -#> FALSE +#> TRUE #> S2A_MSIL2A_20191101T133641_N0213_R038_T21FVC_20191101T150755.SAFE -#> FALSE +#> TRUE #> S2B_MSIL2A_20191106T133639_N0213_R038_T21FVC_20191106T150814.SAFE -#> FALSE +#> TRUE #> S2B_MSIL2A_20191109T134639_N0213_R081_T21FVC_20191109T152703.SAFE -#> FALSE +#> TRUE #> S2A_MSIL2A_20191111T133641_N0213_R038_T21FVC_20191111T150452.SAFE -#> FALSE +#> TRUE #> S2B_MSIL2A_20191116T133639_N0213_R038_T21FVC_20191116T145355.SAFE -#> FALSE +#> TRUE #> S2B_MSIL2A_20191119T134639_N0213_R081_T21FVC_20191119T152133.SAFE -#> FALSE
    # } +#> TRUE
    # }

    @@ -326,11 +326,11 @@

    Examp outdir = tempdir(), compress = 50 ) -
    #> [2021-04-13 10:47:26] Generating image -#> S2A2A_20190723_022_Barbellino_RGBb84B_10.tif...
    #> [2021-04-13 10:47:37] Generating image +
    #> [2021-05-04 14:32:00] Generating image +#> S2A2A_20190723_022_Barbellino_RGBb84B_10.tif...
    #> [2021-05-04 14:32:11] Generating image #> S2A2A_20190723_022_Barbellino_RGB954B_10.tif...
    #> 2 output RGB files were correctly created.
    ex_out -
    #> [1] "/tmp/RtmpZkOKZZ/RGBb84B/S2A2A_20190723_022_Barbellino_RGBb84B_10.tif" -#> [2] "/tmp/RtmpZkOKZZ/RGB954B/S2A2A_20190723_022_Barbellino_RGB954B_10.tif"
    +
    #> [1] "/tmp/RtmpieHqOv/RGBb84B/S2A2A_20190723_022_Barbellino_RGBb84B_10.tif" +#> [2] "/tmp/RtmpieHqOv/RGB954B/S2A2A_20190723_022_Barbellino_RGB954B_10.tif"
    # Show output oldpar <- par(mfrow = c(1,3), mar = rep(0,4)) image(stars::read_stars(ex_in), rgb = 4:2, maxColorValue = 3500, useRaster = TRUE) diff --git a/docs/reference/s2_thumbnails.html b/docs/reference/s2_thumbnails.html index 8b873e9b..9c4956ff 100644 --- a/docs/reference/s2_thumbnails.html +++ b/docs/reference/s2_thumbnails.html @@ -77,7 +77,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/s2_tiles-1.png b/docs/reference/s2_tiles-1.png index 7c833e862981c00b6f08d63a8a8f5e4c6734fdea..858e48223e7c075422854844884ef0e9c008ba02 100644 GIT binary patch literal 18507 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 diff --git a/docs/reference/s2_tiles.html b/docs/reference/s2_tiles.html index 40a93ea6..e46de4d1 100644 --- a/docs/reference/s2_tiles.html +++ b/docs/reference/s2_tiles.html @@ -74,7 +74,7 @@ sen2r - 1.4.2 + 1.4.3 @@ -190,26 +190,13 @@

    Examp s2tiles <- s2_tiles() # Extract a subset of all the tiles -httr::GET( - "https://github.com/ranghetti/sen2r/raw/master/utils/vector/ch_bound.rds", - httr::write_disk(ch_path <- tempfile()) -) -
    #> Response [https://raw.githubusercontent.com/ranghetti/sen2r/master/utils/vector/ch_bound.rds] -#> Date: 2021-04-13 08:49 -#> Status: 200 -#> Content-Type: application/octet-stream -#> Size: 43.8 kB -#> <ON DISK> /tmp/RtmpZkOKZZ/file6c156cc467b0
    ch <- readRDS(ch_path) -s2tiles_ch <- s2tiles[suppressMessages(sf::st_intersects(ch, s2tiles))[[1]],] +s2tiles_ch <- s2tiles[grepl("32T[LMN][ST]", s2tiles$tile_id),] s2_coords <- sf::st_coordinates(suppressWarnings(sf::st_centroid(s2tiles_ch))) # Show the tiles -plot(s2tiles_ch$geometry, border = "blue") -
    plot(ch, border = "red", add = TRUE) -
    text(s2_coords[,1], s2_coords[,2], s2tiles_ch$tile_id, col = "blue", cex = .75) -
    -# Use function tiles_intersects() to exclude unuseful tiles. -

    +plot(s2tiles_ch$geometry, border = "black") +
    text(s2_coords[,1], s2_coords[,2], s2tiles_ch$tile_id, cex = .75) +
    diff --git a/docs/reference/safe_getMetadata.html b/docs/reference/safe_getMetadata.html index 39dfb15c..2c201b71 100644 --- a/docs/reference/safe_getMetadata.html +++ b/docs/reference/safe_getMetadata.html @@ -77,7 +77,7 @@ sen2r - 1.4.2 + 1.4.3 @@ -378,7 +378,7 @@

    Examp # Download a sample SAFE archive (this can take a while) s2_exampleurl <- c( "S2A_MSIL1C_20190723T101031_N0208_R022_T32TNS_20190723T121220.SAFE" = - paste0("https://scihub.copernicus.eu/apihub/odata/v1/", + paste0("https://apihub.copernicus.eu/apihub/odata/v1/", "Products('19bbde60-992b-423d-8dea-a5e0ac7715fc')/$value") ) s2_download(s2_exampleurl, outdir=tempdir()) diff --git a/docs/reference/safe_is_online.html b/docs/reference/safe_is_online.html index dfed7cde..b6325e41 100644 --- a/docs/reference/safe_is_online.html +++ b/docs/reference/safe_is_online.html @@ -74,7 +74,7 @@ sen2r - 1.4.2 + 1.4.3 @@ -217,15 +217,15 @@

    Examp pos <- sf::st_sfc(sf::st_point(c(-57.8815,-51.6954)), crs = 4326) time_window <- as.Date(c("2018-02-21", "2018-03-20")) list_safe <- s2_list(spatial_extent = pos, time_interval = time_window) -
    #> although coordinates are longitude/latitude, st_union assumes that they are planar
    # (at the time the documentation was written, this list was containing 5 +# (at the time the documentation was written, this list was containing 5 # archives already available online and 2 stored in the Long Term Archive) # Check for availability safe_is_online(list_safe) -
    #> 0 out of 7 products are online.
    #> S2B_MSIL1C_20180224T133629_N0206_R038_T21FVC_20180224T194845.SAFE +
    #> 1 out of 7 products are online.
    #> S2B_MSIL1C_20180224T133629_N0206_R038_T21FVC_20180224T194845.SAFE #> FALSE #> S2B_MSIL1C_20180227T134629_N0206_R081_T21FVC_20180227T200327.SAFE -#> FALSE +#> TRUE #> S2A_MSIL1C_20180301T133641_N0206_R038_T21FVC_20180301T145524.SAFE #> FALSE #> S2B_MSIL1C_20180306T133629_N0206_R038_T21FVC_20180306T183210.SAFE diff --git a/docs/reference/safe_shortname.html b/docs/reference/safe_shortname.html index 6b1854d5..87b1ba86 100644 --- a/docs/reference/safe_shortname.html +++ b/docs/reference/safe_shortname.html @@ -77,7 +77,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/safelist-class.html b/docs/reference/safelist-class.html index 526e845d..3acf2312 100644 --- a/docs/reference/safelist-class.html +++ b/docs/reference/safelist-class.html @@ -45,7 +45,7 @@ It is a named character in which names are SAFE codes (e.g. S2A_MSIL2A_20170507T102031_N0205_R065_T32TNR_20170507T102319.SAFE), and values are URLs used to retrieve them from ESA API Hub (e.g. -https://scihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value). +https://apihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value). Some attributes may be included, basically information retrieved by function s2_list containing product metadata. Moreover, the attribute online (retrieved by function safe_is_online @@ -88,7 +88,7 @@ sen2r - 1.4.2 + 1.4.3 @@ -179,7 +179,7 @@

    Format for SAFE archive lists

    It is a named character in which names are SAFE codes (e.g. S2A_MSIL2A_20170507T102031_N0205_R065_T32TNR_20170507T102319.SAFE), and values are URLs used to retrieve them from ESA API Hub (e.g. -https://scihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value). +https://apihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value). Some attributes may be included, basically information retrieved by function s2_list containing product metadata. Moreover, the attribute online (retrieved by function safe_is_online @@ -216,14 +216,14 @@

    Examp ## Create an object of class safelist list_safe <- s2_list(spatial_extent = pos, time_interval = time_window) -
    #> although coordinates are longitude/latitude, st_union assumes that they are planar
    list_safe +list_safe
    #> A named vector with 3 SAFE archives. #> S2A_MSIL2A_20170507T102031_N0205_R065_T32TNR_20170507T102319.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value" #> S2A_MSIL2A_20170517T102031_N0205_R065_T32TNR_20170517T102352.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value" #> S2A_MSIL2A_20170527T102031_N0205_R065_T32TNR_20170527T102301.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value" #> The following attributes are included: mission, level, id_tile, id_orbit, sensing_datetime, ingestion_datetime, clouds, footprint, uuid, online.
    class(list_safe)
    #> [1] "safelist" "character"
    attr(list_safe, "sensing_datetime") # extract an hidden attribute from a safelist
    #> [1] "2017-05-07 10:20:31 UTC" "2017-05-17 10:20:31 UTC" @@ -231,19 +231,19 @@

    Examp ## Convert to other classes (s2_char <- as.character(list_safe)) # convert to a simple named character

    #> S2A_MSIL2A_20170507T102031_N0205_R065_T32TNR_20170507T102319.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value" #> S2A_MSIL2A_20170517T102031_N0205_R065_T32TNR_20170517T102352.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value" #> S2A_MSIL2A_20170527T102031_N0205_R065_T32TNR_20170527T102301.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value"
    (s2_df <- as.data.frame(list_safe)) # convert to a data.frame +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value"
    (s2_df <- as.data.frame(list_safe)) # convert to a data.frame
    #> name #> 1 S2A_MSIL2A_20170507T102031_N0205_R065_T32TNR_20170507T102319.SAFE #> 2 S2A_MSIL2A_20170517T102031_N0205_R065_T32TNR_20170517T102352.SAFE #> 3 S2A_MSIL2A_20170527T102031_N0205_R065_T32TNR_20170527T102301.SAFE #> url -#> 1 https://scihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value -#> 2 https://scihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value -#> 3 https://scihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value +#> 1 https://apihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value +#> 2 https://apihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value +#> 3 https://apihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value #> mission level id_tile id_orbit sensing_datetime ingestion_datetime #> 1 2A 2Ap 32TNR 065 2017-05-07 10:20:31 2017-05-09 06:30:41 #> 2 2A 2Ap 32TNR 065 2017-05-17 10:20:31 2017-06-08 12:21:23 @@ -269,9 +269,9 @@

    Examp #> 2: S2A_MSIL2A_20170517T102031_N0205_R065_T32TNR_20170517T102352.SAFE #> 3: S2A_MSIL2A_20170527T102031_N0205_R065_T32TNR_20170527T102301.SAFE #> url -#> 1: https://scihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value -#> 2: https://scihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value -#> 3: https://scihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value +#> 1: https://apihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value +#> 2: https://apihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value +#> 3: https://apihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value #> mission level id_tile id_orbit sensing_datetime ingestion_datetime #> 1: 2A 2Ap 32TNR 065 2017-05-07 10:20:31 2017-05-09 06:30:41 #> 2: 2A 2Ap 32TNR 065 2017-05-17 10:20:31 2017-06-08 12:21:23 @@ -299,9 +299,9 @@

    Examp #> 2 S2A_MSIL2A_20170517T102031_N0205_R065_T32TNR_20170517T102352.SAFE #> 3 S2A_MSIL2A_20170527T102031_N0205_R065_T32TNR_20170527T102301.SAFE #> url -#> 1 https://scihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value -#> 2 https://scihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value -#> 3 https://scihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value +#> 1 https://apihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value +#> 2 https://apihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value +#> 3 https://apihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value #> mission level id_tile id_orbit sensing_datetime ingestion_datetime #> 1 2A 2Ap 32TNR 065 2017-05-07 10:20:31 2017-05-09 06:30:41 #> 2 2A 2Ap 32TNR 065 2017-05-17 10:20:31 2017-06-08 12:21:23 @@ -318,34 +318,34 @@

    Examp as(s2_char, "safelist") # this causes the loss of hidden attributes

    #> A named vector with 3 SAFE archives. #> S2A_MSIL2A_20170507T102031_N0205_R065_T32TNR_20170507T102319.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value" #> S2A_MSIL2A_20170517T102031_N0205_R065_T32TNR_20170517T102352.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value" #> S2A_MSIL2A_20170527T102031_N0205_R065_T32TNR_20170527T102301.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value"
    as(s2_df, "safelist") # this (and followings) maintain attributes as columns +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value"
    as(s2_df, "safelist") # this (and followings) maintain attributes as columns
    #> A named vector with 3 SAFE archives. #> S2A_MSIL2A_20170507T102031_N0205_R065_T32TNR_20170507T102319.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value" #> S2A_MSIL2A_20170517T102031_N0205_R065_T32TNR_20170517T102352.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value" #> S2A_MSIL2A_20170527T102031_N0205_R065_T32TNR_20170527T102301.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value" #> The following attributes are included: mission, level, id_tile, id_orbit, sensing_datetime, ingestion_datetime, clouds, footprint, uuid, online.
    as(s2_dt, "safelist")
    #> A named vector with 3 SAFE archives. #> S2A_MSIL2A_20170507T102031_N0205_R065_T32TNR_20170507T102319.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value" #> S2A_MSIL2A_20170517T102031_N0205_R065_T32TNR_20170517T102352.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value" #> S2A_MSIL2A_20170527T102031_N0205_R065_T32TNR_20170527T102301.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value" #> The following attributes are included: mission, level, id_tile, id_orbit, sensing_datetime, ingestion_datetime, clouds, footprint, uuid, online.
    as(s2_sf, "safelist")
    #> A named vector with 3 SAFE archives. #> S2A_MSIL2A_20170507T102031_N0205_R065_T32TNR_20170507T102319.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('a4a026c0-db7b-4ba8-9b09-53027ab0d7ab')/$value" #> S2A_MSIL2A_20170517T102031_N0205_R065_T32TNR_20170517T102352.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('6b7bb7bb-7598-45ac-9f2c-a3bd9cdc092f')/$value" #> S2A_MSIL2A_20170527T102031_N0205_R065_T32TNR_20170527T102301.SAFE -#> "https://scihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value" +#> "https://apihub.copernicus.eu/apihub/odata/v1/Products('868b5b3c-92ac-412a-8a04-167008a1f08f')/$value" #> The following attributes are included: mission, level, id_tile, id_orbit, sensing_datetime, ingestion_datetime, clouds, uuid, online, footprint.
    # }
    diff --git a/docs/reference/scihub_login.html b/docs/reference/scihub_login.html index 11651997..860a2a54 100644 --- a/docs/reference/scihub_login.html +++ b/docs/reference/scihub_login.html @@ -44,8 +44,10 @@ save new username and password (write_scihub_login()) or check their validity (check_scihub_login()). Login information is stored in a file apihub.txt inside the -".sen2r" subfolder of the home directory. This functions allow to read -or write this file, and to edit them from inside the GUI." /> +".sen2r" subfolder of the home directory. This function allows reading +or writing this file, and editing it from the GUI. +In case file apihub.txt is missing, read_scihub_login() searches inside +the environmental variables SCIHUB_USER and SCIHUB_PASSWORD." /> @@ -77,7 +79,7 @@ sen2r - 1.4.2 + 1.4.3 @@ -167,15 +169,17 @@

    Import / export / check SciHub username and password

    save new username and password (write_scihub_login()) or check their validity (check_scihub_login()). Login information is stored in a file apihub.txt inside the -".sen2r" subfolder of the home directory. This functions allow to read -or write this file, and to edit them from inside the GUI.

    +".sen2r" subfolder of the home directory. This function allows reading +or writing this file, and editing it from the GUI. +In case file apihub.txt is missing, read_scihub_login() searches inside +the environmental variables SCIHUB_USER and SCIHUB_PASSWORD.

    read_scihub_login(apihub_path = NA)
     
    -check_scihub_login(username, password)
    +check_scihub_login(username, password, service = "apihub")
     
    -check_scihub_connection()
    +check_scihub_connection(service = "apihub")
     
     write_scihub_login(
       username,
    @@ -201,6 +205,10 @@ 

    Arg password

    SciHub password.

    + + service +

    Character: it can be "dhus" or "apihub" (default).

    + check

    Logical: if TRUE (default), new credentials are checked diff --git a/docs/reference/sen2cor.html b/docs/reference/sen2cor.html index f3e41712..7dac1e93 100644 --- a/docs/reference/sen2cor.html +++ b/docs/reference/sen2cor.html @@ -75,7 +75,7 @@ sen2r - 1.4.2 + 1.4.3 @@ -267,7 +267,8 @@

    Arg with the function read_gipp(c("DEM_Directory", "DEM_Reference"))). In case one or both these parameters were set to "NONE", a subdirectory "srtm90" of the default sen2r directory is used as -DEM directory, and/or the CGIAR SRTM 90m +DEM directory, and/or the +CGIAR SRTM 90m is set as online source. To set another directory or reference, use argument gipp in the form gipp = list(DEM_Directory = tempdir(), DEM_Reference ="another_reference", ...) diff --git a/docs/reference/sen2r.html b/docs/reference/sen2r.html index 7b2db4db..69f0cafb 100644 --- a/docs/reference/sen2r.html +++ b/docs/reference/sen2r.html @@ -76,7 +76,7 @@ sen2r - 1.4.2 + 1.4.3 @@ -764,22 +764,22 @@

    Examp json_path <- build_example_param_file() out_paths_2 <- sen2r(json_path) -
    #> [2021-04-13 10:48:52] #### Starting sen2r execution. ####
    #> Loading required namespace: stringi
    #> Registered S3 method overwritten by 'geojsonlint': +
    #> [2021-05-04 14:32:56] #### Starting sen2r execution. ####
    #> Loading required namespace: stringi
    #> Registered S3 method overwritten by 'geojsonlint': #> method from -#> print.location dplyr
    #> [2021-04-13 10:48:53] Searching for available SAFE products on -#> SciHub...
    #> although coordinates are longitude/latitude, st_union assumes that they are planar
    #> [2021-04-13 10:48:58] Computing output names...
    #> [2021-04-13 10:49:00] Starting to download the required level-2A SAFE +#> print.location dplyr
    #> [2021-05-04 14:32:56] Searching for available SAFE products on +#> SciHub...
    #> [2021-05-04 14:32:59] Computing output names...
    #> [2021-05-04 14:33:01] Starting to download the required level-2A SAFE #> products.
    #> Images #> S2B_MSIL2A_20200801T100559_N0214_R022_T32TNS_20200801T135302.SAFE are #> already on your system and will be skipped. Set "overwrite_safe" to -#> TRUE to re-download them.
    #> No L2A images are needed.
    #> [2021-04-13 10:49:00] Download of level-2A SAFE products terminated.
    #> [2021-04-13 10:49:00] Starting to download the required level-1C SAFE -#> products.
    #> No L1C images are needed.
    #> [2021-04-13 10:49:00] Download of level-1C SAFE products terminated.
    #> [2021-04-13 10:49:00] Updating output names...
    #> [2021-04-13 10:49:01] Starting to translate SAFE products in custom -#> format.
    #> Using UTM zone 32N.
    #> 2 output files were correctly created.
    #> [2021-04-13 10:49:02] Starting to merge tiles by orbit.
    #> [2021-04-13 10:49:03] Starting to edit geometry (clip, reproject, -#> rescale).
    #> [2021-04-13 10:49:05] Producing required RGB images.
    #> [2021-04-13 10:49:06] Generating image -#> S2B2A_20200801_022_sen2r_RGB432B_10.tif...
    #> [2021-04-13 10:49:18] Generating image -#> S2B2A_20200801_022_sen2r_RGB843B_10.tif...
    #> 2 output RGB files were correctly created.
    #> [2021-04-13 10:49:52] Computing required spectral indices.
    #> [2021-04-13 10:49:52] Computing index MSAVI2 on date 2020-08-01...
    #> [2021-04-13 10:50:04] Computing index NDVI on date 2020-08-01...
    #> [2021-04-13 10:50:16] Generating thumbnails.
    #> 6 output files were correctly created.
    #> ╔══════════════════════════════════════════════════════════════════════ +#> TRUE to re-download them.
    #> No L2A images are needed.
    #> [2021-05-04 14:33:01] Download of level-2A SAFE products terminated.
    #> [2021-05-04 14:33:01] Starting to download the required level-1C SAFE +#> products.
    #> No L1C images are needed.
    #> [2021-05-04 14:33:01] Download of level-1C SAFE products terminated.
    #> [2021-05-04 14:33:01] Updating output names...
    #> [2021-05-04 14:33:02] Starting to translate SAFE products in custom +#> format.
    #> Using UTM zone 32N.
    #> 2 output files were correctly created.
    #> [2021-05-04 14:33:02] Starting to merge tiles by orbit.
    #> [2021-05-04 14:33:03] Starting to edit geometry (clip, reproject, +#> rescale).
    #> [2021-05-04 14:33:05] Producing required RGB images.
    #> [2021-05-04 14:33:05] Generating image +#> S2B2A_20200801_022_sen2r_RGB432B_10.tif...
    #> [2021-05-04 14:33:16] Generating image +#> S2B2A_20200801_022_sen2r_RGB843B_10.tif...
    #> 2 output RGB files were correctly created.
    #> [2021-05-04 14:33:49] Computing required spectral indices.
    #> [2021-05-04 14:33:50] Computing index MSAVI2 on date 2020-08-01...
    #> [2021-05-04 14:34:01] Computing index NDVI on date 2020-08-01...
    #> [2021-05-04 14:34:14] Generating thumbnails.
    #> 6 output files were correctly created.
    #> ╔══════════════════════════════════════════════════════════════════════ #> ║ sen2r Processing Report -#> ╟──────────────────────────────────────────────────────────────────────
    #> ║ Dates to be processed based on processing parameters: 1
    #> ║ Processing completed for: all expected dates.
    #> ╚══════════════════════════════════════════════════════════════════════
    #> [2021-04-13 10:50:28] #### sen2r session terminated. ####
    #> The processing chain can be re-launched with the command: -#>   sen2r("/home/lranghetti/.sen2r/proc_par/s2proc_20210413_104853.json")
    # Notice that passing the path of a JSON file results in launching +#> ╟──────────────────────────────────────────────────────────────────────
    #> ║ Dates to be processed based on processing parameters: 1
    #> ║ Processing completed for: all expected dates.
    #> ╚══════════════════════════════════════════════════════════════════════
    #> [2021-05-04 14:34:26] #### sen2r session terminated. ####
    #> The processing chain can be re-launched with the command: +#>   sen2r("/home/lranghetti/.sen2r/proc_par/s2proc_20210504_143256.json")
    # Notice that passing the path of a JSON file results in launching # a session without opening the gui, unless gui = TRUE is passed. # Launch a processing using function arguments @@ -800,26 +800,26 @@

    Examp path_l2a = safe_dir, path_out = out_dir_3 ) -

    #> [2021-04-13 10:50:29] #### Starting sen2r execution. ####
    #> [2021-04-13 10:50:30] Searching for available SAFE products on -#> SciHub...
    #> although coordinates are longitude/latitude, st_union assumes that they are planar
    #> although coordinates are longitude/latitude, st_union assumes that they are planar
    #> [2021-04-13 10:50:38] Computing output names...
    #> [2021-04-13 10:50:39] Starting to download the required level-2A SAFE +
    #> [2021-05-04 14:34:27] #### Starting sen2r execution. ####
    #> [2021-05-04 14:34:27] Searching for available SAFE products on +#> SciHub...
    #> [2021-05-04 14:34:34] Computing output names...
    #> [2021-05-04 14:34:36] Starting to download the required level-2A SAFE #> products.
    #> Images #> S2B_MSIL2A_20200801T100559_N0214_R022_T32TNS_20200801T135302.SAFE are #> already on your system and will be skipped. Set "overwrite_safe" to -#> TRUE to re-download them.
    #> No L2A images are needed.
    #> [2021-04-13 10:50:39] Download of level-2A SAFE products terminated.
    #> [2021-04-13 10:50:39] Starting to download the required level-1C SAFE +#> TRUE to re-download them.
    #> No L2A images are needed.
    #> [2021-05-04 14:34:36] Download of level-2A SAFE products terminated.
    #> [2021-05-04 14:34:36] Starting to download the required level-1C SAFE #> products.
    #> Images #> S2B_MSIL1C_20200801T100559_N0209_R022_T32TNS_20200801T130136.SAFE are #> already on your system and will be skipped. Set "overwrite_safe" to -#> TRUE to re-download them.
    #> No L1C images are needed.
    #> [2021-04-13 10:50:39] Download of level-1C SAFE products terminated.
    #> [2021-04-13 10:50:39] Updating output names...
    #> [2021-04-13 10:50:40] Starting to translate SAFE products in custom -#> format.
    #> Using UTM zone 32N.
    #> 1 output files were correctly created.
    #> Using UTM zone 32N.
    #> 2 output files were correctly created.
    #> [2021-04-13 10:50:41] Starting to merge tiles by orbit.
    #> [2021-04-13 10:50:43] Starting to edit geometry (clip, reproject, -#> rescale).
    #> [2021-04-13 10:50:45] Starting to apply cloud masks.
    #> [2021-04-13 10:50:46] Masking file -#> S2B1C_20200801_022_Barbellino_TOA_10.tif...
    #> [2021-04-13 10:51:05] Masking file -#> S2B2A_20200801_022_Barbellino_BOA_10.tif...
    #> [2021-04-13 10:51:23] Producing required RGB images.
    #> [2021-04-13 10:51:23] Generating image -#> S2B1C_20200801_022_Barbellino_RGB432T_10.tif...
    #> 1 output RGB files were correctly created.
    #> [2021-04-13 10:51:37] Generating image -#> S2B2A_20200801_022_Barbellino_RGB432B_10.tif...
    #> [2021-04-13 10:51:49] Generating image -#> S2B2A_20200801_022_Barbellino_RGB843B_10.tif...
    #> 2 output RGB files were correctly created.
    #> [2021-04-13 10:52:24] Computing required spectral indices.
    #> [2021-04-13 10:52:24] Computing index NDVI on date 2020-08-01...
    #> [2021-04-13 10:52:26] Computing index MSAVI2 on date 2020-08-01...
    #> [2021-04-13 10:52:27] Generating thumbnails.
    #> 8 output files were correctly created.
    #> ╔══════════════════════════════════════════════════════════════════════ +#> TRUE to re-download them.
    #> No L1C images are needed.
    #> [2021-05-04 14:34:36] Download of level-1C SAFE products terminated.
    #> [2021-05-04 14:34:36] Updating output names...
    #> [2021-05-04 14:34:36] Starting to translate SAFE products in custom +#> format.
    #> Using UTM zone 32N.
    #> 1 output files were correctly created.
    #> Using UTM zone 32N.
    #> 2 output files were correctly created.
    #> [2021-05-04 14:34:38] Starting to merge tiles by orbit.
    #> [2021-05-04 14:34:40] Starting to edit geometry (clip, reproject, +#> rescale).
    #> [2021-05-04 14:34:42] Starting to apply cloud masks.
    #> [2021-05-04 14:34:43] Masking file +#> S2B1C_20200801_022_Barbellino_TOA_10.tif...
    #> [2021-05-04 14:35:00] Masking file +#> S2B2A_20200801_022_Barbellino_BOA_10.tif...
    #> [2021-05-04 14:35:17] Producing required RGB images.
    #> [2021-05-04 14:35:17] Generating image +#> S2B1C_20200801_022_Barbellino_RGB432T_10.tif...
    #> 1 output RGB files were correctly created.
    #> [2021-05-04 14:35:28] Generating image +#> S2B2A_20200801_022_Barbellino_RGB432B_10.tif...
    #> [2021-05-04 14:35:39] Generating image +#> S2B2A_20200801_022_Barbellino_RGB843B_10.tif...
    #> 2 output RGB files were correctly created.
    #> [2021-05-04 14:36:11] Computing required spectral indices.
    #> [2021-05-04 14:36:11] Computing index NDVI on date 2020-08-01...
    #> [2021-05-04 14:36:12] Computing index MSAVI2 on date 2020-08-01...
    #> [2021-05-04 14:36:13] Generating thumbnails.
    #> 8 output files were correctly created.
    #> ╔══════════════════════════════════════════════════════════════════════ #> ║ sen2r Processing Report -#> ╟──────────────────────────────────────────────────────────────────────
    #> ║ Dates to be processed based on processing parameters: 1
    #> ║ Processing completed for: all expected dates.
    #> ╚══════════════════════════════════════════════════════════════════════
    #> [2021-04-13 10:52:51] #### sen2r session terminated. ####
    #> The processing chain can be re-launched with the command: -#>   sen2r("/home/lranghetti/.sen2r/proc_par/s2proc_20210413_105030.json")
    +#> ╟──────────────────────────────────────────────────────────────────────
    #> ║ Dates to be processed based on processing parameters: 1
    #> ║ Processing completed for: all expected dates.
    #> ╚══════════════════════════════════════════════════════════════════════
    #> [2021-05-04 14:36:33] #### sen2r session terminated. ####
    #> The processing chain can be re-launched with the command: +#>   sen2r("/home/lranghetti/.sen2r/proc_par/s2proc_20210504_143427.json")
    # Launch a processing based on a JSON file, but changing some parameters # (e.g., the same processing on a different extent) out_dir_4 <- tempfile(pattern = "Scalve_") @@ -829,21 +829,21 @@

    Examp extent_name = "Scalve", path_out = out_dir_4 ) -

    #> [2021-04-13 10:52:51] #### Starting sen2r execution. ####
    #> [2021-04-13 10:52:52] Searching for available SAFE products on -#> SciHub...
    #> although coordinates are longitude/latitude, st_union assumes that they are planar
    #> [2021-04-13 10:52:58] Computing output names...
    #> [2021-04-13 10:52:59] Starting to download the required level-2A SAFE +
    #> [2021-05-04 14:36:34] #### Starting sen2r execution. ####
    #> [2021-05-04 14:36:34] Searching for available SAFE products on +#> SciHub...
    #> [2021-05-04 14:36:38] Computing output names...
    #> [2021-05-04 14:36:40] Starting to download the required level-2A SAFE #> products.
    #> Images #> S2B_MSIL2A_20200801T100559_N0214_R022_T32TNR_20200801T135302.SAFE, #> S2B_MSIL2A_20200801T100559_N0214_R022_T32TNS_20200801T135302.SAFE are #> already on your system and will be skipped. Set "overwrite_safe" to -#> TRUE to re-download them.
    #> No L2A images are needed.
    #> [2021-04-13 10:52:59] Download of level-2A SAFE products terminated.
    #> [2021-04-13 10:52:59] Starting to download the required level-1C SAFE -#> products.
    #> No L1C images are needed.
    #> [2021-04-13 10:52:59] Download of level-1C SAFE products terminated.
    #> [2021-04-13 10:52:59] Updating output names...
    #> [2021-04-13 10:53:00] Starting to translate SAFE products in custom -#> format.
    #> Using UTM zone 32N.
    #> 2 output files were correctly created.
    #> Using UTM zone 32N.
    #> 2 output files were correctly created.
    #> [2021-04-13 10:53:02] Starting to merge tiles by orbit.
    #> [2021-04-13 10:53:03] Starting to edit geometry (clip, reproject, -#> rescale).
    #> [2021-04-13 10:53:19] Producing required RGB images.
    #> [2021-04-13 10:53:20] Generating image -#> S2B2A_20200801_022_Scalve_RGB432B_10.tif...
    #> [2021-04-13 10:53:25] Generating image -#> S2B2A_20200801_022_Scalve_RGB843B_10.tif...
    #> 2 output RGB files were correctly created.
    #> [2021-04-13 10:53:32] Computing required spectral indices.
    #> [2021-04-13 10:53:32] Computing index MSAVI2 on date 2020-08-01...
    #> [2021-04-13 10:53:36] Computing index NDVI on date 2020-08-01...
    #> [2021-04-13 10:53:39] Generating thumbnails.
    #> 6 output files were correctly created.
    #> ╔══════════════════════════════════════════════════════════════════════ +#> TRUE to re-download them.
    #> No L2A images are needed.
    #> [2021-05-04 14:36:40] Download of level-2A SAFE products terminated.
    #> [2021-05-04 14:36:40] Starting to download the required level-1C SAFE +#> products.
    #> No L1C images are needed.
    #> [2021-05-04 14:36:40] Download of level-1C SAFE products terminated.
    #> [2021-05-04 14:36:40] Updating output names...
    #> [2021-05-04 14:36:41] Starting to translate SAFE products in custom +#> format.
    #> Using UTM zone 32N.
    #> 2 output files were correctly created.
    #> Using UTM zone 32N.
    #> 2 output files were correctly created.
    #> [2021-05-04 14:36:43] Starting to merge tiles by orbit.
    #> [2021-05-04 14:36:44] Starting to edit geometry (clip, reproject, +#> rescale).
    #> [2021-05-04 14:37:01] Producing required RGB images.
    #> [2021-05-04 14:37:01] Generating image +#> S2B2A_20200801_022_Scalve_RGB432B_10.tif...
    #> [2021-05-04 14:37:08] Generating image +#> S2B2A_20200801_022_Scalve_RGB843B_10.tif...
    #> 2 output RGB files were correctly created.
    #> [2021-05-04 14:37:16] Computing required spectral indices.
    #> [2021-05-04 14:37:17] Computing index MSAVI2 on date 2020-08-01...
    #> [2021-05-04 14:37:22] Computing index NDVI on date 2020-08-01...
    #> [2021-05-04 14:37:26] Generating thumbnails.
    #> 6 output files were correctly created.
    #> ╔══════════════════════════════════════════════════════════════════════ #> ║ sen2r Processing Report -#> ╟──────────────────────────────────────────────────────────────────────
    #> ║ Dates to be processed based on processing parameters: 2
    #> ║ Processing completed for: all expected dates.
    #> ╚══════════════════════════════════════════════════════════════════════
    #> [2021-04-13 10:53:45] #### sen2r session terminated. ####
    #> The processing chain can be re-launched with the command: -#>   sen2r("/home/lranghetti/.sen2r/proc_par/s2proc_20210413_105251.json")
    +#> ╟──────────────────────────────────────────────────────────────────────
    #> ║ Dates to be processed based on processing parameters: 2
    #> ║ Processing completed for: all expected dates.
    #> ╚══════════════════════════════════════════════════════════════════════
    #> [2021-05-04 14:37:33] #### sen2r session terminated. ####
    #> The processing chain can be re-launched with the command: +#>   sen2r("/home/lranghetti/.sen2r/proc_par/s2proc_20210504_143634.json")
    # Show outputs (loading thumbnails) diff --git a/docs/reference/sen2r_getElements.html b/docs/reference/sen2r_getElements.html index 88cea0cd..67543bc7 100644 --- a/docs/reference/sen2r_getElements.html +++ b/docs/reference/sen2r_getElements.html @@ -74,7 +74,7 @@ sen2r - 1.4.2 + 1.4.3
    diff --git a/docs/reference/sen2r_process_report.html b/docs/reference/sen2r_process_report.html index 7aa71a51..2f96726b 100644 --- a/docs/reference/sen2r_process_report.html +++ b/docs/reference/sen2r_process_report.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/smooth_mask.html b/docs/reference/smooth_mask.html index 511f3130..09e5645c 100644 --- a/docs/reference/smooth_mask.html +++ b/docs/reference/smooth_mask.html @@ -75,7 +75,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/st_as_text_2.html b/docs/reference/st_as_text_2.html index d80a217f..32eeb61c 100644 --- a/docs/reference/st_as_text_2.html +++ b/docs/reference/st_as_text_2.html @@ -78,7 +78,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/st_crs2.html b/docs/reference/st_crs2.html index 7cd52b4f..4c82b335 100644 --- a/docs/reference/st_crs2.html +++ b/docs/reference/st_crs2.html @@ -75,7 +75,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/stack2rgb.html b/docs/reference/stack2rgb.html index 36c1fcba..ce23c2a0 100644 --- a/docs/reference/stack2rgb.html +++ b/docs/reference/stack2rgb.html @@ -74,7 +74,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/str_pad2.html b/docs/reference/str_pad2.html index 66ad1182..a269703d 100644 --- a/docs/reference/str_pad2.html +++ b/docs/reference/str_pad2.html @@ -76,7 +76,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/suppress_warnings.html b/docs/reference/suppress_warnings.html index 08902ee2..72495d8d 100644 --- a/docs/reference/suppress_warnings.html +++ b/docs/reference/suppress_warnings.html @@ -72,7 +72,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/tile_utmzone.html b/docs/reference/tile_utmzone.html index ef34e0ad..1bb2c298 100644 --- a/docs/reference/tile_utmzone.html +++ b/docs/reference/tile_utmzone.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3 diff --git a/docs/reference/tiles_intersects.html b/docs/reference/tiles_intersects.html index 9486d257..1724cbd2 100644 --- a/docs/reference/tiles_intersects.html +++ b/docs/reference/tiles_intersects.html @@ -73,7 +73,7 @@ sen2r - 1.4.2 + 1.4.3 @@ -225,6 +225,7 @@

    Examp # Tile ID of all the overlapping S2 tiles tiles_intersects(ex_extent, all = TRUE)
    #> [1] "32TNR" "32TNS"
    +# \donttest{ # Spatial object with the required tile sel_tiles <- tiles_intersects(ex_extent, out_format = "sf") plot(sf::st_geometry(sel_tiles)); plot(sf::st_geometry(ex_extent), add=TRUE, col="yellow") @@ -232,7 +233,8 @@

    Examp # Spatial object with the overlapping S2 tiles sel_tiles <- tiles_intersects(ex_extent, all = TRUE, out_format = "sf") plot(sf::st_geometry(sel_tiles)); plot(sf::st_geometry(ex_extent), add=TRUE, col="yellow") -

    +
    # } +
    diff --git a/index.Rmd b/index.Rmd index f30951fd..06d082db 100644 --- a/index.Rmd +++ b/index.Rmd @@ -1,8 +1,7 @@ --- output: github_document: - toc: yes - toc_depth: 2 + toc: no fig_caption: no --- @@ -20,7 +19,7 @@ knitr::opts_chunk$set( [![CRAN Status](https://www.r-pkg.org/badges/version-ago/sen2r)](https://cran.r-project.org/package=sen2r) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1240384.svg)](https://doi.org/10.5281/zenodo.1240384) [![CRAN RStudio mirror downloads](https://cranlogs.r-pkg.org/badges/last-month/sen2r?color=green)](https://cran.rstudio.com/web/packages/ggplot2/index.html) -[![R-CMD-check](https://github.com/ranghetti/sen2r/workflows/R-CMD-check/badge.svg)](https://github.com/ranghetti/sen2r/actions) +[![R-CMD-check](https://github.com/ranghetti/sen2r/workflows/R-CMD-check/badge.svg)](https://github.com/ranghetti/sen2r/actions/workflows/R-CMD-check.yaml) [![Coverage Status](http://img.shields.io/codecov/c/github/ranghetti/sen2r/master.svg)](http://codecov.io/github/ranghetti/sen2r?branch=master) [![Docker Automated build](https://img.shields.io/docker/automated/ranghetti/sen2r.svg)](https://hub.docker.com/r/ranghetti/sen2r) [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](http://www.gnu.org/licenses/gpl-3.0) diff --git a/index.md b/index.md index d199176e..879c4a8a 100644 --- a/index.md +++ b/index.md @@ -1,11 +1,4 @@ - - [sen2r: Find, Download and Process Sentinel-2 - Data](#sen2r-find-download-and-process-sentinel-2-data) - - [Installation](#installation) - - [Usage](#usage) - - [Credits](#credits) - - [Contributing](#contributing) - @@ -15,7 +8,7 @@ Status](https://www.r-pkg.org/badges/version-ago/sen2r)](https://cran.r-project. [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1240384.svg)](https://doi.org/10.5281/zenodo.1240384) [![CRAN RStudio mirror downloads](https://cranlogs.r-pkg.org/badges/last-month/sen2r?color=green)](https://cran.rstudio.com/web/packages/ggplot2/index.html) -[![R-CMD-check](https://github.com/ranghetti/sen2r/workflows/R-CMD-check/badge.svg)](https://github.com/ranghetti/sen2r/actions) +[![R-CMD-check](https://github.com/ranghetti/sen2r/workflows/R-CMD-check/badge.svg)](https://github.com/ranghetti/sen2r/actions/workflows/R-CMD-check.yaml) [![Coverage Status](http://img.shields.io/codecov/c/github/ranghetti/sen2r/master.svg)](http://codecov.io/github/ranghetti/sen2r?branch=master) [![Docker Automated diff --git a/man/abs2rel.Rd b/man/abs2rel.Rd index 7e3bb64c..a8c73a57 100644 --- a/man/abs2rel.Rd +++ b/man/abs2rel.Rd @@ -34,15 +34,15 @@ License: GPL 3.0 } \examples{ # the reference path -(ref_path <- system.file(package="sen2r")) +(ref_path <- system.file(package="sf")) # a path with a common parent with ref_path -(in_path_1 <- system.file(package="gdalUtils")) +(in_path_1 <- system.file(package="rgdal")) # a path included in ref_path -(in_path_2 <- system.file("R/abs2rel.R", package="sen2r")) +(in_path_2 <- system.file("DESCRIPTION", package="sf")) # a path external to ref_path (in Linux) (in_path_3 <- system.file(package="base")) # an unexisting path -(in_path_4 <- gsub("sen2r","r2sen",ref_path)) +(in_path_4 <- gsub("sf$","unexistingpackage",ref_path)) abs2rel(in_path_1, ref_path)