I loaded a shapefile in R, and cropped and masked it with the same mask, but I get different extents. Any suggestions?
Code below:
library(raster)
library(rgdal)
library(GISTools)
library(sp)
library(maptools)
##Loading the first mask
Mask <- readOGR("C:\\Users\\rameshv\\Downloads\\Climate Stability\\SPV_Mask\\mask.shp")
proj4string(Mask) <- CRS("+init=epsg:4326")
#Loading the Rasters For Present and LGM and clipping them to the right extent
bio5 <- raster("C:\\Users\\rameshv\\Downloads\\Climate Stability\\Data_LGM_Present\\Present\\1_RawData\\bio_5")
proj4string(bio5) <- CRS("+init=epsg:4326")
lg5 <- raster("C:\\Users\\rameshv\\Downloads\\Climate Stability\\Data_LGM_Present\\LGM\\1_RawData\\cclgmbi5.tif")
proj4string(lg5) <- CRS("+init=epsg:4326")
##Cropping by using the Crop and Mask functions
cr<- crop(bio5, extent(Mask))
bio5 <- mask(cr, Mask)
cr2<- crop(lg5, extent(Mask))
lg5<- mask(cr2, Mask)
> bio5
class : RasterLayer
dimensions : 339, 246, 83394 (nrow, ncol, ncell)
resolution : 0.04166667, 0.04166667 (x, y)
extent : 72.45835, 82.70835, 8.083337, 22.20834 (xmin, xmax, ymin, ymax)
coord. ref. : +init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
data source : in memory
names : bio_5
values : 207, 432 (min, max)
attributes :
ID COUNT
from: -86 1
to : 489 38
> lg5
class : RasterLayer
dimensions : 339, 246, 83394 (nrow, ncol, ncell)
resolution : 0.04166667, 0.04166667 (x, y)
extent : 72.45833, 82.70833, 8.083333, 22.20833 (xmin, xmax, ymin, ymax)
coord. ref. : +init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
data source : in memory
names : cclgmbi5
values : 187, 392 (min, max)
EDIT
Following a projection, I am able to align extents of the rasters, however, if I coerce them to a vector, I am getting differences in number of elements. Any thoughts?
new.lg5 <- projectRaster(lg5,bio5)
x <- as(bio5,"SpatialPixelsDataFrame")
y <- as(new.lg5, "SpatialPixelsDataFrame")
> str(x)
Formal class 'SpatialPixelsDataFrame' [package "sp"] with 7 slots
..@ data :'data.frame': 54202 obs. of 1 variable:
> str(y)
Formal class 'SpatialPixelsDataFrame' [package "sp"] with 7 slots
..@ data :'data.frame': 54747 obs. of 1 variable:
Best Answer
You could try this:
This will use the projection of one of your layers and applies it to the others, but it also sets the extent of a raster file.