Provides a target format for terra::SpatRasterDataset objects,
which hold sub-datasets, each a SpatRaster that can have multiple layers.
Usage
tar_terra_sds(
  name,
  command,
  pattern = NULL,
  filetype = geotargets_option_get("gdal.raster.driver"),
  gdal = geotargets_option_get("gdal.raster.creation.options"),
  ...,
  tidy_eval = targets::tar_option_get("tidy_eval"),
  packages = targets::tar_option_get("packages"),
  library = targets::tar_option_get("library"),
  repository = targets::tar_option_get("repository"),
  error = targets::tar_option_get("error"),
  memory = targets::tar_option_get("memory"),
  garbage_collection = targets::tar_option_get("garbage_collection"),
  deployment = targets::tar_option_get("deployment"),
  priority = targets::tar_option_get("priority"),
  resources = targets::tar_option_get("resources"),
  storage = targets::tar_option_get("storage"),
  retrieval = targets::tar_option_get("retrieval"),
  cue = targets::tar_option_get("cue"),
  description = targets::tar_option_get("description")
)Arguments
- name
- Symbol, name of the target. A target name must be a valid name for a symbol in R, and it must not start with a dot. See - targets::tar_target()for more information.
- command
- R code to run the target. 
- pattern
- Code to define a dynamic branching pattern for a target. See - targets::tar_target()for more information.
- filetype
- character. File format expressed as GDAL driver names passed to - terra::writeRaster().
- gdal
- character. GDAL driver specific datasource creation options. passed to - terra::writeRaster()
- ...
- Additional arguments not yet used. 
- tidy_eval
- Logical, whether to enable tidy evaluation when interpreting - commandand- pattern. If- TRUE, you can use the "bang-bang" operator- !!to programmatically insert the values of global objects.
- packages
- Character vector of packages to load right before the target runs or the output data is reloaded for downstream targets. Use - tar_option_set()to set packages globally for all subsequent targets you define.
- library
- Character vector of library paths to try when loading - packages.
- repository
- Character of length 1, remote repository for target storage. Choices: - "local": file system of the local machine.
- "aws": Amazon Web Services (AWS) S3 bucket. Can be configured with a non-AWS S3 bucket using the- endpointargument of- tar_resources_aws(), but versioning capabilities may be lost in doing so. See the cloud storage section of https://books.ropensci.org/targets/data.html for details for instructions.
- "gcp": Google Cloud Platform storage bucket. See the cloud storage section of https://books.ropensci.org/targets/data.html for details for instructions.
- A character string from - tar_repository_cas()for content-addressable storage.
 - Note: if - repositoryis not- "local"and- formatis- "file"then the target should create a single output file. That output file is uploaded to the cloud and tracked for changes where it exists in the cloud. The local file is deleted after the target runs.
