Learn R Programming

terra (version 1.7-83)

rotate: Rotate data along longitude

Description

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)

Value

SpatRaster

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

See Also

shift and spin

Examples

Run this code
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)

Run the code above in your browser using DataLab