Title: | Interface to 'AppEEARS' NASA Web Services |
Version: | 1.1 |
Description: | Programmatic interface to the NASA Application for Extracting and Exploring Analysis Ready Samples services (AppEEARS; https://appeears.earthdatacloud.nasa.gov/). The package provides easy access to analysis ready earth observation data in R. |
URL: | https://github.com/bluegreen-labs/appeears |
BugReports: | https://github.com/bluegreen-labs/appeears/issues |
Depends: | R (≥ 4.0) |
Imports: | httr, keyring, memoise, getPass, R6, sf, jsonlite, geojsonio, rstudioapi |
License: | AGPL-3 |
ByteCompile: | true |
RoxygenNote: | 7.2.3 |
Suggests: | rmarkdown, covr, testthat, terra, ncdf4, knitr, rlang, dplyr, ggplot2, patchwork |
VignetteBuilder: | knitr |
NeedsCompilation: | no |
Packaged: | 2023-09-15 14:47:34 UTC; khufkens |
Author: | Koen Hufkens |
Maintainer: | Koen Hufkens <koen.hufkens@gmail.com> |
Repository: | CRAN |
Date/Publication: | 2023-09-15 15:02:06 UTC |
Build a task request
Description
Builds a valid JSON formatted API request from either a tidy data frame with point based sub-tasks, or when a region of interest (roi) is specified coordinates (latitude/longitude) will be ignored and a bounding box for an sf or SpatRaster object will be used instead.
Usage
rs_build_task(df, roi, format = "geotiff")
Arguments
df |
a data frame with task name (task), subtask name (subtask), latitude, longitude, start (start) and end (end) date. |
roi |
a region of interest defined by a SpatRaster or sf object, the roi will override any point based data provided as latittude-longitude coordinates in the data frame |
format |
file format of the downloaded data either geotiff (the default) or netcdf4 |
Value
a valid AppEEARS JSON formatted task
Examples
# define a task as a tidy data frame
# multiple subtasks can be provided
df <- data.frame(
task = "task_name",
subtask = c("sub_task"),
latitude = c(36.206228),
longitude = c(-112.127134),
start = c("2018-01-01"),
end = c("2018-01-15"),
product = c("MCD12Q2.006"),
layer = c("Greenup")
)
# build a task
rs_build_task(df)
AppEEARS list of bundled files to download
Description
Returns a data frame of all data ready for download as one bundle
Usage
rs_bundle(task_id, user)
Arguments
task_id |
task id for which to return the file download bundle |
user |
username used to sign up |
Value
returns a nested list of files to download
Author(s)
Koen Hufkens
Examples
## Not run:
# get a list of datasets
rs_bundle(
user = "your_user_name",
task_id = "a_task_id"
)
## End(Not run)
Delete AppEEARS task from queue
Description
Removes a task from the queue and or buffer
Usage
rs_delete(task_id, user, purge = FALSE)
Arguments
task_id |
AppEEARS task id |
user |
username used to sign up |
purge |
if TRUE, remove all previously finished tasks from the task list (default = FALSE) |
Value
returns the content of the API call
Author(s)
Koen Hufkens
Examples
## Not run:
# delete a single task
rs_delete(
user = "your_user_name",
task_id = "a_task_id"
)
# delete all finished or crashed
# jobs (if not deleted previously)
rs_delete(
user = "your_user_name",
purge = TRUE
)
## End(Not run)
Retrieve NASA Earth Data password
Description
Returns you token set by rs_set_key
Usage
rs_get_key(user)
Arguments
user |
username used to sign up |
Value
the password set using rs_set_key
saved
in the keychain
Author(s)
Koen Hufkens
See Also
Examples
## Not run:
# set key
rs_set_key(user = "test@mail.com", password = "123")
# get key
rs_get_key(user = "test@mail.com")
## End(Not run)
AppEEARS dataset layers
Description
Returns a data frame of available layers for an AppEEARS product
Usage
rs_layers(product)
Arguments
product |
product for which to list the layers |
Value
returns a data frame with the AppEEARS datasets
Author(s)
Koen Hufkens
See Also
Examples
# is the server reachable
server_check <- appeears:::rs_running(
file.path(appeears:::rs_server(),"product")
)
# get a list of datasets
if(server_check){
layers <- rs_layers("MCD43A4.006")
print(layers$Layer)
}
AppEEARS list of tasks and status
Description
Returns a data frame of all submitted tasks either in full of when providing the di
Usage
rs_list_task(task_id, user)
Arguments
task_id |
task for which to list the status (if missing all tasks are listed) |
user |
username used to sign up |
Value
returns a data frame with the AppEEARS tasks
Author(s)
Koen Hufkens
Examples
## Not run:
# get a list of datasets
rs_list_task()
## End(Not run)
Checks AppEEARS login
Description
Returns a valid token for a session if successful otherwise fails with an error (stop())
Usage
rs_login(user)
Arguments
user |
AppEEARS username |
Value
returns an AppEEARS session (bearer) token
Invalidates an AppEEARS bearer token
Description
Given a token it will log out / delete this token, invalidating it.
Usage
rs_logout(token)
Arguments
token |
a Bearer token as returned by rs_login() |
Value
returns if the session has closed TRUE/FALSE
AppEEARS dataset list
Description
Returns a data frame of available data products
Usage
rs_products()
Value
returns a data frame with the AppEEARS datasets
Author(s)
Koen Hufkens
See Also
rs_set_key
rs_transfer
rs_request
Examples
# is the server reachable
server_check <- appeears:::rs_running(
file.path(appeears:::rs_server(),"product")
)
# get a list of datasets
if(server_check){
products <- rs_products()
}
List or translate AppEEARS quality metrics
Description
Returns a data frame of all quality layers, or the translation of a quality layer value into plain language.
Usage
rs_quality(product, layer, value)
Arguments
product |
AppEEARS product name |
layer |
name of a product quality control layer |
value |
quality control value to translate |
Value
returns a data frame of all AppEEARS quality layers, or those associated with a product. When a value is provided this quality flag will be translated from bitwise representation to plain language.
Author(s)
Koen Hufkens
Examples
## Not run:
# get a list of quality layers for all data products
rs_quality()
## End(Not run)
AppEEARS data request and download
Description
Stage a data request, and optionally download the data to disk. Alternatively
you can only stage requests, logging the request URLs to submit download
queries later on using rs_transfer
.
Usage
rs_request(
request,
user,
transfer = TRUE,
path = tempdir(),
time_out = 3600,
job_name,
verbose = TRUE
)
rs_request_batch(
request_list,
workers = 2,
user,
path = tempdir(),
time_out = 7200,
total_timeout = length(request_list) * time_out/workers,
verbose = TRUE
)
Arguments
request |
nested list with query parameters following the layout as specified on the AppEEARS APIs page |
user |
user (email address or ID) provided by the AppEEARS data service,
used to retrieve the token set by |
transfer |
logical, download data TRUE or FALSE (default = TRUE) |
path |
path were to store the downloaded data |
time_out |
individual time out for each request |
job_name |
optional name to use as an RStudio job and as output variable name. It has to be a syntactically valid name. |
verbose |
show feedback on processing |
request_list |
a list of requests that will be processed in parallel. |
workers |
maximum number of simultaneous request that will be submitted to the service. Most services are limited to ~20 concurrent requests (default = 2). |
total_timeout |
overall timeout limit for all the requests in seconds. (note that the overall timeout on a session is 48h) |
Value
the path of the downloaded (requested file) or the an R6 object with download/transfer information
Author(s)
Koen Hufkens
See Also
Examples
## Not run:
# specifiy a task/request as a
# data frame
df <- data.frame(
task = "grand canyon",
subtask = c("test1", "test2"),
latitude = c(36.206228, 36.206228),
longitude = c(-112.127134, -112.127134),
start = c("2018-01-01","2018-01-01"),
end = c("2018-01-15","2018-01-15"),
product = c("MOD11A2.061","MCD12Q2.006"),
layer = c("LST_Day_1km","Dormancy")
)
# build a proper JSON query
task <- rs_build_task(df = df)
# request the task to be executed
rs_request(
request = task,
user = "earth_data_user",
transfer = TRUE,
path = "~/some_path",
verbose = TRUE
)
## End(Not run)
Set NASA Earth Data password
Description
Saves the token to your local keychain under a service called "appeears".
Usage
rs_set_key(user, password)
Arguments
user |
user used to sign up for the AppEEARS data service (this is not the email address, but the true user name!) |
password |
used to sign up for AppEEARS |
Details
In systems without keychain management set the option keyring_backend to 'file' (i.e. options(keyring_backend = "file")) in order to write the keychain entry to an encrypted file. This mostly pertains to headless Linux systems. The keychain files can be found in ~/.config/r-keyring.
Value
It invisibly returns the user.
Author(s)
Koen Hufkens
See Also
Examples
## Not run:
# set key
rs_set_key(user = "test", password = "123")
# get key
rs_get_key(user = "test")
# leave user and key empty to open a browser window to the service's website
# and type the key interactively
rs_get_key()
## End(Not run)
AppEEARS data transfer function
Description
Returns the contents of the requested url as a NetCDF file downloaded to disk or the current status of the requested transfer.
Usage
rs_transfer(task_id, user, path = tempdir(), verbose = TRUE)
Arguments
task_id |
R6 |
user |
user (email address) used to sign up for the AppEEARS data service,
used to retrieve the token set by |
path |
path were to store the downloaded data |
verbose |
show feedback on data transfers |
Value
data on disk as specified by a
rs_request
Author(s)
Koen Hufkens
See Also
Examples
## Not run:
# set key
rs_set_key(user = "test", password = "123")
# request data and grab url and try a transfer
r <- rs_request(request, "test", transfer = FALSE)
# check transfer, will download if available
rs_transfer(r$get_task_id(), user = "test")
## End(Not run)