- error
- Character of length 1, what to do if the target stops and throws an error. Options: - "stop": the whole pipeline stops and throws an error.
- "continue": the whole pipeline keeps going.
- "null": The errored target continues and returns- NULL. The data hash is deliberately wrong so the target is not up to date for the next run of the pipeline. In addition, as of version 1.8.0.9011, a value of- NULLis given to upstream dependencies with- error = "null"if loading fails.
- "abridge": any currently running targets keep running, but no new targets launch after that.
- "trim": all currently running targets stay running. A queued target is allowed to start if:- It is not downstream of the error, and 
- It is not a sibling branch from the same - tar_target()call (if the error happened in a dynamic branch).
 - The idea is to avoid starting any new work that the immediate error impacts. - error = "trim"is just like- error = "abridge", but it allows potentially healthy regions of the dependency graph to begin running. (Visit https://books.ropensci.org/targets/debugging.html to learn how to debug targets using saved workspaces.)
 
- memory
- Character of length 1, memory strategy. Possible values: - "auto": new in- targetsversion 1.8.0.9011,- memory = "auto"is equivalent to- memory = "transient"for dynamic branching (a non-null- patternargument) and- memory = "persistent"for targets that do not use dynamic branching.
- "persistent": the target stays in memory until the end of the pipeline (unless- storageis- "worker", in which case- targetsunloads the value from memory right after storing it in order to avoid sending copious data over a network).
- "transient": the target gets unloaded after every new target completes. Either way, the target gets automatically loaded into memory whenever another target needs the value.
 - For cloud-based dynamic files (e.g. - format = "file"with- repository = "aws"), the- memoryoption applies to the temporary local copy of the file:- "persistent"means it remains until the end of the pipeline and is then deleted, and- "transient"means it gets deleted as soon as possible. The former conserves bandwidth, and the latter conserves local storage.
- garbage_collection
- Logical: - TRUEto run- base::gc()just before the target runs,- FALSEto omit garbage collection. In the case of high-performance computing,- gc()runs both locally and on the parallel worker. All this garbage collection is skipped if the actual target is skipped in the pipeline. Non-logical values of- garbage_collectionare converted to- TRUEor- FALSEusing- isTRUE(). In other words, non-logical values are converted- FALSE. For example,- garbage_collection = 2is equivalent to- garbage_collection = FALSE.
- deployment
- Character of length 1. If - deploymentis- "main", then the target will run on the central controlling R process. Otherwise, if- deploymentis- "worker"and you set up the pipeline with distributed/parallel computing, then the target runs on a parallel worker. For more on distributed/parallel computing in- targets, please visit https://books.ropensci.org/targets/crew.html.
- priority
- Numeric of length 1 between 0 and 1. Controls which targets get deployed first when multiple competing targets are ready simultaneously. Targets with priorities closer to 1 get dispatched earlier (and polled earlier in - tar_make_future()).
- resources
- Object returned by - tar_resources()with optional settings for high-performance computing functionality, alternative data storage formats, and other optional capabilities of- targets. See- tar_resources()for details.
- storage
- Character string to control when the output of the target is saved to storage. Only relevant when using - targetswith parallel workers (https://books.ropensci.org/targets/crew.html). Must be one of the following values:- "main": the target's return value is sent back to the host machine and saved/uploaded locally.
- "worker": the worker saves/uploads the value.
- "none":- targetsmakes no attempt to save the result of the target to storage in the location where- targetsexpects it to be. Saving to storage is the responsibility of the user. Use with caution.
 
- retrieval
- Character string to control when the current target loads its dependencies into memory before running. (Here, a "dependency" is another target upstream that the current one depends on.) Only relevant when using - targetswith parallel workers (https://books.ropensci.org/targets/crew.html). Must be one of the following values:- "main": the target's dependencies are loaded on the host machine and sent to the worker before the target runs.
- "worker": the worker loads the target's dependencies.
- "none":- targetsmakes no attempt to load its dependencies. With- retrieval = "none", loading dependencies is the responsibility of the user. Use with caution.
 
- cue
- An optional object from - tar_cue()to customize the rules that decide whether the target is up to date.
- description
- Character of length 1, a custom free-form human-readable text description of the target. Descriptions appear as target labels in functions like - tar_manifest()and- tar_visnetwork(), and they let you select subsets of targets for the- namesargument of functions like- tar_make(). For example,- tar_manifest(names = tar_described_as(starts_with("survival model")))lists all the targets whose descriptions start with the character string- "survival model".
Details
The terra package uses objects like terra::SpatRaster,
terra::SpatVector, and terra::SpatRasterDataset (SDS), which do
not contain the data directly–they contain a C++ pointer to memory where
the data is stored.  As a result, these objects are not portable between
R sessions without special handling, which causes problems when including
them in targets pipelines with targets::tar_target(). The functions,
tar_terra_rast(), tar_terra_sds(), tar_terra_sprc(),
tar_terra_tiles(), and tar_terra_vect() handle this issue by writing and
reading the target as a geospatial file (specified by filetype) rather
than saving the relevant object (e.g., SpatRaster, SpatVector, etc.),
itself.
Note
The iteration argument is unavailable because it is hard-coded to
"list", the only option that works currently.
Examples
# For CRAN. Ensures these examples run under certain conditions.
# To run this locally, run the code inside this if statement
if (Sys.getenv("TAR_LONG_EXAMPLES") == "true") {
  targets::tar_dir({ # tar_dir() runs code from a temporary directory.
    targets::tar_script({
      library(geotargets)
      elev_scale <- function(z = 1) {
        terra::rast(system.file("ex", "elev.tif", package = "terra")) * z
      }
      list(
        tar_terra_sds(
          raster_elevs,
          # two rasters, one unaltered, one scaled by factor of 2
          command = terra::sds(list(
            elev_scale(1),
            elev_scale(2)
          ))
        )
      )
    })
    targets::tar_make()
    targets::tar_read(raster_elevs)
  })
}
