DEFUNCT: Please use the postProcessTo functions.

gdalResample is a thin wrapper around sf::gdal_utils('gdalwarp', ...) with specific options set, notably, "-r", "near", -te, -te_srs, tr, -dstnodata = NA, -overwrite.

gdalMask is a thin wrapper around sf::gdal_utils('gdalwarp', ...) with specific options set, notably, -cutline, -dstnodata = NA, and -overwrite.

gdalProject(
  fromRas,
  toRas,
  filenameDest,
  verbose = getOption("reproducible.verbose"),
  ...
)

gdalResample(
  fromRas,
  toRas,
  filenameDest,
  verbose = getOption("reproducible.verbose"),
  ...
)

gdalMask(
  fromRas,
  maskToVect,
  writeTo = NULL,
  verbose = getOption("reproducible.verbose"),
  ...
)

Arguments

fromRas

see from argument from postProcessTo(), but can only be a SpatRaster.

toRas

see to argument from postProcessTo(), but can only be a SpatRaster.

filenameDest

A filename with an appropriate extension (e.g., .tif) for gdal to write the output to. Since this function is conceived to be part of a chain, and not the final step, this function does not use writeTo, which is reserved for the final step in the chain.

verbose

Numeric, -1 silent (where possible), 0 being very quiet, 1 showing more messaging, 2 being more messaging, etc. Default is 1. Above 3 will output much more information about the internals of Caching, which may help diagnose Caching challenges. Can set globally with an option, e.g., options('reproducible.verbose' = 0) to reduce to minimal

...

For gdalProject, this can be method. For gdalMask can be destinationPath and touches. For all gdal*, this can also be and datatype.

maskToVect

see maskTo argument from maskTo(), but can only be a SpatVector

writeTo

Optional character string of a filename to use writeRaster to save the final object. Default is NULL, which means there is no writeRaster

Details

gdalProject is a thin wrapper around sf::gdal_utils('gdalwarp', ...) with specific options set, notably, -r to method (in the ...), -t_srs to the crs of the toRas, -te to the extent of the toRas, -te_srs to the crs of the toRas, -dstnodata = NA, and -overwrite.

These three functions were an alternative sequence (gdalProject, gdalResample, gdalMask) for the from + projectTo SpatRaster / maskTo SpatVector case in postProcessTo. The sequence was determined to be faster and more accurate than any other ordering, including running all three steps in one gdalwarp call (one-step gdalwarp resulted in very coarse pixelation when converting from a coarse resolution to fine resolution). They are retained for reference only; the live postProcessTo path no longer dispatches to them.

See also

gdalResample(), and gdalMask() and the overarching postProcessTo()

Examples

if (require("terra", quietly = TRUE)) {
  # prepare dummy data -- 3 SpatRasters, 2 SpatVectors
  # need 2 SpatRaster
  rf <- system.file("ex/elev.tif", package = "terra")
  elev1 <- terra::rast(rf)

  # a polygon vector
  f <- system.file("ex/lux.shp", package = "terra")
  vOrig <- terra::vect(f)
  v <- vOrig[1:2, ]

  # utm <- terra::crs("epsg:23028") # $wkt
  utm <- "+proj=utm +zone=28 +datum=WGS84 +units=m +no_defs"
  vInUTM <- terra::project(vOrig, utm)
  vAsRasInLongLat <- terra::rast(vOrig, resolution = 0.008333333)
  res100 <- 100
  rInUTM <- terra::rast(vInUTM, resolution = res100, vals = 1)
  # crop, reproject, mask, crop a raster with a vector in a different projection
  #  --> gives message about not enough information
  t1 <- postProcessTo(elev1, to = vInUTM)
  # crop, reproject, mask a raster to a different projection, then mask
  t2a <- postProcessTo(elev1, to = vAsRasInLongLat, maskTo = vInUTM)
  t3a <- postProcessTo(elev1, to = rInUTM, maskTo = vInUTM)

}
#> terra 1.9.46
#> Running `postProcessTo`
#> cropping...
#> projecting...
#> 
#> projectTo is a Vector dataset, which does not define all metadata required.
#>  Using the origin and extent from `ext(from)` in the projection from
#>    `crs(projectTo)`.
#>  If this is not correct, create a template gridded object and pass that to
#>    `projectTo`...
#> 
#> done! took:  0.0155 secs
#> masking...
#> done! took:  0.012 secs
#> cropping...
#> done! took:  0.0206 secs
#> postProcessTo done! took:  0.117 secs
#> Running `postProcessTo`
#> cropping...
#> projecting...
#> done! took:  0.0458 secs
#> masking...
#> done! took:  0.012 secs
#> cropping...
#> done! took:  0.0112 secs
#> postProcessTo done! took:  0.132 secs
#> Running `postProcessTo`
#> cropping...
#> projecting...
#> done! took:  0.139 secs
#> masking...
#> done! took:  0.0169 secs
#> cropping...
#> done! took:  0.0216 secs
#> postProcessTo done! took:  0.465 secs