For gridded spatial data (dimensions x and y), see figure; the existing grid is transformed into a regular grid defined by dest, possibly in a new coordinate reference system. If dest is not specified, but crs is, the procedure used to choose a target grid is similar to that of projectRaster . This entails: (i) the envelope (bounding box polygon) is transformed into the new crs, possibly after segmentation (red box); (ii) a grid is formed in this new crs, touching the transformed envelope on its East and North side, with (if cellsize is not given) a cellsize similar to the cell size of src, with an extent that at least covers x; (iii) for each cell center of this new grid, the matching grid cell of x is used; if there is no match, an NA value is used.
Examples
geomatrix = system.file("tif/geomatrix.tif", package ="stars")(x = read_stars(geomatrix))new_crs = st_crs('OGC:CRS84')y = st_warp(x, crs = new_crs)plot(st_transform(st_as_sfc(st_bbox(x)), new_crs), col =NA, border ='red')plot(st_as_sfc(y, as_points=FALSE), col =NA, border ='green', axes =TRUE, add =TRUE)image(y, add =TRUE, nbreaks =6)plot(st_as_sfc(y, as_points=TRUE), pch=3, cex=.5, col ='blue', add =TRUE)plot(st_transform(st_as_sfc(x, as_points=FALSE), new_crs), add =TRUE)# warp 0-360 raster to -180-180 raster:r = read_stars(system.file("nc/reduced.nc", package ="stars"))r %>% st_set_crs('OGC:CRS84')%>% st_warp(st_as_stars(st_bbox(), dx =2))-> s
plot(r, axes =TRUE)# no CRS set, so no degree symbols in labelsplot(s, axes =TRUE)# downsample raster (90 to 270 m)r = read_stars(system.file("tif/olinda_dem_utm25s.tif", package ="stars"))r270 = st_as_stars(st_bbox(r), dx =270)r270 = st_warp(r, r270)