ropensci / software-review

rOpenSci Software Peer Review.
295 stars 104 forks source link

rsi: Efficiently Retrieve and Process Satellite Imagery #636

Closed mikemahoney218 closed 2 months ago

mikemahoney218 commented 8 months ago

Date accepted: 2024-10-01 Submitting Author Name: Mike Mahoney Submitting Author Github Handle: !--author1-->@mikemahoney218<!--end-author1-- Repository: https://github.com/Permian-Global-Research/rsi/ Version submitted: Submission type: Standard Editor: !--editor-->@jhollist<!--end-editor-- Reviewers: @mdsumner, @OldLipe

Archive: TBD Version accepted: TBD Language: en


Package: rsi
Title: Efficiently Retrieve and Process Satellite Imagery
Version: 0.2.0.9000
Authors@R: c(
    person("Michael", "Mahoney", , "mike.mahoney.218@gmail.com", role = c("aut", "cre"),
           comment = c(ORCID = "0000-0003-2402-304X")),
    person("Permian Global", role = c("cph", "fnd"))
  )
Description: Downloads spatial data from spatiotemporal asset catalogs 
    ('STAC'), computes standard spectral indices from the Awesome Spectral 
    Indices project (Montero et al. (2023) <doi:10.1038/s41597-023-02096-0>) 
    against raster data, and glues the outputs together into predictor bricks. 
    Methods focus on interoperability with the broader spatial ecosystem; 
    function arguments and outputs use classes from 'sf' and 'terra', and data 
    downloading functions support complex 'CQL2' queries using 'rstac'.
License: Apache License (>= 2)
Depends: 
    R (>= 4.0)
Imports: 
    future.apply,
    glue,
    httr,
    jsonlite,
    lifecycle,
    proceduralnames,
    rlang,
    rstac,
    sf,
    terra,
    tibble
Suggests: 
    curl,
    knitr,
    progressr,
    rmarkdown,
    testthat (>= 3.0.0),
    withr
Config/testthat/edition: 3
Config/testthat/parallel: true
Encoding: UTF-8
LazyData: true
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.3.0
URL: https://github.com/Permian-Global-Research/rsi, https://permian-global-research.github.io/rsi/
BugReports: https://github.com/Permian-Global-Research/rsi/issues
VignetteBuilder: knitr

Scope

This package supports (spatial) data retrieval from APIs implementing the OGC STAC API standard, processing the downloaded data (including automated masking, compositing and rescaling) computing spectral indices from those data, and wrangling the outputs into formats useful for modeling and visualization.

Anyone with a need to download and process spatial data, particularly remote sensing data, particularly satellite-based earth observation rasters. We've used rsi to automate the entire data preparation process of forest carbon and structure models (not yet published), but the package is broadly useful to anyone working in Earth surface modeling.

Yes:

A core difference between rsi and these packages is that rsi does not have a data model: rsi is focused entirely on finding the bits of data you want from remote endpoints, and getting those bits on your local machine for you to process with your normal spatial data tooling. There are no new classes in rsi (other than the band mapping objects), and the outputs of functions are local rasters. This is an approach that fits better in my head than the more abstract delayed computations in some other packages; at the same time, it’s possible that this approach can be less efficient, downloading more data at finer resolutions than is actually needed for a given task.

There are a few minor things that I think rsi does better than other approaches (we sign items right before each one is downloaded, for instance, whereas some other packages sign items before starting to download the entire set, meaning the signature can expire causing large downloads to fail), but this difference I think is mostly a matter of taste. I'm very familiar with local GDAL, terra, and sf, and so rsi tries to get users back to working with local GDAL, terra, and sf as fast as possible.

NA

NA

~I have never successfully gotten the CI item to be a check, and I have no idea why. I'm using the standard usethis functions to structure my CI, for what it's worth!~ Apparently this is a local-only issue.

I addressed failing covr in https://github.com/ropensci/software-review/issues/636#issuecomment-2028086514

Technical checks

Confirm each of the following by checking the box.

This package:

Publication options

MEE Options - [ ] The package is novel and will be of interest to the broad readership of the journal. - [ ] The manuscript describing the package is no longer than 3000 words. - [ ] You intend to archive the code for the package in a long-term repository which meets the requirements of the journal (see [MEE's Policy on Publishing Code](http://besjournals.onlinelibrary.wiley.com/hub/journal/10.1111/(ISSN)2041-210X/journal-resources/policy-on-publishing-code.html)) - (*Scope: Do consider MEE's [Aims and Scope](http://besjournals.onlinelibrary.wiley.com/hub/journal/10.1111/(ISSN)2041-210X/aims-and-scope/read-full-aims-and-scope.html) for your manuscript. We make no guarantee that your manuscript will be within MEE scope.*) - (*Although not required, we strongly recommend having a full manuscript prepared when you submit here.*) - (*Please do not submit your package separately to Methods in Ecology and Evolution*)

Code of conduct

ropensci-review-bot commented 2 months ago

Logged review for mdsumner (hours: 7)

jhollist commented 2 months ago

@ropensci-review-bot submit review https://github.com/ropensci/software-review/issues/636#issuecomment-2218720373 time 5

ropensci-review-bot commented 2 months ago

Logged review for OldLipe (hours: 5)

jhollist commented 2 months ago

@OldLipe thanks for the email. I am recording your response and acceptance of @mikemahoney218 revisions here. No need for you to do it as well.

And I think we are all set to go. Thank you all for your efforts on this! Will work on moving this along later this AM.

jhollist commented 2 months ago

@ropensci-review-bot approve rsi

ropensci-review-bot commented 2 months ago

Approved! Thanks @mikemahoney218 for submitting and @mdsumner, @OldLipe for your reviews! :grin:

To-dos:

Should you want to acknowledge your reviewers in your package DESCRIPTION, you can do so by making them "rev"-type contributors in the Authors@R field (with their consent).

Welcome aboard! We'd love to host a post about your package - either a short introduction to it with an example for a technical audience or a longer post with some narrative about its development or something you learned, and an example of its use for a broader readership. If you are interested, consult the blog guide, and tag @ropensci/blog-editors in your reply. They will get in touch about timing and can answer any questions.

We maintain an online book with our best practice and tips, this chapter starts the 3d section that's about guidance for after onboarding (with advice on releases, package marketing, GitHub grooming); the guide also feature CRAN gotchas. Please tell us what could be improved.

Last but not least, you can volunteer as a reviewer via filling a short form.

mikemahoney218 commented 2 months ago

Thank you so much @jhollist , @mdsumner , and @OldLipe ! This was a fantastic process (as usual with rOpenSci!).

@jhollist -- I mentioned at the start of the review, but I'm not able to transfer this repo to the rOpenSci namespace. I'm not sure which boxes on the checklist still apply -- and I've got the faintest memory that the package needs to get added to a registry somewhere, but I forget where that is. Does this make sense?

maelle commented 1 month ago

:wave: here! https://github.com/ropensci/roregistry/commit/e5d2c0271fd2e66b7d0b42b098b6ac9995992238 should be it but I'll be checking the package and registry building to be sure. :smile_cat:

mpadge commented 1 month ago

Registry now updated as expected. All good!

maelle commented 1 month ago

https://docs.ropensci.org/rsi/ :tada:

jhollist commented 1 month ago

@mpadge and @maelle Is there anything special that @mikemahoney218 needs to do for this since he won't be transferring the package to the rOpenSci org? Looks like things have moved along fine without that.