Rotate a SpatRaster that has longitude coordinates from 0 to 360, to standard coordinates between -180 and 180 degrees (or vice-versa). Longitude between 0 and 360 is frequently used in global climate models.

Rotate a SpatVector as for a SpatRaster split=TRUE, or to correct for coordinates that are connected across the date line (and end up at the "other side" of the longitude scale) are reconnected.

## Usage

# S4 method for SpatRaster
rotate(x, left=TRUE, filename="", ...)

# S4 method for SpatVector
rotate(x, longitude=0, split=FALSE, left=TRUE, normalize=FALSE)

## Arguments

x

SpatRaster or SpatVector

left

logical. If TRUE, rotate to the left, else to the right

filename

character. Output filename

...

additional arguments for writing files as in writeRaster

longitude

numeric. The longitude around which to rotate

split

logical. Should geometries be split at longitude?

normalize

logical. Should the output be normalized to longitudes between -180 and 180? See normalize.longitude

## Value

SpatRaster

shift and spin

## Examples

x <- rast(nrows=9, ncols=18, nl=3, xmin=0, xmax=360)
v <- rep(as.vector(t(matrix(1:ncell(x), nrow=9, ncol=18))), 3)
values(x) <- v
z <- rotate(x)

if (FALSE) {
#SpatVector
p <- rbind(c(3847903, 1983584 ), c(3847903, 5801864), c(8301883, 5801864), c(8301883, 1983584 ))
p <- vect(p, "polygons", crs="+init=EPSG:3347")
d <- densify(p, 100000)
g <- project(d, "+proj=longlat")

x <- rotate(g, 50)
plot(g)
lines(x, col="red")
}

## rotate countries to 0-360 longitude
#w <- geodata::world(path=".")
#x <- rotate(w, long=0, split=TRUE, left=FALSE)