A simple wrapper around the various different tools for these GIS types.

projectInputs(
  x,
  targetCRS,
  verbose = getOption("reproducible.verbose", 1),
  ...
)

# S3 method for default
projectInputs(x, targetCRS, ...)

# S3 method for Raster
projectInputs(
  x,
  targetCRS = NULL,
  verbose = getOption("reproducible.verbose", 1),
  rasterToMatch = NULL,
  cores = NULL,
  useGDAL = getOption("reproducible.useGDAL", FALSE),
  ...
)

# S3 method for SpatVector
projectInputs(
  x,
  targetCRS,
  verbose = getOption("reproducible.verbose", 1),
  ...
)

# S3 method for SpatRaster
projectInputs(
  x,
  targetCRS = NULL,
  verbose = getOption("reproducible.verbose", 1),
  rasterToMatch = NULL,
  cores = NULL,
  useGDAL = getOption("reproducible.useGDAL", FALSE),
  ...
)

# S3 method for sf
projectInputs(
  x,
  targetCRS,
  verbose = getOption("reproducible.verbose", 1),
  ...
)

# S3 method for Spatial
projectInputs(
  x,
  targetCRS,
  verbose = getOption("reproducible.verbose", 1),
  ...
)

Arguments

x

A Raster*, Spatial* or sf object

targetCRS

The CRS of x at the end of this function (i.e., the goal)

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

...

Passed to raster::projectRaster().

rasterToMatch

Template Raster* object passed to the to argument of raster::projectRaster(), thus will changing the resolution and projection of x. See details in postProcess().

cores

An integer* or 'AUTO'. This will be used if gdalwarp is triggered. 'AUTO'* will calculate 90% of the total number of cores in the system, while an integer or rounded float will be passed as the exact number of cores to be used.

useGDAL

Logical or "force". This is defunct; internals now can use terra if options("reproducible.useTerra" = TRUE), which is not (yet) the default.

Value

A file of the same type as starting, but with projection (and possibly other characteristics, including resolution, origin, extent if changed).

A GIS file (e.g., RasterLayer, SpatRaster etc.) that has been appropriately reprojected.

See also

Examples

library(sp)
library(raster)

# make a SpatialPolygon
coords1 <- structure(c(-123.98, -117.1, -80.2, -100, -123.98, 60.9, 67.73, 65.58, 51.79, 60.9),
                       .Dim = c(5L, 2L))
Sr1 <- Polygon(coords1)
Srs1 <- Polygons(list(Sr1), "s1")
shpEcozone <- SpatialPolygons(list(Srs1), 1L)
crs(shpEcozone) <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"

# make a "study area" that is subset of larger dataset
coords <- structure(c(-118.98, -116.1, -99.2, -106, -118.98, 59.9, 65.73, 63.58, 54.79, 59.9),
                      .Dim = c(5L, 2L))
Sr1 <- Polygon(coords)
Srs1 <- Polygons(list(Sr1), "s1")
StudyArea <- SpatialPolygons(list(Srs1), 1L)
crs(StudyArea) <- crs(shpEcozone)
projString <- "+proj=utm +zone=15 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"
StudyArea <- sp::spTransform(StudyArea, CRSobj = projString)
projectInputs(shpEcozone, StudyArea)
#>     reprojecting ...
#> class       : SpatialPolygons 
#> features    : 1 
#> extent      : -1134887, 1087234, 5760893, 7710639  (xmin, xmax, ymin, ymax)
#> crs         : +proj=utm +zone=15 +datum=NAD83 +units=m +no_defs